Saya ingin mengonversi beberapa file shp berbasis poligon yang memiliki beberapa fitur poligon menjadi poin untuk setiap fitur yang pada dasarnya akan mewakili centriod dari setiap fitur poligon. Saya tahu di dunia ArcGIS saya bisa menggunakan alat Feature To Point tetapi saya ingin menyimpannya dalam skrip yang dapat dijalankan di PC yang tidak memiliki arcpy di atasnya, jadi saya mencari alternatif open source untuk itu. Adakah yang tahu perpustakaan yang bisa saya gunakan untuk ini bersama dengan beberapa arahan tentang bagaimana memanfaatkan itu?
9
Jawaban:
Anda dapat menjalankan
ogr2ogr
perintah (mis. Dari OSGeo4w Shell). Misalnya pada shapefile negara:Shapefile baru
countries_centroid.shp
harus mirip dengan input, tetapi hanya berisi satu titik per [Multi] Polygon.@PEL juga menunjukkan contoh yang baik dengan ST_PointOnSurface, yang mudah untuk diganti dalam perintah ini.
Hal serupa dapat dilakukan dengan Python, jika diperlukan, tetapi mungkin perlu beberapa baris kode lagi:
sumber
gdal-bin
menyertakan dukungan ini.Cukup gunakan Fiona atau GeoPandas (Python 2.7.x dan 3.x)
Beberapa poligon
Transformasi ke titik (centroid)
Hasil
sumber
Cara lain, mungkin lebih 'rendah', adalah dengan langsung menggunakan
fiona
danshapely
untuk I / O dan pemrosesan geometri.sumber
Saya pikir cara termudah adalah dengan menggunakan gdal / ogr Virtual Format. ( http://www.gdal.org/drv_vrt.html ) dan dialek SQL / SQLITE ( http://www.gdal.org/ogr_sql.html dan https://www.gaia-gis.it/spatialite-3.0 .0-BETA / spatialite-sql-3.0.0.html )
Shapefile poligon saya bernama poly.shp. Kemudian saya membuat file seperti XML ini bernama vrt.vrt. Di dalam file ini (vrt.vrt), di sini konten untuk dikonversi ke poin
Saat ini, Anda dapat mengintegrasikan file ini ke Qgis untuk divalidasi. Yang pasti, rendering lebih lambat dari sumber mentah karena setiap fitur ditampilkan sebagai titik pada setiap permintaan rendering.
Setelah itu, konversikan file ini (vrt.vrt) menjadi sesuatu yang lain menggunakan util gdal / ogr dari python shell / script
Anda mendapatkan shapefile titik bernama point_from_vrt.shp.
sumber
'wkbPoints' is not a valid value of the atomic type