Membagi poligon menjadi ukuran tertentu menggunakan ArcGIS Desktop?


26

Saya memiliki beberapa ribu poligon yang bentuknya tidak beraturan dalam sebuah shapefile. Saya ingin dapat membagi setiap poligon menjadi tiga area, dan untuk menentukan berapa ukuran area tersebut (jumlah mereka dengan total area sebelumnya). Tidak masalah apa bentuk sub-poligon, karena ini untuk tujuan visualisasi.

Bagaimana saya bisa melakukan ini? Apakah ada algoritma standar yang ada yang dapat saya gunakan?


Satu pendekatan yang saya pertimbangkan adalah untuk mendapatkan semua poin yang membentuk poligon. Kemudian, saya akan menggabungkan dua secara acak bersama-sama menggunakan garis lurus, membagi poligon, lalu memeriksa apakah daerah itu dalam toleransi yang memuaskan. Jika terlalu kecil, saya akan mengubah titik dalam satu arah; jika terlalu besar, saya akan berubah ke titik yang berlawanan.

Jawaban:


34

Masalah ini memiliki banyak solusi yang valid. Salah satunya bekerja sedikit seperti deskripsi Anda, tetapi alih-alih mengiris poligon di lokasi "acak" Anda dapat melakukannya dengan sengaja dengan cara yang dirancang untuk meminimalkan jumlah perhitungan.

Berikut adalah algoritma dasar. Inputnya terdiri dari setiap arah sapuan bidang, P poligon dari area bukan nol, area target a antara nol dan area poligon, dan ambang batas nonnegatif t (dalam unit area). Tujuannya adalah untuk perpecahan P dengan tegak lurus garis ke arah menyapu menjadi dua bagian, satu di sebelah kanan garis dan yang lainnya ke kiri dari garis, sehingga perbedaan antara daerah sebelah kanan dan area target yang ada lebih besar dari t .

Biarkan L menjadi garis berorientasi apa pun yang tegak lurus terhadap arah sapuan. Tentukan f (L) sebagai area P yang ditemukan di sebelah kanan L, minus a . Dalam istilah-istilah ini tugasnya adalah menemukan nol dari f . Karena f tidak mungkin dapat dibedakan, tetapi kontinu, gunakan salah satu metode pembagian dua bagian , metode garis potong , atau - favorit saya- -Metode bos . Semua sederhana dan dijamin akan menyatu. Gunakan t untuk toleransi konvergensi untuk argumen.

Itu dia. Mari kita pertimbangkan apa yang masuk ke pengkodean ini. Temuan root bersifat rutin - Anda dapat menggunakan potongan kode umum untuknya - sehingga pekerjaan GIS diturunkan ke pengkodean f . Untuk itu diperlukan

1.  Splitting the polygon by a line.
2.  Computing the area of the piece(s) to the right of the line.

Kedua operasi diimplementasikan di hampir semua GIS berbasis vektor. Jika tidak, Anda dapat mengganti garis dengan persegi panjang yang sangat besar yang mewakili setengah bidang di sebelah kanan garis. Langkah 1 menjadi

1'. Clip the polygon to the rectangle.

Itu adalah operasi yang sangat mendasar.

Untuk memulai dengan pencarian root, Anda perlu menemukan interval di mana nol f dijamin terletak. Ini mudah: proyeksikan amplop poligon ("kotak pembatas") ke arah sapuan garis. Proyeksi adalah interval yang Anda inginkan.

Pertanyaan ini memiliki sejarah panjang. Saya menerapkan algoritma ini untuk ArcView 3.x sejak lama dan menggambarkannya berkali-kali di forum pengguna ESRI lama. Google

huber split situs poligon: forums.esri.com

untuk diskusi, tautan ke kode, perangkat tambahan dan variasi (seperti membelah poligon menjadi bagian-bagian dengan ukuran yang diinginkan yang sekompak mungkin) dan algoritma untuk data raster.

Berikut adalah seperti apa bentuk negara bagian AS (dalam proyeksi luas yang sama) dengan sepertiga bagian bawah setiap negara yang dinaungi. Jelas arah sapuannya vertikal.

teks alternatif


6

Ada alat siap pakai yang disebut ET Spatial "GeoTools". Di mana ada alat yang disebut "ET Miscellaneous". Dalam alat ini ada dua jenis cara untuk membagi poligon yaitu. Berdasarkan Persentase dan Menurut Area (beberapa unit misalnya m persegi, hektar, dll.). Alat ini memisahkan poligon dari salah satu sisi yaitu NESW seperti yang ditunjukkan gambar. Saya menggunakan "atas ke bawah" yaitu metode Utara ke Selatan.

Membagi


0

Ada alat baru di ArcGIS Pro 2.3 yang disebut Subdivide Polygon .

Hal ini memungkinkan seseorang untuk membagi / membagi jumlah poligon yang diberikan bagian atau area bagian yang diinginkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.