Saya mencoba membaca sebuah shapefile dan memplotnya menggunakan matplotlib. Ini kodenya:
import matplotlib.pyplot as plt
import shapefile
shpFilePath = "D:\test.shp"
listx=[]
listy=[]
test = shapefile.Reader(shpFilePath)
for sr in test.shapeRecords():
for xNew,yNew in sr.shape.points:
listx.append(xNew)
listy.append(yNew)
plt.plot(listx,listy)
plt.show()
Namun, saya mendapatkan garis yang menghubungkan poligon saya. Bagaimana saya bisa menggambar poligon sedemikian rupa sehingga ada jalan di shapefile. Berikut adalah screenshot dari plot dan shapefile ketika dibuka dengan ArcGIS.
shapefile
matplotlib
statBeginner
sumber
sumber
Jawaban:
Saya akan menyerahkan kepada Anda cara mengumpulkan bentuk tetapi ini adalah prinsipnya
sumber
Untuk referensi di masa mendatang, inilah solusi yang saya gunakan setelah mengikuti saran di atas.
Angka yang dihasilkan akan sangat berwarna, tetapi kemudian, Anda hanya perlu menyesuaikan kata kunci plot.
sumber
import shapefile
merujuk padapyshp
paket: pypi.python.org/pypi/pyshpAnda perlu menggunakan jalur dan tambalan matplotlib dan ada modul Python yang didedikasikan untuk memplot poligon dari shapefile menggunakan fungsi-fungsi ini Descartes .
Karena Pyshp (shapefile) memiliki konvensi geo_interface ( geo_interface baru untuk PyShp ), Anda dapat menggunakannya.
Hasilnya adalah representasi GeoJSON dari geometri dan Anda dapat menggunakan solusi Cara memplot data geo menggunakan matplotlib / python
sumber
descartes
solusinya tidak berfungsi jika Anda mencoba dan memplot dua shapefile berbeda pada dua subplot yang berdekatan menggunakanfig, ax = plt.subplots(1,2,figsize=(15, 8))
dan kemudianax[0].add_patch(PolygonPatch(poly_geo, fc='#d3d3d3', ec='#000000', alpha=0, zorder=5))
danax[1].add_patch(PolygonPatch(poly_geo, fc='#d3d3d3', ec='#000000', alpha=0, zorder=5))
. Hasilnya adalah gambar kosong. Ada ide?Ini dapat dilakukan dengan menggunakan geopanda atau pyshp seperti yang dibahas dalam jawaban ini . Geopanda menggunakan matplotlib di bagian belakangnya untuk merencanakan.
sumber
Selain jawaban ldocao, dan menanggapi pertanyaan FaCoffee. Ketika Anda memiliki pulau-pulau terpencil dan mereka adalah bagian dari fitur yang sama, Anda dapat mencoba berikutnya:
Ini membuatnya bekerja untuk saya. Propertie "bagian" dari suatu bentuk mengembalikan indeks awal geometri differents di dalam fitur.
sumber
Namun, dalam satu bentuk shapefile, mungkin ada beberapa bagian. Ini akan memplot setiap bagian dalam satu bentuk, secara terpisah.
sumber