Sáp nhập các đa giác liền kề trong shapefile đã được phân chia ở ranh giới gạch?


24

Tôi hiện đang sử dụng dữ liệu xây dựng từ Khu vực khảo sát bản đồ và tôi đã nhận thấy rằng rất nhiều đa giác tòa nhà được chia làm 2 do cách hệ điều hành phân tách shapefile.

Đây là những gì tôi thấy trong QGIS - Tôi đã nhấn mạnh một số tòa nhà được phân chia ở ranh giới gạch:

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

Tôi không thể hợp nhất các tòa nhà theo cách thủ công vì có quá nhiều trong số chúng đã bị chia tách tại các ranh giới (đây chỉ là một ví dụ được phóng to). Tôi đang tìm kiếm một cách tự động để giải quyết điều này.

Thật không may, mỗi bên của các tòa nhà bị chia tách có một id khác nhau nên tôi không thể dễ dàng hòa tan chúng.

Làm thế nào bạn có thể đề nghị tôi có thể tự động hợp nhất các viên gạch xây dựng?

Chỉnh sửa

Tôi hiện đang sử dụng PostGIS để hợp nhất các đa giác phân chia tại các ranh giới ô. Đây là câu lệnh SQL thực hiện điều này cho tôi - nó nhanh hơn nhiều lần so với thực hiện với 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();

6
Bạn có lẽ nên đăng giải pháp của bạn như một câu trả lời và chấp nhận điều đó thay vì của tôi. Bám sát với sơ đồ câu hỏi giúp người khác có cùng vấn đề tìm ra giải pháp dễ dàng hơn nhiều.
Jake

Câu trả lời:


18

Nếu bạn chỉ đơn giản muốn hòa tan các cạnh và hài lòng với một tính năng đa đường lớn của tất cả các tòa nhà, bạn có thể chỉ cần sử dụng công cụ "Hòa tan" fTools ("Vector / Geoprocessing / Dissolve").

Nếu bạn muốn giữ các thuộc tính (trong trường hợp OS Vector chỉ là ID, có vẻ khá độc đoán), bạn có thể tách lớp vectơ hòa tan và sau đó gán các thuộc tính của lớp không hòa tan ban đầu bằng cách sử dụng "Thuộc tính nối theo vị trí ":

Đây là một tập hợp con của hai shapefile tòa nhà hệ điều hành đã được hợp nhất thành một shapefile duy nhất bằng cách sử dụng "Vector / Data Management / Hợp nhất các shapefile thành một". Các màu được chỉ định ngẫu nhiên để hiển thị các tính năng riêng lẻ:

Đây là kết quả của công cụ "Hòa tan": Tất cả các tính năng đã được hòa tan thành một tính năng duy nhất với ID của đối tượng đầu tiên, sự phá vỡ trong ba tòa nhà trung tâm đã biến mất:

Sau khi tách tính năng bằng cách sử dụng "Vector / Geometry / Multipart to singleparts", các tòa nhà là các tính năng riêng lẻ một lần nữa, nhưng tất cả chúng đều có cùng một ID:

Chạy "Vector / Công cụ quản lý dữ liệu / Tham gia thuộc tính theo vị trí" với lớp tách làm mục tiêu và lớp được hợp nhất ban đầu làm lớp vectơ Tham gia, các tòa nhà được gán lại ID cá nhân của chúng:


Tôi nghĩ vấn đề có thể là đây là OS VMD OpenData (sửa tôi nếu tôi sai). Trong trường hợp đó, các tính năng không có thuộc tính có thể được sử dụng để hòa tan. Vì vậy, bạn cũng có thể thử sử dụng các fTools thông thường hòa tan. Chúc may mắn với điều này, trong một số vectơ OpenData tôi đã có các đa giác được phân chia bởi các đường trùng khớp với các đường lưới sẽ không bị hòa tan.
nhopton

@nhopton: Nhưng các fTools thông thường hòa tan sẽ gộp tất cả các tính năng thành một tính năng duy nhất (nếu không có ID nào có thể được sử dụng để xác định các tính năng nào thuộc về nhau, như trường hợp ở đây), rất có thể đó không phải là điều Rob muốn. Nếu bạn sử dụng v.dissolvesau khi gán tất cả các tính năng một số thuộc tính giả giống hệt nhau, chỉ những tính năng có chung ranh giới mới được hợp nhất với nhau.
Jake

Một tính năng duy nhất có lẽ sẽ không phải là vấn đề đối với Rob, nếu tất cả những gì anh ta có sau đó là hình dạng. Nhưng có, hãy thử cả hai phương pháp hòa tan. Nick.
nhopton

Bạn có chắc chắn rằng tất cả các đa giác cần được giải thể trên thực tế đã bị giải thể? Ở đây hầu hết họ giải thể, nhưng không phải tất cả.
nhopton

Cảm ơn đã giúp đỡ! Hóa ra @nhopton đã đúng và các phân chia của VectorMap thực sự là một chút và do đó không hòa tan chính xác. Tôi hiện đang thử nghiệm sử dụng PostGIS để tăng tốc quá trình này.
Robin Hawkes
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.