Xóa các đa giác trùng lặp bằng các công cụ nguồn mở


13

Tôi có một shapefile chứa các tính năng với hình học trùng lặp, nhưng các thuộc tính khác nhau (ví dụ: đa giác có thuộc tính XX và đa giác giống hệt với thuộc tính XY). Tôi muốn xác định các bản sao, sau đó chọn một thuộc tính chính xác, xóa các thuộc tính khác.

Tôi đã thử các công cụ cấu trúc liên kết trong OpenJump / Kosmo nhưng không thành công. Họ có một công cụ 'xóa các bản sao' thực hiện những gì tôi muốn, ngoại trừ dường như tự ý xóa một trong các tính năng thay vì để tôi chọn cái nào cần giữ.

Tôi có quyền truy cập vào QGIS, OpenJUMP, Kosmo, v.v. và có thể cài đặt các công cụ mã nguồn mở / miễn phí khác nếu cần.

Suy nghĩ?

Câu trả lời:


7

Bên cạnh PostGIS, bạn cũng có thể sử dụng một GIS nguồn mở topo (GRASS):

  1. Tải xuống và cài đặt
  2. Bắt đầu và chọn Trình quản lý vị trí, sử dụng công cụ để tạo cơ sở dữ liệu dự án mới từ tệp SHAPE của bạn (được gọi là "Vị trí GRASS"), xem tại đây để biết hướng dẫn từng bước
  3. Nhập tệp SHAPE
  4. Sử dụng công cụ "v.clean" cung cấp một loạt các tùy chọn
  5. Xuất bản đồ trở lại định dạng tệp SHAPE với "v.out.ogr"

Sidenote: chúng tôi đang lên kế hoạch cung cấp WPS cho việc này để bạn có thể đánh bóng dữ liệu của mình thông qua cổng Web của chúng tôi.


Tôi không tin v.clean cho phép người dùng 'tương tác' xác định và sửa từng lỗi cấu trúc liên kết. Xin hãy sửa tôi nếu tôi sai.
Darren đối phó

Tôi đã bỏ lỡ rằng bạn muốn làm điều đó một cách tương tác. Vì vậy, số hóa v.digit là công cụ để sử dụng.
markusN

Markus, Một vòng quay nhanh qua v.digit không có vẻ như nó sẽ làm những gì tôi muốn. Có lẽ bạn có thể đưa ra một ví dụ về cách tôi sẽ hoàn thành nhiệm vụ của mình bằng cách sử dụng v.digit?
Darren đối phó

1
Trên thực tế, chỉ cần nhập shapefile vào GRASS sẽ tạo ra một lớp đa giác chồng chéo là lớp 2_polygon. Tôi nghĩ rằng điều này là đủ để tôi tiếp tục!
Darren đối phó

3

Đây là những gì tôi sử dụng để làm trong những trường hợp. Theo tôi hiểu, bạn sẽ phải thực hiện kiểm tra thủ công để quyết định cái nào có thuộc tính phù hợp. Sau đó, tôi sử dụng để làm điều đó trong hai bước. Đầu tiên tôi tạo một bảng hoặc một khung nhìn trong PostGIS với các đa giác trùng lặp, sau đó tôi mở bảng này trong một máy tính để bàn cùng với lớp ban đầu nơi tôi muốn xóa các bản sao. Điều đó sẽ dẫn tôi đến các bản sao thông qua bảng trùng lặp của tôi và tôi có thể xóa trong bảng gốc hoặc shapefile hoặc bất cứ thứ gì.

Truy vấn để tìm các bản sao sẽ giống như thế này nếu bạn có một id duy nhất được gọi là gid và một cột hình học gọi là 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;

Có một số biến thể trên ST_Equals, nhưng tôi nghĩ ST_Equals là phiên bản bạn muốn. Điều đó sẽ cung cấp cho bạn một bảng với hình học trùng lặp và gid (id) của lần đầu tiên và lần thứ hai của đa giác. Mặc dù vậy, bạn sẽ nhận được một cặp trùng lặp hai lần, nhưng điều đó không quan trọng bởi vì bạn chỉ muốn chúng cho bạn thấy chúng ở đâu.

NickH HTH


3

Nếu bạn đang sử dụng PostGIS 1.5.x, hãy kiểm tra hàm ST_HausdorffDistance ().
Hình học trùng lặp sẽ mang lại giá trị bằng 0. Sử dụng nó giống như tự tham gia. Khá gọn gàng để so sánh hình dạng đa giác.


0

Một cách đơn giản hơn để làm. Tính diện tích trong máy tính để bàn của bạn và sắp xếp theo khu vực tăng dần hoặc giảm dần. Bây giờ bạn sẽ phải kiểm tra từng dòng để xem các đối tượng trùng lặp trong bảng thuộc tính của bạn. Nó dựa trên một giả định mà bạn không bao giờ có cùng một khu vực cho các đối tượng không bị trùng lặp mặc dù đôi khi nó có thể sai.

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.