Saya memiliki lapisan vektor dengan jutaan poligon yang membuat cakupan terus menerus. Saya perlu mengklasifikasikan mereka sesuai dengan bentuknya. Saya sudah menggunakan beberapa indeks bentuk dari ekologi lansekap seperti kekompakan ( 4piA / P ^ 2 ), lebar rata-rata ( 2A / P ), jumlah bentuk ( P / sqrt (A) ), saya juga melihat jawaban ini untuk Menghitung kebulatan / kekompakan dari poligon?
Masalah saya adalah bahwa semua metrik ini menggunakan beberapa rasio area dan perimeter saja. Bahkan indeks Dimensi Fraktal hanya menggunakan area dan perimeter ( 2ln (0,25P) / ln (A) ). Tetapi bagaimana saya bisa membedakan dua poligon dengan area dan perimeter yang sama tetapi bentuknya benar-benar berbeda? Seperti poligon bercabang A ini:
yang saya coba gambar dengan area dan perimeter yang sama dengan strip melengkung B. Semua indeks saya yang diketahui akan sama untuk mereka. Tetapi bagi saya itu sangat penting untuk membedakan strip sederhana (termasuk melengkung seperti bulan baru) dari bentuk bercabang yang kompleks.
Saya sengaja menunjukkan poligon B sebagai strip melengkung dan bukan strip lurus karena saya mengetahui indeks Circumcircle Terkait yang mendeteksi bentuk memanjang lurus tetapi poligon saya mungkin juga memiliki circumcircles yang sama. Bahkan jika saya membuat Convex hull dan menghitung rasio area Apolygon / Aconvex , mungkin sangat mirip di sini.
Jadi, bagaimana saya bisa dengan jelas membedakan poligon bercabang dari poligon B dalam data vektor secara otomatis? (Mengubahnya menjadi raster akan membutuhkan ukuran sel yang sangat kecil, kumpulan data yang sangat besar, dan kurangnya memori, sehingga tidak mungkin). Apakah ada indeks bentuk lain yang menyertakan parameter lain? Idealnya, metode ini akan membedakan tidak hanya poligon bercabang dengan jelas tetapi bahkan C dan D:
Satu-satunya ide saya adalah membangun convex hull kemudian menghapus poligon dari convex hull dan menghitung jumlah potongan (besar) yang ditinggalkannya (menghapus poligon dengan poligon dan bukan seluruh layer). Ini bisa menunjukkan kompleksitas perbatasan.
Saya menyambut solusi / algoritma matematika, yang nantinya akan saya implementasikan dengan Python.