Cách đơn giản để phát hiện / chọn đa giác viền của một shapefile


8

Tôi đang tìm kiếm một cách đơn giản để phát hiện / chọn đa giác viền của một shapefile. Đa giác biên giới ở đây là đa giác không hoàn toàn được bao quanh bởi các đa giác khác, tức là đa giác nằm ở ngoại vi của shapefile (phạm vi của shapefile hoàn toàn được bao phủ bởi đa giác). Trong ví dụ dưới đây, các đa giác mong muốn được tô bóng:

đa giác biên giới

Giải pháp sử dụng Arcgis, QGIS, R, Python được chào đón nhất.


1
Là đường viền luôn luôn là một hình dạng thông thường đẹp như hình chữ nhật đó? BTW: Câu cuối cùng xuất hiện như một chút đòi hỏi.
BradHards

Không. Đường viền không đều. Một chiết xuất bằng mặt nạ hoặc smth như thế sẽ không lý tưởng, tôi nghĩ vậy. NB: câu cuối sửa đổi, bạn đã đúng.
DJack

Câu trả lời:


7

tạo một lớp đa giác mới, vẽ một đa giác duy nhất bao gồm tất cả các đa giác hiện tại của bạn, sau đó cắt đa giác mới được vẽ dựa trên tất cả các đa giác hiện có của bạn, sau đó chọn tất cả các đa giác từ tập hợp hiện tại của bạn chia sẻ một đoạn đường với đa giác mới được vẽ bằng cách chọn theo địa điểm và bạn đã hoàn thành


--- Phiên bản chỉnh sửa hiệu quả hơn nhiều, dựa trên nhận xét ----

Hòa tan tất cả các đa giác thành một, sau đó chọn tất cả các đa giác từ bộ hiện tại của bạn có chung một phân đoạn dòng với đa giác mới được hòa tan bằng cách chọn theo vị trí và bạn đã hoàn tất


2
Được rồi Nhưng thay vì vẽ đa giác, tôi sẽ hòa tan tất cả các đa giác của mình để chỉ có một. Hiệu quả hơn nhiều so với vẽ một. Cám ơn.
DJack

1
Có bạn đúng mà hiệu quả hơn nhiều :)
Hedinn

2

Với r:

ShapeFile.Dissolved<-rgeos::gUnionCascaded(ShapeFile)
x<-rgeos::gRelate(ShapeFile, ShapeFile.Dissolved, byid= TRUE)

Tôi nhận được 3 trường hợp DE-9IM :

table(x)
2FF10F212 2FF11F212 2FF1FF212 
       63      2470    174495  

Mã chuỗi DE-9IM có thể được hiểu như sau:

1) 2FF1FF212: đại diện cho đa giác từ shapefile đầu tiên không cắt đường biên của đa giác của shapefile thứ hai

2) 2FF11F212: đại diện cho đa giác từ shapefile đầu tiên cắt đường biên của đa giác của shapefile thứ hai với một đường

3) 2FF10F212: đại diện cho đa giác từ shapefile đầu tiên cắt đường biên của đa giác của shapefile thứ hai với một điểm

Hai trường hợp cuối cùng là đa giác biên giới của tôi mà tôi đang tìm kiếm. Tôi đã có ID của họ với:

poly.border<-which(x %in% c("2FF10F212","2FF11F212"))

Với Arcmap:

1) Hòa tan (Quản lý dữ liệu) mà không chọn bất kỳ "Dissolve_Field"

2) Chọn theo vị trí. Chọn các tính năng từ "shapefile gốc", lớp Nguồn: "shapefile hòa tan", phương pháp chọn không gian cho các tính năng của lớp đích: chạm vào ranh giới của tính năng lớp nguồn.

3) Bắt đầu chỉnh sửa và xóa các tính năng đã chọn

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.