Saya mencoba mencari cara bagaimana menggunakan python untuk mengekstraksi poligon dalam satu vektor yang tumpang tindih dengan> 90% oleh vektor lain. Saya kemudian ingin memiliki vektor / peta yang hanya akan menunjukkan poligon itu. Contoh gambar menunjukkan lapisan saya. Saya ingin semua poligon abu-abu yang> 90% merah.
Saya perlu melakukan ini semua melalui python (atau metode otomatis serupa). Saya punya ~ 1000 peta untuk diproses dengan cara yang sama.
Jawaban:
Kode selanjutnya berfungsi di Konsol Python saya di QGIS. Ini menghasilkan lapisan memori dengan poligon yang> 90% tumpang tindih dengan area merah.
Saya mencoba kode dengan dua lapisan vektor ini:
Setelah menjalankan kode di Konsol Python QGIS, untuk hasil yang menguatkan, ada dicetak indeks i, j dari fitur yang terlibat, area persimpangan, atribut bidang dalam polygons_intersects (1 untuk area merah dan 2 untuk area abu-abu) dan kriteria yang tumpang tindih .
Lapisan memori yang dibuat (fitur hijau) dapat diamati pada gambar berikutnya. Seperti yang diharapkan.
sumber
Berikut solusi yang tidak memerlukan python.
Tambahkan layer virtual baru dengan permintaan seperti:
Dengan:
Basins800 sebagai layer yang ingin Anda filter dengan poligon abu-abu
Tingkat keparahan: lapisan merah Anda tumpang tindih.
Hasilnya akan menjadi layer baru dengan hanya semua poligon abu-abu> 90% tumpang tindih oleh poligon merah, dengan bidang baru yang berisi persen tumpang tindih.
Semoga ini berhasil. Saya dapat menambahkan rincian lebih lanjut tentang permintaan jika diperlukan.
Catatan: Data Anda mengandung poligon yang sangat kecil (berasal dari pemrosesan raster Anda dan sesuai dengan piksel raster (pada gambar, kita dapat melihat 4 poligon tetapi ada 25 poligon kecil lainnya). Ini membuat kueri sangat lambat dijalankan (fungsi titik-temu) menghasilkan satu fitur untuk setiap pasangan fitur dari dua lapisan).
sumber
Setelah melihat tautan ke shapefile Severity dan Basins800 , saya bisa memahami geoproses yang diperlukan. Saya mengubah kode di:
Secara terprogram menemukan poligon yang> 90% tumpang tindih dengan layer vektor poligon lain menggunakan QGIS?
untuk mendapatkan yang ini:
Setelah menjalankan kode, dengan shapefile ini di Python Console dari QGIS, dalam beberapa menit saya mendapat hasil yang mirip dengan Pierma ; di mana lapisan memori memiliki 31 fitur (berbeda dari 29 poligon yang didapatnya).
Saya tidak akan men-debug hasil karena ada 1901 * 3528 = 6706728 interaksi untuk fitur. Namun, kodenya terlihat menjanjikan.
sumber