Menggabungkan poligon yang berdekatan dalam shapefile yang telah dipisah pada batas ubin?

24

Saya saat ini menggunakan data bangunan dari Ordnance Survey Vectormap District dan saya perhatikan bahwa banyak poligon pembangun terbagi menjadi 2 karena cara OS membelah shapefile.

Inilah yang saya lihat di QGIS - Saya telah menyoroti beberapa bangunan yang terbelah pada batas ubin:

masukkan deskripsi gambar di sini

Saya tidak dapat menggabungkan bangunan secara manual karena ada terlalu banyak dari mereka yang terpecah pada batas-batasnya (ini hanya contoh yang diperbesar). Saya mencari cara otomatis untuk menyelesaikan ini.

Sayangnya, setiap sisi bangunan yang terpisah memiliki id yang berbeda sehingga saya tidak dapat dengan mudah membubarkannya.

Bagaimana Anda menyarankan saya dapat secara otomatis menggabungkan ubin bangunan?

Edit

Saya sekarang menggunakan PostGIS untuk menggabungkan perpecahan poligon di batas ubin. Berikut adalah pernyataan SQL yang melakukan ini untuk saya - ini berkali-kali lebih cepat daripada melakukannya dengan QGIS:

DROP TABLE merged;
CREATE TABLE merged AS
SELECT
  -- Merge polygons that are within 0.01 metres of each other
  (ST_Dump(ST_Union(ST_Buffer(the_geom, 0.01)))).geom AS the_geom
FROM unmerged;

-- Update the geometry_columns table
SELECT Populate_Geometry_Columns();
Robin Hawkes
sumber
6
Anda mungkin harus memposting solusi Anda sebagai jawaban dan menerimanya bukan milik saya. Berpegang teguh pada skema tanya jawab membuatnya lebih mudah bagi orang lain dengan masalah yang sama untuk menemukan solusinya.
Jake

Jawaban:

18

Jika Anda hanya ingin melarutkan tepian dan senang dengan memiliki satu fitur multipoligon besar dari semua bangunan, Anda dapat menggunakan alat fTools "Dissolve" ("Vector / Geoprocessing / Dissolve").

Jika Anda ingin mempertahankan atribut (dalam kasus OS Vector yang hanya akan menjadi ID, yang tampaknya agak sewenang-wenang), Anda dapat membagi layer vektor terlarut dan kemudian menetapkan atribut dari lapisan undissolved asli menggunakan "Gabung atribut menurut lokasi ":

Ini adalah subset dari dua bangunan OS shapefile yang digabung menjadi satu shapefile menggunakan "Vector / Manajemen data / Gabungkan shapefile menjadi satu". Warna-warna ditugaskan secara acak untuk menunjukkan fitur individual:

Ini adalah hasil dari alat "Dissolve": Semua fitur telah dibubarkan menjadi satu fitur dengan ID objek pertama, istirahat di tiga bangunan pusat hilang:

Setelah memisahkan fitur menggunakan "Vector / Geometry / Multipart to singleparts", bangunan adalah fitur individual lagi, tetapi mereka semua memiliki ID yang sama:

Menjalankan "Alat Manajemen Vektor / Data / Gabungkan atribut berdasarkan lokasi" dengan layer split sebagai target dan layer gabungan asli sebagai layer vektor Gabung, bangunan ditugaskan kembali masing-masing ID:

Jake
sumber
Saya pikir masalahnya mungkin ini adalah OS VMD OpenData (koreksi saya jika saya salah). Dalam hal ini fitur tidak memiliki atribut yang dapat digunakan untuk pembubaran. Jadi Anda mungkin juga mencoba menggunakan fTools biasa larut. Semoga berhasil dengan ini, dalam beberapa vektor OpenData saya punya poligon yang dipisah dengan garis yang bertepatan dengan garis kisi yang tidak akan larut.
nhopton
@nhopton: Tetapi pembubaran fTools biasa akan menyatukan semua fitur menjadi fitur tunggal (jika tidak ada ID yang dapat digunakan untuk mengidentifikasi fitur mana yang dimiliki bersama, seperti halnya di sini), yang kemungkinan besar bukan yang diinginkan Rob. Jika Anda menggunakan v.dissolvesetelah menetapkan semua fitur beberapa atribut dummy yang identik, hanya yang memiliki batas yang akan digabung bersama.
Jake
Satu fitur saja mungkin tidak akan menjadi masalah bagi Rob, jika yang ia kejar adalah bentuk. Tapi ya, cobalah kedua metode pelarutan. Nick.
nhopton
Apakah Anda yakin bahwa semua poligon yang seharusnya dibubarkan sebenarnya telah dibubarkan? Di sini kebanyakan dari mereka larut, tetapi tidak semuanya.
nhopton
Terima kasih untuk bantuannya! Ternyata @nhopton benar dan bahwa pembagian Distrik VectorMap sebenarnya sedikit mati sehingga tidak larut dengan benar. Saya sekarang bereksperimen dengan menggunakan PostGIS untuk mempercepat proses ini.
Robin Hawkes