Kết hợp bộ dữ liệu đa giác


8

Tôi cần kết hợp 2 bộ dữ liệu đa giác lớn. Một trong những bộ dữ liệu này chứa nhiều dữ liệu gần đây, vì vậy các đa giác từ bộ dữ liệu này cần được sao chép vào bộ dữ liệu hiện có.

Có ba trường hợp khác nhau trong đó bộ dữ liệu hiện tại sẽ cần phải được sửa đổi. Xem dưới đây để chụp ảnh màn hình và giải thích.

(Trong tất cả các ảnh chụp màn hình, đường viền màu đỏ nét đứt thể hiện dữ liệu hiện có. Đa giác màu xanh lá cây là dữ liệu mới.)


Tình huống 1 - Đa giác hoàn toàn mới:

nhập mô tả hình ảnh ở đây

Hành động - Đa giác mới cần được thêm vào tập dữ liệu hiện có. Đa giác vẫn giữ nguyên có thể được bỏ qua.


Tình huống 2 - Một đa giác hiện có đã thay đổi hình dạng:

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Hành động - Đa giác hiện tại cần phải được xóa. Đa giác mới sau đó cần phải được thêm vào tập dữ liệu hiện có.


Tình huống 3 - Nhiều đa giác mới trong một đa giác hiện có

nhập mô tả hình ảnh ở đây

Hành động - Hiện có chứa / đa giác lớn cần phải được xóa. Đa giác mới sau đó cần phải được thêm vào tập dữ liệu hiện có.


Vì vậy, câu hỏi của tôi là; có thể kết hợp các bộ dữ liệu này theo các quy tắc ở trên, trong QGIS hoặc PostGIS không?


Bạn có đang sử dụng một quy trình khác nhau cho từng tình huống.
Chim bói cá

@Kingfisher Có tôi đã nghĩ rằng có thể cần thiết ... Mọi lời đề nghị đều được chào đón!
Matt

Làm thế nào để chúng ta biết nếu đa giác là mới? Bạn đang cung cấp đồ họa, làm thế nào về một định nghĩa bảng? Dán đầu ra của\d table
Evan Carroll

@Evan hiện không có gì trong các bảng để chỉ ra đa giác mới / cũ, nhưng sẽ rất đơn giản để thêm một cái gì đó.
Matt

Câu trả lời:


6

Tôi tin rằng bạn có thể làm tất cả điều này trong 2 bước. Đầu tiên, xóa tất cả các đa giác hiện có trong đó bảng đa giác mới giao nhau. Trong trường hợp 1, các đa giác hiện có sẽ không được chạm vào. Trong trường hợp 2 và 3, tất cả các đa giác hiện có đã phát triển (và có thể hợp nhất thành một) hoặc bị thu hẹp (và có thể tách thành các đa giác nhỏ hơn) sẽ bị xóa. Sau đó, bạn chỉ cần chèn đa giác mới vào bảng hiện có sẽ bao gồm các trường hợp 2 và 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;

Cảm ơn @John, tôi nghĩ bạn có thể đúng với điều này ... Tôi sẽ thử nó
Matt

Trước tiên, bạn nên tạo một bản sao của bảng đa giác hiện có :-)
John Powell

2
Cái này có hiệu quả không? Tôi chắc chắn logic là đúng, nhưng tôi muốn biết liệu tôi có bỏ sót điều gì không.
John Powell

Nó đã hoạt động tốt, ngoài một vài đa giác bị xóa cần được giữ lại (nhưng đó chỉ là do dữ liệu lộn xộn), và tương đối dễ dàng sửa chữa. Cảm ơn John.
Matt

Tôi rất vui Tôi hy vọng bạn đã sao lưu dữ liệu. Tôi cảm thấy rằng các sơ đồ đẹp như vậy xứng đáng có một câu trả lời phức tạp hơn, nhưng đôi khi những thứ có vẻ phức tạp lại không. Đáng buồn thay, điều ngược lại cũng rất đúng.
John Powell
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.