Menghitung kebulatan / kekompakan poligon?

13

Saya mencoba menemukan cara untuk menggambarkan bentuk berbagai poligon secara kuantitatif. Untuk proyek saya, poligon ini mewakili danau, sungai, laguna, dan taman. Jadi mereka bisa bentuk apa saja. Salah satu metrik yang mudah adalah menghitung perimeter vs area, yang terbaik hanya metrik yang sedikit berguna. Tapi saya juga sangat ingin bisa mengatakan sesuatu tentang 'kebulatan' poligon. Atau seberapa 'kompak' bentuknya di peta.

Satu-satunya cara saya bisa memikirkan melakukan ini dengan mudah adalah dengan menghitung luas setiap poligon sehubungan dengan kotak pembatas untuk poligon itu (yang sudah saya miliki). Tapi ini sepertinya solusi yang buruk.

Jadi sekarang saya memikirkan sesuatu yang lebih seperti ini - ambil centroid dari poligon, tambahkan serangkaian buffer area yang bertambah (katakanlah 50%, 100%, 150%), kemudian bandingkan berapa banyak tumpang tindih yang ada antara setiap buffer dan poligon asli. Lingkaran yang sempurna akan memiliki tumpang tindih sempurna pada 100%, dan saya dapat menggunakan buffer 50% dan 150% untuk menilai seberapa banyak dan dengan cara apa setiap poligon berbeda.

Tetapi bahkan itu terasa rumit, dan seperti solusi yang buruk untuk apa yang mungkin sudah dipikirkan orang lain jauh lebih baik.

Sebagai referensi, setidaknya saya harus dapat melihat indeks yang dihasilkan untuk bentuk berbagai poligon, dan dapat membuat tebakan yang terpelajar tentang sumbernya (Sungai? Waduk dengan bentuk dendritik? Danau / Laguna? Taman ?)

pengguna25201
sumber
2
Lihat artikel Wikipedia kebulatan untuk berpikir lebih mendalam tentang topik ini. Mengapa tidak membuat buffer di sekitar centroid yang merupakan area yang sama persis dengan poligon, lalu mengukur area di luar buffer untuk membuat beberapa jenis skor? Apakah Anda mencoba untuk mendapatkan kebulatan relatif antara objek-objek hanya dalam dataset ini, atau apakah itu harus kebulatan mutlak sehingga mereka dapat dibandingkan dengan poligon lain di luar dataset itu?
Taylor H.
Terima kasih atas tanggapannya, itu pasti membantu. Salah satu tantangan saya adalah bahwa membandingkan area saja tidak akan cukup - ellipsoid persegi panjang mungkin memiliki 'indeks kebulatan' yang sama dengan bentuk dendritik menggunakan indeks ini. Mungkin menggunakan indeks kebulatan ini dalam kombinasi dengan perimeter / hubungan area akan dapat menangkap perbedaan itu juga, saya belum melakukan analisis semacam ini sebelumnya jadi saya harus memikirkannya. Pada akhirnya, saya hanya perlu membandingkan bentuk dalam satu dataset, tetapi itu cukup besar (1000-an poligon)
user25201
Benar, tetapi kemudian Anda bisa memfilter hasil tersebut menggunakan metrik area vs perimeter untuk setidaknya mengurutkan bentuk dari yang sederhana hingga yang kompleks. Bentuk dendritik akan memiliki rasio area-ke-perimeter yang relatif lebih rendah (lingkaran sempurna memiliki rasio 1, kuadrat memiliki rasio 0,5, dll.) Jelas bukan masalah yang mudah! Anda harus menggunakan beberapa metrik yang saya bayangkan untuk mencapai "skor kebulatan" yang kuat.
Taylor H.
Terima kasih atas masukan Anda - saya pikir dari titik ini saya harus mencoba indeks ini dan melihat hasil seperti apa yang bisa saya kelola. Maka mungkin saya bisa kembali dengan pertanyaan yang lebih banyak informasi untuk bantuan lebih lanjut, jika diperlukan. Saya menghargai waktu Anda!
user25201
Perlu diingat bahwa cincin interior (lubang) dan beberapa bagian akan membuat perbandingan area-v-perimeter tidak berguna. Anda dapat menggunakan hanya cincin eksterior untuk menghasilkan metrik, tetapi nilai bobot dari masing-masing bagian bisa menjadi tantangan.
Vince

Jawaban:

18

Kekompakan suatu objek dapat diukur menggunakan tes Polsby-Popper dengan menentukan skor Polsby-Popper (PP). Skor PP ditentukan dengan mengalikan area poligon dengan 4pi dan membaginya dengan perimeter kuadrat. Dengan menggunakan ini, lingkaran akan memiliki skor 1 dan bentuk geometris lainnya memiliki rasio yang lebih kecil.

disc: (4 * PI) * PI * R² / 4PI²R² = 1

kuadrat: (4 * PI) * C² / 16 * C² = PI / 4 ~ = 0,78

Indeks bermanfaat lainnya bisa menjadi panjang / lebar dari kotak tertutup terkecil (lihat alat geometri pembatas minimum ). Tetapi dalam kasus ini kuadrat dan lingkarannya sama dan cekung diabaikan.

Sebagai rekomendasi terakhir, jika Anda bekerja dengan perimeter, akan berguna untuk "memuluskan" objek Anda sebelum menghitung indeks, untuk menghindari efek "fraktal" (terutama jika poligon Anda berasal dari konversi raster ke poligon)

radouxju
sumber
Ini membantu, terima kasih. Poligon saya tidak berasal dari raster, tetapi itu adalah poin yang sangat bagus yang bahkan belum saya pertimbangkan! Saya pasti akan melakukannya.
user25201
Sumber rumus?
Taylor H.
Maaf, saya tidak ingat: - ~. Mungkin dalam makalah tentang ekologi lanskap. Saya menggunakannya untuk pertama kalinya sejak lama, dan saya menambahkan "normalisasi" untuk kenyamanan yang lebih.
radouxju
3
@Aylor Ini adalah salah satu dari banyak kemungkinan penokohan "kekompakan." Metode umum membandingkan area fitur dengan ukuran tortuosity atau tingkat spasialnya. Langkah-langkah terakhir dapat mencakup tidak hanya perimeter tetapi juga diameter dan ukuran fitur ikatan (seperti kotak batas area minimum, elips batas area minimum, dan circumcircle). Yang lebih eksotis akan mencakup area dari berbagai buffer dan perkiraan dimensi fraktal. Tantangan dalam sebagian besar situasi tidak terletak pada perhitungan langkah-langkah ini tetapi dalam memutuskan mana yang paling relevan dengan aplikasi.
whuber
4

Saya menghadapi masalah yang sama, dan akhirnya menyelesaikan persamaan untuk kedua lingkaran dan luas lingkaran untuk membuat mereka sama satu sama lain seperti:

2 * pi * r = c <=> r = c / 2 * pi pi * r ^ 2 = a <=> r = sqrt (a / pi)

c / 2 * pi = sqrt (a / pi) <=>

sqrt (a / pi)

-------------- = 1

c / 2 * pi

Indeks ini antara 0 dan 1 di mana 1 adalah lingkaran sempurna. Saya tidak tahu apakah ini metode yang mapan, tetapi saya ingin mendengar dari siapa saja yang mungkin melihatnya di tempat lain.

JohanOlsen
sumber
Perkembangan yang bagus dari awal. ini adalah alasan Polby-Popper yang saya sebutkan di posting saya, kecuali bahwa Anda mengambil akar kuadrat. pada dasarnya itu tidak akan mengubah peringkat jika Anda root itu (atau tidak)
radouxju
3

Selain formula kebulatan yang diuraikan oleh radouxju dalam tanggapannya dan yang lain seperti rasio luas poligon dengan luas lingkaran pembatas minimum - ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_checkdi PostGIS: Saya merasa sering membantu untuk memeriksa jumlah simpul / titik dalam suatu geometri 'mencurigakan' - ST_NPoints(geom)di PostGIS.

Hal-hal yang saya lakukan berbeda dari yang Anda gambarkan, tetapi saya menemukan bahwa filter NPoints membantu membedakan antara paket properti (yang sebenarnya bisa panjang dan kurus, tentu saja) dan sungai dan fitur alami panjang-kurus lainnya. Ada paket properti panjang dan kurus yang berbatasan dengan sungai, tetapi memeriksa anomali adalah mengapa kita dibayar mahal (HA!): Mereka selalu memiliki satu sisi (setidaknya) yang lurus untuk sebagian besar dari panjang fitur, jadi pekerjaan sudah selesai.

Juga, sangat jarang (dalam alur kerja saya) bahwa tidak ada beberapa pengidentifikasi aspirasi yang tidak dapat ditanggung, dan dalam banyak kasus banyak pekerjaan saya diatur sehingga kami menganalisis 'delta' (perubahan lintas waktu) jadi jika data pada T = 0 bersih dan tidak ada yang memperkenalkan 'peningkatan negatif' untuk T ∈ [0, t-1], maka delta untuk seluruh keadaan T=t|t-1dapat dilakukan dalam setengah hari.

Banyak poin dalam hal yang panjang dan kurus dan tidak memiliki garis tunggal yang ... mungkin sungai.

Waduk dengan bentuk dendritik tentu akan menantang dugaan itu, tetapi kemungkinan bahwa penyaringan pada keseluruhan panjang bentuk akan menghasilkan hasil jika seluruh sungai adalah satu poligon (kita seharusnya sangat beruntung) - atau temukan jumlah jalur dari 'menyempit' ujung ke ujung gemuk (jumlah cabang).

Danau vs taman ... Saya akan mencoba melakukan itu dengan citra udara / satelit, mengingat pemabuk saya: itu adalah cara yang lebih mudah untuk menggunakan pengklasifikasi tanah / air di mana daerah yang akan diperiksa diketahui, daripada mencoba mengidentifikasi dan mengekstrak wilayah air dari gambar di mana lokasi air tidak diketahui.

Saya juga menemukan jawaban ini (untuk pertanyaan yang berbeda) sangat berguna untuk membedakan antara fitur lama-kurus.

GT
sumber