Hapus Duplikat Poligon Menggunakan Alat Sumber Terbuka

13

Saya memiliki fitur shapefile yang berisi duplikat geometri, tetapi atribut yang berbeda (misalnya poligon dengan atribut XX, dan poligon identik dengan atribut XY). Saya ingin mengidentifikasi duplikat, lalu pilih satu dengan atribut yang benar, hapus yang lain.

Saya sudah mencoba alat topologi di OpenJump / Kosmo, tetapi tidak berhasil. Mereka memiliki alat 'hapus duplikat' yang melakukan apa yang saya inginkan, kecuali tampaknya secara sewenang-wenang menghapus salah satu fitur daripada membiarkan saya memilih yang mana yang akan disimpan.

Saya memiliki akses ke QGIS, OpenJUMP, Kosmo, dll. Dan saya dapat menginstal alat open source / gratis lainnya jika diperlukan.

Pikiran?

Darren Cope
sumber

Jawaban:

7

Selain PostGIS, Anda juga dapat menggunakan SIG open source topologi (GRASS):

  1. Unduh dan pasang
  2. Mulai dan pilih Manajer Lokasi, gunakan alat untuk menghasilkan database proyek baru dari file SHAPE Anda (disebut "Lokasi GRASS"), lihat di sini untuk panduan langkah demi langkah
  3. Impor file SHAPE
  4. Gunakan alat "v.clean" yang menawarkan serangkaian opsi
  5. Ekspor peta kembali ke format file SHAPE dengan "v.out.ogr"

Sidenote: kami berencana menawarkan WPS untuk ini sehingga Anda dapat memoles data Anda melalui portal Web kami.

markN
sumber
Saya tidak percaya v.clean memungkinkan pengguna untuk 'secara interaktif' mengidentifikasi dan memperbaiki kesalahan topologi satu per satu. Tolong koreksi saya jika saya salah.
Darren Cope
Saya rindu bahwa Anda ingin melakukannya secara interaktif. Jadi digitizer v.digit adalah alat untuk digunakan.
MarkusN
Markus, Memutar cepat melalui v.digit tidak terdengar seperti itu akan melakukan apa yang saya inginkan. Bisakah Anda memberikan contoh bagaimana saya akan menyelesaikan tugas saya menggunakan v.digit?
Darren Cope
1
Sebenarnya, hanya mengimpor shapefile ke GRASS menciptakan lapisan poligon yang tumpang tindih sebagai lapisan 2_polygon. Saya pikir ini sudah cukup bagi saya untuk melanjutkan!
Darren Cope
3

Inilah yang saya gunakan dalam kasus-kasus itu. Seperti yang saya pahami, Anda harus melakukan pemeriksaan manual untuk memutuskan mana yang memiliki atribut yang tepat. Lalu saya gunakan untuk melakukannya dalam dua langkah. Pertama saya membuat tabel atau tampilan di PostGIS dengan duplikat poligon, kemudian saya buka tabel ini di GIS desktop bersama-sama dengan layer asli di mana saya ingin menghapus duplikat. Itu akan membawa saya ke duplikat melalui tabel duplikat saya dan saya dapat menghapus di tabel asli atau shapefile atau apa pun itu.

Kueri untuk menemukan duplikat akan menjadi seperti ini jika Anda memiliki id unik bernama gid dan kolom geometri yang disebut the_geom:

create table duplicates as
select a.the_geom, a.gid, b.gid from mytable a, mytable b 
where ST_Equals(a.the_geom, b.the_geom) and a.gid!=b.gid;

Ada beberapa varian pada ST_Equals, tetapi saya pikir ST_Equals adalah yang Anda inginkan. Itu akan memberi Anda tabel dengan geometri duplikat dan gid (id) dari kesempatan pertama dan kedua poligon. Anda akan mendapatkan pasangan duplikat yang sama dua kali, tetapi itu tidak masalah karena Anda hanya ingin mereka menunjukkan di mana mereka berada.

HTH Nicklas

Nicklas Avén
sumber
3

Jika Anda menggunakan PostGIS 1.5.x, periksa fungsi ST_HausdorffDistance ().
Duplikat geometri akan menghasilkan nilai 0. Gunakan seperti bergabung dengan mentiond sendiri. Cukup rapi untuk membandingkan bentuk poligon.

eprand
sumber
0

Cara yang lebih sederhana untuk dilakukan. Hitung area di GIS desktop Anda dan pesan berdasarkan area naik atau turun. Anda sekarang harus memeriksa setiap baris untuk melihat objek yang digandakan dalam tabel atribut Anda. Ini didasarkan pada anggapan Anda tidak pernah memiliki area yang persis sama untuk objek yang tidak terduplikasi meskipun terkadang bisa salah.

ThomasG77
sumber