Bagaimana cara melarutkan poligon dari shapefile menggunakan alat sumber terbuka?


10

Dalam proyek saya saat ini, saya memvisualisasikan data pada peta yang mewakili beberapa nilai untuk setiap wilayah administrasi suatu negara. Saya diberikan shapefile dari negara ini, yang saya konversi ke GeoJSON untuk digunakan dengan PolyMaps. Sekarang saya punya persyaratan untuk mengelompokkan beberapa area menjadi lebih besar, karena tidak ada data untuk beberapa bagian yang lebih kecil, tetapi data agregat untuk yang besar dapat diperoleh. Cluster-cluster tersebut sudah ditentukan sebelumnya (mis. A + B + C = D), jadi saya pikir akan lebih mudah untuk menghasilkan shapefile yang dikelompokkan dan mengubahnya menjadi GeoJSON sesudahnya.

Tetapi bagaimana cara membuat cluster seperti itu, lebih disukai otomatis dan dengan alat sumber terbuka? Cara masuk akal lainnya tentu saja diterima juga.

Jawaban:


5

Anda selalu dapat menggunakan alat open-source seperti QGIS untuk membuka shapefile Anda dan menggabungkan fitur menggunakan alat "menggabungkan fitur yang dipilih" (pilih beberapa fitur, klik gabungan, pilih atribut untuk mewarisi ke fitur gabungan yang baru, selesai).

Ini tentu saja tidak masuk akal jika kita berbicara tentang ratusan atau ribuan gabungan. Saya sendiri bertanya-tanya di hari lain apakah mungkin untuk menggabungkan fitur "berdasarkan atribut" di QGIS?

EDIT: Ok, saya bodoh, jika Anda memiliki atribut umum untuk semua fitur yang akan Anda "cluster" (seperti nama provinsi atau kabupaten) ini akan menjadi kasus untuk alat bubar. Buka shapefile Anda, pilih larut (dalam QGIS itu terletak di Vector> Geoprocessing Tools> Dissolve), pilih kolom dengan nama umum yang disebutkan di atas, dan mulai proses. Ini semoga (jika saya tidak salah paham dengan Anda) menghasilkan apa yang Anda cari.


Secara umum, saran yang bagus, dan jika semuanya berkaitan dengan pekerjaan manual saya akan menemukan seseorang yang akan membuat shapefile untuk saya dengan QGIS seperti yang Anda jelaskan. Namun, saya ingin dapat mendefinisikan cluster-cluster tersebut (misalnya melalui kode NUTS: menggabungkan FR413 dan FR411 menjadi sesuatu yang disebut _FRX1) dan kemudian menjalankan skrip yang akan menghasilkan shapefile yang dikelompokkan tersebut. Saya ingin dapat memperbaiki kesalahan atau mengakomodasi perubahan yang dilacak cepat tanpa overhead alat GUI. Sangat mungkin bahwa cluster tersebut akan ditentukan oleh pengguna akhir suatu hari nanti, jadi saya perlu sedikit fleksibilitas.
Nikolai Prokoschenko

Saya tidak pernah menggunakannya, tapi saya pikir Anda bisa menggunakan konsol untuk melakukan semuanya di QGIS, jadi tidak perlu untuk GUI. Anda juga harus selalu mendefinisikan cluster tersebut dalam semacam tabel, bahkan jika Anda benar-benar bergantung pada solusi yang dituliskan. Jadi Anda bisa menghindari mengacaukan shapefile Anda dengan bergabung dengan tabel ini dan melakukan pembubaran kemudian. Saya kira ini juga bisa skrip?
SAnderka

sangat mungkin, saya benar-benar pemula dalam segala hal GIS. Saya akan melihat ke dalam scripting QGIS, terima kasih.
Nikolai Prokoschenko

2

Untuk pekerjaan manual yang kurang, Anda bisa melihat di SpatiaLite. Anda dapat mengimpor shapefile dengan mudah menggunakan mis

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

Kemudian untuk bagian yang larut:

Saya ingin dapat mendefinisikan cluster-cluster tersebut (misalnya melalui kode NUTS: menggabungkan FR413 dan FR411 menjadi sesuatu yang disebut _FRX1)

Fungsi yang Anda butuhkan di sini adalah GUnion (). Anda mungkin ingin mendefinisikan "cluster" Anda di tabel kedua. Kemudian Anda bisa bergabung dengan cluster dan tabel area dan menggunakan GUnion () dengan GROUP BY untuk membuat final union_table.

Anda kemudian dapat mengekspor ke shapefile menggunakan .dumpshp

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

Jika Anda membutuhkan GeoJSON, Anda dapat mengonversi file sekarang.

Anda dapat menulis skrip pendek misalnya Python yang menangani semua beban, gabungan, dan kesedihan ini.


Terlihat sangat menjanjikan, saya akan bereksperimen dengan itu! Terima kasih! Bisakah Anda menjelaskan apa yang dilakukan UPDATEdan SELECTgaris?
Nikolai Prokoschenko
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.