Menghapus hanya lubang donat dari poligon menggunakan ArcGIS Desktop?

15

Saya menggunakan ArcGIS Desktop 10.0.

Saya punya trik untuk menghapus lubang donat, yang mengubah poligon menjadi garis dan kemudian membuat poligon dari garis dan pada akhirnya menggabungkan semuanya. Kelemahan dari strategi ini adalah bahwa dalam menghilangkan lubang lain dan area kosong yang pada kenyataannya kosong dan harus tetap kosong. Lihat gambar di bawah ini:

masukkan deskripsi gambar di sini

Arash
sumber
3
Saya telah memilih untuk membiarkan pertanyaan ini terbuka karena saya percaya OP sedang mencoba untuk menghapus beberapa tetapi tidak semua donat. Dia mencari cara untuk menjaga beberapa dari mereka.
Fezter
Terima kasih! Saya telah menambahkan gambar, saya harap itu menjelaskan segalanya. Saya tidak dapat melanjutkan dan menghapus area yang lebih besar sebelum menggabungkan semuanya karena saya mungkin secara tidak sengaja menghapus poligon utama (yang hijau itu sendiri).
Arash
1
Sangat mirip dengan Cara menghapus poligon "garam & merica" ​​kecil dari lapisan? , tetapi menggunakan proses QGIS. Anda mungkin bisa bekerja dengan proses yang sangat mirip di ArcGIS.
RyanKDalton
Hanya ukuran ambang di atas yang tidak boleh diisi lubang yang mencegahnya menjadi duplikat Pengisian dalam Donat Poligon menggunakan ArcGIS untuk Desktop?
PolyGeo

Jawaban:

23

Saya akan mencoba alat Union dengan NO_GAPS:

NO_GAPS —Fitur akan dibuat untuk area dalam output yang sepenuhnya tertutup oleh poligon. Fitur ini akan memiliki atribut kosong.

Anda kemudian dapat memilih fitur dengan atribut kosong di bawah ukuran ambang dan menghitung atributnya sama dengan poligon asli - atau menyalin / menempelkannya di jendela Atribut Editor.

Fitur dengan atribut kosong di atas ukuran ambang batas harus dihapus.

Dari sana, alat Dissolve harus menyelesaikan pekerjaan.

PolyGeo
sumber
1
bagaimana Anda "menghitung [polong donat baru] sama dengan poligon [berisi] yang asli"? Mereka tidak memiliki nilai atribut yang sama, jadi tidak bisa digabungkan. Bagaimana Pulau Poly C tahu bahwa ia harus memperoleh nilai-nilai attrib baru dari (mengandung) Danau poli A dan mengabaikan (di tempat lain) Danau poli B?
matt wilkie
Saya belum melakukan tes baru-baru ini tetapi "poli donat baru" adalah "poligon asli [yang mengandung]". Jika ada beberapa poligon donat untuk diproses dalam jumlah besar, maka penandaan lubang kecil dengan poligon donat yang mereka masukkan akan diperlukan.
PolyGeo
7

Solusi PolyGeo adalah solusi yang telah saya gunakan dan bekerja dengan baik (+1). Alternatif lain adalah dengan buffer poligon Anda dengan jumlah kecil dan kemudian de-buffer hasilnya dengan jumlah yang sama (katakan + 1m dan kemudian -1m). Ini juga berfungsi dengan baik tetapi membawa risiko kecil bergabung secara tidak sengaja dengan tetangga yang jumlahnya sama dengan buffer Anda. Itu juga dapat meningkatkan jumlah simpul Anda (yang mungkin atau mungkin tidak menjadi masalah).

Anda juga dapat menulis skrip untuk solusi yang kuat dengan mengulangi setiap poligon, membuat poligon sementara berdasarkan cincin interior dan menguji ini untuk area mereka. Jika mereka di bawah ambang Anda, Anda kemudian menghapus cincin interior itu dari geometri dan memperbarui baris Anda. Solusi ini lebih berfungsi daripada solusi PolyGeo atau hack buffer saya di atas tetapi mungkin merupakan pendekatan yang "lebih murni".

MappaGnosis
sumber
5

Anda dapat menggunakan alat "Eliminate Polygon Part" (Alat Manajemen Data -> Generalisasi) di ArcToolbox. Anda dapat menentukan area / persentase lubang minimum untuk dihapus.

Kadir Şahbaz
sumber
1
Fungsi ini membutuhkan tingkat lisensi Advanced / ArcInfo.
Martin
Saya mencoba alat Eliminate Polygon Part, di ArcGIS Pro 2.0. Tapi itu tidak melakukan apa pun pada fitur poligon yang saya uji. Fitur ini memiliki beberapa cincin interior, dan saya ingin semuanya hilang. Apakah alat ini hanya berfungsi jika fitur terdiri dari geometri multi bagian?
Mike Finch
Tidak hanya". Ia juga bekerja dengan satu poligon berlubang.
Kadir Şahbaz
4

Berikut cara lain untuk menghapus danau dari poligon (seperti lapisan peta kode pos dari Navteq). Ini juga berguna untuk membersihkan lapisan peta wilayah yang telah dihasilkan dengan melarutkan lapisan peta kode pos dengan kode wilayah.

  1. Gunakan Geoprocessing "Union" pada layer peta poligon dan hapus kotak centang untuk "Kesenjangan Diizinkan" (yang diperiksa secara default.) Ini menciptakan poligon untuk semua lubang "donat" dalam poligon.
  2. Di lapisan peta Union yang dihasilkan, tambahkan bidang untuk ID, X, dan Y. ID harus terpisah dari nama / ID dari poligon yang memiliki lubang donat yang ingin Anda hapus.
  3. Di tabel atribut, gunakan Kalkulator Bidang untuk menghitung ID dari bidang ObjectID dan gunakan "Hitung Geometri" untuk mengisi nilai X dan Y.
  4. Pisahkan donat poligon dari poligon lain dengan memilih (Pilih berdasarkan Atribut) yang bidang isiannya nol.
  5. Ekspor catatan yang dipilih ke tabel baru. (dropdown opsi tabel -> Ekspor ...)
  6. Gunakan opsi "Tambahkan XY" untuk membuat lapisan acara. (klik kanan layer -> Tampilkan Data XY ....
  7. Ekspor lapisan acara ke kelas fitur baru. (klik kanan layer -> Data -> Ekspor data)
  8. Lakukan penggabungan spasial antara layer titik baru dan layer peta poligon ASLI yang tidak memiliki poligon donat. Gunakan opsi "terdekat" sehingga nama poligon di sekitarnya ditambahkan ke tabel atribut poligon donat.
  9. Gunakan gabungan tabel standar antara layer titik yang digabungkan dan layer peta yang dihasilkan dari Union (berdasarkan bidang ID). (klik kanan layer -> Joins and Relates -> Join -> Join data dari layer lain berdasarkan lokasi spasial)
  10. Gunakan Kalkulator Bidang dalam tabel atribut untuk menghitung nama-nama poligon nol dari lapisan titik yang digabungkan.
  11. Jalankan Geoprocessing "Dissolve" berdasarkan nama poligon untuk menggabungkan poligon donat dengan poligon yang diberi nama lebih besar.

Perhatikan bahwa ini tidak akan memperbaiki masalah sungai yang memotong garis poligon, tetapi hal itu meningkatkan lapisan peta asli dengan menghapus lubang donat bagian dalam.

Susan
sumber
3

Jika poligon di kelas fitur berisi poligon lain di kelas fitur yang sama (mis. Lesotho di Afrika Selatan) dan jika Anda perlu menghilangkan pengeditan manual yang mendukung ModelBuilder, dll., Menggunakan "Eliminate Polygon Part" adalah solusi tercepat. Pengaturan alat:

- "Kondisi (opsional)" = AREA - "Area (opsional)" = angka yang sangat besar (katakanlah, 1e + 100) - "Hilangkan hanya bagian yang mengandung (opsional)" = [dicentang]

Ini akan menghasilkan Afrika Selatan yang memiliki area Lesotho diisi, penting untuk alur kerja seperti menghasilkan simpul untuk digunakan dalam visual Polygon di Tableau.

Membuang
sumber
0

Karena belum disebutkan sejauh ini dan tampaknya menjadi alat yang tepat untuk apa yang ingin Anda capai: Agregat Poligon

Atur minimum_hole_size ke ukuran minimum lubang poligon yang ingin Anda pertahankan. Yang lebih kecil akan dihilangkan.

Nilai minimum_area opsional dalam alat yang sama melakukan hal yang sama untuk bagian poligon yang bukan lubang.

ZZZ
sumber