Menggabungkan dataset poligon

8

Saya perlu menggabungkan 2 dataset poligon besar. Salah satu dari dataset ini berisi data yang lebih baru, sehingga poligon dari dataset ini perlu disalin ke dalam dataset yang ada.

Ada tiga contoh berbeda di mana dataset yang ada perlu dimodifikasi. Lihat di bawah untuk screenshot dan penjelasannya.

(Di semua tangkapan layar, garis putus-putus merah menunjukkan data yang ada. Poligon hijau adalah data baru.)


Situasi 1 - Poligon yang sama sekali baru:

masukkan deskripsi gambar di sini

Tindakan - Poligon baru perlu ditambahkan ke dataset yang ada. Poligon yang tetap sama bisa diabaikan.


Situasi 2 - Poligon yang ada telah berubah bentuk:

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Tindakan - Poligon yang ada perlu dihapus. Poligon baru kemudian perlu ditambahkan ke dataset yang sudah ada.


Situasi 3 - Banyak poligon baru dalam poligon yang ada

masukkan deskripsi gambar di sini

Tindakan - Yang mengandung / poligon besar harus dihapus. Poligon baru kemudian perlu ditambahkan ke dataset yang sudah ada.


Jadi, pertanyaan saya adalah; apakah mungkin untuk menggabungkan set data ini sesuai dengan aturan di atas, baik di QGIS atau PostGIS?

Mat
sumber
Apakah Anda harus menggunakan proses yang berbeda untuk setiap situasi?
Kingfisher
@ Kingfisher Ya saya berpikir mungkin diperlukan ... Ada saran yang menyambut!
Matt
Bagaimana kita tahu kalau poligon itu baru? Anda menyediakan grafik, bagaimana dengan definisi tabel? Tempel output dari\d table
Evan Carroll
@ Evan saat ini tidak ada dalam tabel untuk menunjukkan poligon baru / lama, tetapi akan mudah untuk menambahkan sesuatu.
Matt

Jawaban:

6

Saya yakin Anda bisa melakukan semua ini dalam 2 langkah. Pertama, hapus semua poligon yang ada di mana tabel poligon baru memotongnya. Dalam kasus 1, poligon yang ada tidak akan disentuh. Dalam kasus 2 dan 3, semua poligon yang ada yang telah tumbuh (dan mungkin digabung menjadi satu) atau menyusut (dan mungkin dipecah menjadi yang lebih kecil) akan dihapus. Kemudian Anda cukup memasukkan poligon baru ke dalam tabel yang ada yang akan mencakup kasus 2 dan 3.

DELETE FROM existing_polygons a USING new_polygons b
WHERE ST_Intersects(a.geom, b.geom);

INSERT INTO existing_polygons 
SELECT * FROM new_polygons;
John Powell
sumber
Terima kasih @ John, saya pikir Anda bisa benar dengan ini ... Saya akan mencobanya
Matt
Anda sebaiknya membuat salinan dari tabel poligon yang ada terlebih dahulu :-)
John Powell
2
Apakah ini berhasil? Saya cukup yakin logikanya benar, tetapi saya akan tertarik untuk mengetahui apakah saya melewatkan sesuatu.
John Powell
Itu bekerja dengan baik, terlepas dari beberapa poligon yang dihapus yang perlu dijaga (tapi itu hanya karena data yang berantakan), dan relatif mudah diperbaiki. John terima kasih.
Matt
Saya senang. Saya harap Anda memiliki cadangan data. Saya merasa diagram yang bagus seperti itu pantas mendapat jawaban yang lebih kompleks, tetapi terkadang hal-hal yang terlihat rumit tidak. Sedihnya, yang sebaliknya juga sangat benar.
John Powell