Cara mudah untuk mendeteksi / memilih poligon pembatas dari sebuah shapefile

8

Saya mencari cara sederhana untuk mendeteksi / memilih poligon pembatas suatu shapefile. Border poligon di sini adalah poligon yang tidak sepenuhnya dikelilingi oleh poligon lain yaitu poligon yang terletak di pinggiran shapefile (sejauh mana shapefile seluruhnya ditutupi oleh poligon). Pada contoh di bawah ini, poligon yang diinginkan berbayang:

poligon pembatas

Solusi menggunakan Arcgis, QGIS, R, Python dipersilahkan.

DJack
sumber
1
Apakah perbatasan selalu bentuk yang bagus seperti persegi panjang itu? BTW: Kalimat terakhir itu sedikit menuntut.
BradHards
Nggak. Perbatasan tidak teratur. Ekstrak dengan topeng atau wajah seperti itu tidak akan ideal, saya pikir. NB: kalimat terakhir diubah, Anda benar.
DJack

Jawaban:

7

buat layer poligon baru, gambar poligon tunggal yang mencakup semua poligon Anda saat ini, kemudian potong poligon yang baru ditarik berdasarkan semua poligon yang ada, lalu pilih semua poligon dari set Anda saat ini yang berbagi segmen garis dengan poligon yang baru ditarik menggunakan pilih berdasarkan lokasi dan Anda selesai


--- Versi yang diedit jauh lebih efisien, berdasarkan komentar ----

Larutkan semua poligon menjadi satu, lalu pilih semua poligon dari set Anda saat ini yang berbagi segmen garis dengan poligon yang baru larut menggunakan pilih berdasarkan lokasi dan Anda selesai

Hedinn
sumber
2
Baiklah Tetapi sebagai ganti menggambar poligon, saya akan melarutkan semua poligon saya untuk mendapatkan hanya satu. Jauh lebih efisien daripada menggambar satu. Terima kasih.
DJack
1
Ya, Anda benar, itu jauh lebih efisien :)
Hedinn
2

Dengan R:

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

Saya mendapatkan 3 kasus DE-9IM :

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

Kode string DE-9IM yang dihasilkan dapat diartikan sebagai berikut:

1) 2FF1FF212: mewakili poligon dari shapefile pertama yang tidak memotong batas poligon dari shapefile kedua

2) 2FF11F212: mewakili poligon dari shapefile pertama yang memotong perbatasan poligon dari shapefile kedua dengan garis

3) 2FF10F212: mewakili poligon dari shapefile pertama yang memotong batas poligon dari shapefile kedua dengan sebuah titik

Dua kasus terakhir adalah poligon perbatasan saya yang saya cari. Saya sudah mendapatkan ID mereka dengan:

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

Dengan Arcmap:

1) Larutkan (Manajemen Data) tanpa memilih "Dissolve_Field"

2) Pilih berdasarkan lokasi. Pilih fitur dari "bentuk asli", Lapisan sumber: "bentuk terlarut", Metode pemilihan spasial untuk fitur lapisan target: sentuh batas fitur lapisan sumber.

3) Mulai mengedit dan menghapus fitur yang dipilih

DJack
sumber