Loại bỏ các tính năng trùng lặp với hình học tương tự trong ArcMap?


15

Có thể xác định duy nhất mỗi hình học trong một lớp tính năng?

Về cơ bản tôi có một lớp tính năng đa giác với nhiều hàng dữ liệu được biểu thị bằng cùng một hình dạng. Tôi muốn 1 hàng cho mỗi hình học độc đáo. Vì vậy, tôi đang tìm kiếm một số phương pháp vượt trội để kết hợp các thuộc tính dựa trên hình dạng của hình học.

Tôi đến từ một thế giới Postgres và có thể giải quyết vấn đề này ở đó, nhưng tôi không biết làm thế nào (hoặc nếu có thể) để làm điều đó không lập trình với các công cụ ESRI.


Vì vậy, bạn đang nói rằng có nhiều bản ghi hình học giống hệt nhau và bạn muốn kết hợp những bản ghi giống hệt nhau? Nếu đó là trường hợp ... bạn có thể giải thể dựa trên khu vực hoặc một cái gì đó tương tự? Có lẽ tôi đang thiếu câu hỏi của bạn ở đây.
Clickinaway

Điều đó đúng, chúng là những hình học giống hệt nhau trong đó thuộc tính tự nhiên được chia sẻ duy nhất là hình học. Khu vực có thể hoạt động, nhưng không có gì đảm bảo rằng hai hình học khác nhau không có cùng một khu vực.
Dylan Hettinger

Xem bài viết của tôi. Bạn có thể chạy hòa tan trên nhiều lĩnh vực.
Paul

@Paul .... Tôi thấy bạn đã chỉnh sửa phản hồi của mình để phản ánh đầu vào của tôi. Tôi hy vọng điều đó đã giúp.
Clickinaway

Câu trả lời:


22

Nếu bạn có giấy phép nâng cao, bạn có thể sử dụng Tìm giống hệt hoặc Xóa nhận dạng .

Cả hai có thể được sử dụng để tìm / xóa các tính năng có thuộc tính giống hệt nhau hoặc, nếu trường Hình dạng được chỉ định, hình học giống hệt nhau.

Nếu bạn không có giấy phép nâng cao, bài đăng này sẽ hữu ích.

Nói tóm lại, bạn thêm hai trường cho X, Y trong bảng thuộc tính của bạn và chạy Dissolve trên các trường đã nói.

Nếu bạn có các đa giác có cùng trọng tâm, nhưng không giống nhau về mặt hình học, bạn có thể thêm hai trường khác (Chu vi và Diện tích). Điều đó là đủ để xác định hình học giống hệt nhau cho hầu hết các trường hợp bình thường. Xem bình luận của @ whuber bên dưới.


Đó là giả định dữ liệu điểm? Tôi đã nghĩ về việc đề xuất để tạo ra centroid trước. Anh ta vẫn nói có nhiều hàng có cùng hình dạng ... Nghe có vẻ giống như phân loại dựa trên một lớp / phạm vi diện tích? Nhưng nó cũng cho biết hình dạng của hình học ... đó là lý do tại sao tôi nghiêng về việc hòa tan dựa trên diện tích hoặc chu vi (hoặc sự kết hợp của hai trong số chúng để đạt được tỷ lệ).
Clickinaway

1
Trên thực tế, bài đăng mà tôi liên kết là dành cho đa giác. Bạn có thể hòa tan trên khu vực và centroid, nếu bạn có hai đa giác không giống nhau với cùng một centroid.
Paul

+1 Đây chính xác là câu trả lời đúng. Về nguyên tắc, trọng tâm, chu vi và diện tích vẫn có thể không xác định duy nhất một đa giác, nhưng các mẫu đối lập là một chút giả định. Để băm các đối tượng không đều hoặc tự nhiên hoặc số hóa thủ công thành các id duy nhất, bốn giá trị đó phải đáng tin cậy. Nếu bạn muốn một số giá trị dễ lấy hơn, hãy sử dụng tọa độ của hộp giới hạn của tính năng và số đỉnh của nó.
whuber

@whuber Sẽ so sánh tọa độ của tất cả các đỉnh là cách chắc chắn duy nhất để xác định hình dạng giống hệt nhau? Nền tảng của tôi về hình học là khá yếu, vì vậy tôi thấy tất cả điều này khá hấp dẫn.
Paul

Câu trả lời cho câu hỏi của bạn phụ thuộc vào ý của bạn là "giống hệt": ví dụ, nếu bạn định chèn một đỉnh mới dọc theo cạnh của đa giác, đó có phải là đa giác "giống hệt" hay không? Có thể cho rằng đó là ý nghĩa của việc thể hiện cùng một tính năng trên thế giới, mặc dù các đỉnh khác nhau. Từ quan điểm này về thử nghiệm chắc chắn duy nhất là liệu sự khác biệt (lý thuyết tập hợp) của hai đa giác có trống hay không. Nhưng nếu bạn có quan điểm chặt chẽ hơn thì danh tính có nghĩa là khớp từ đỉnh này sang đỉnh khác, nó vẫn khó khăn, bởi vì một đa giác có thể bắt đầu danh sách đỉnh của nó tại một điểm khác.
whuber

1

Tôi có một bộ dữ liệu dựa trên dữ liệu khảo sát. Vấn đề của tôi là các tính năng cũ không phải lúc nào cũng bị xóa trước khi ảnh chụp khảo sát mới được nhập. Do đó, chúng tôi có 'bản sao' với hình dạng khác nhau: IE các ảnh khảo sát có thể cách nhau 1/4 ft. Trên bộ dữ liệu tính năng 12000, điều này rất khó để phóng to từng cái và xác định chúng. Sử dụng ArcMap Basic 10.2: đây là một mô hình hacky tôi đã nghĩ ra.

  1. Bộ đệm (bán kính w / đầu vào) mỗi tính năng trong lớp gốc (Được chọn hoặc không)
  2. Lặp lại qua từng tính năng trong lớp đệm
  3. Chọn từ lớp ban đầu dựa trên mối quan hệ (tính năng Centroid w / in)
  4. Tính năng được chọn "tính hàng"
  5. Trường Tính toán giá trị đếm hàng cho lớp đệm = Có bao nhiêu tính năng trong bán kính của các tính năng gốc

Tôi phát minh lại bánh xe. Ngoài ra, tôi đã nản lòng với Trình xây dựng mô hình và về cơ bản là bắt nạt toàn bộ. Phải có một giải pháp thanh lịch hơn. Tôi sẽ sẵn sàng chấp nhận những lời phê bình và đề xuất.

Ngoài ra, điều này dường như chỉ chạy chính xác từ bên trong Model Builder, tôi chạy từ hộp công cụ và nó không lưu lớp đệm.

Tìm lông vũ trùng lặp


1

Tôi đã tìm kiếm một câu trả lời cho cùng một câu hỏi trong một thời gian để khắc phục việc làm phẳng vấn đề đa giác bộ đệm chồng chéo và nghĩ rằng đã tìm thấy một giải pháp mạnh mẽ cho vấn đề đó. Trong thực tế @ bình luận của Whuber,

Về nguyên tắc, trọng tâm, chu vi và diện tích vẫn có thể không xác định duy nhất một đa giác, nhưng các mẫu đối lập là một chút giả định.

Câu trả lời của @ Paul là động lực chính để tôi tiếp tục cố gắng. Nó sử dụng toán tử IS_IDENTICAL_TO của công cụ Spatial Join vì đây là cách hiệu quả nhất trong số các trình phát hiện giống hệt khác. Dưới đây là các bước:

  • Tự liên kết đầu vào của bạn để giữ cho tất cả các hình dạng khác nhau;
  • Tạo một trường giả để giữ / sao chép OBRIID gốc (nghĩa là loại trường OID) của các hàng, giả sử EX_OID ;
    • Chạy Spatial Tham gia vào lớp tính năng muốn được xử lý như cả tham số tính năng đích và tham gia. Đảm bảo ánh xạ trường của (các) trường giả (xuất hiện hai lần) được tạo trước đó có quy tắc hợp nhất FIRST (là mặc định hoặc chọn LAST, các trường khác có thể không đưa ra đầu ra mong muốn vì chúng sử dụng tóm tắt các lớp phủ). Bước này chọn hình dạng chung OBRIID ngồi trên tất cả các lớp phủ (ví dụ: FIRST);

Các bước sau đây có thể được thực hiện theo hai cách, VỚI Python hoặc KHÔNG CÓ:

VỚI PYTHON

  • Sử dụng mã dưới đây để trích xuất ID duy nhất mà chúng tôi muốn tìm:

print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")])).

Xin lưu ý rằng tôi đang sử dụng bản sao thứ hai của trường OID giả, đó là EX_OID_1 trong trường hợp của tôi;

  • Sao chép đầu ra của mã này và dán mã này vào Truy vấn Định nghĩa của lớp đối tượng gốc được xử lý như OBJECTID IN (<PASTE_COPIED_VALUES_HERE>). Kết quả sẽ cho bạn thấy các tính năng thống nhất của các phần chồng chéo. Có một giới hạn kích thước ở đây, 30.000 ký tự. Để khắc phục vấn đề này, bạn cần làm theo các bước "không có trăn".

KHÔNG CÓ PYTHON

  • Sử dụng công cụ Tần suất để liệt kê các giá trị duy nhất trong bản sao thứ hai của trường OID giả, đó là EX_OID_1 trong trường hợp của tôi;

  • Cuối cùng Tham gia trường OBRIID của lớp tính năng ban đầu với đầu ra của EX_OID_1 của công cụ Tần số bằng cách chọn tùy chọn "Chỉ giữ các bản ghi khớp".

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.