Milyonlarca çokgen içeren sürekli bir kapsama sahip bir vektör katmanım var. Onları şekillerine göre sınıflandırmam gerekiyor. Zaten kompakt gibi peyzaj ekolojisi birkaç şekil dizinleri kullanıyorum ( 4piA / P ^ 2 ), ortalama genişliği ( 2A / P ), şekil numarası ( P / sqrt (A) ), ben de gördüm bu cevabı için yuvarlaklığı / kompakt hesaplanması çokgen?
Benim sorunum, tüm bu metriklerin sadece bir miktar alan ve çevre kullanmasıdır. Fraktal Boyut indeksi bile sadece alan ve çevre kullanıyor ( 2ln (0.25P) / ln (A) ). Fakat aynı alanı ve çevreyi ancak kesinlikle farklı bir şekli olan iki çokgeni nasıl ayırt edebilirim? Bu dallı çokgen A gibi:
ki eğri şerit B ile aynı alan ve çevre ile çizmeye çalıştım. Tüm bilinen dizinlerim onlar için aynı olacak. Ancak benim için basit şeritleri (yeni ay gibi kavisli olanlar dahil) karmaşık dallı şekillerden ayırmak çok önemlidir.
Çokgen B'yi kasıtlı olarak düz bir şerit olarak değil, kavisli bir şerit olarak gösteririm, çünkü düz uzatılmış şekilleri tespit eden İlgili Çember indeksinin farkındayım, ancak çokgenlerim de aynı dairesel halkalara sahip olabilir. Convex gövdesi inşa edip Apolygon / Aconvex alanlarının bir oranını hesaplasam bile , burada çok benzer olabilir.
Peki, vektör verilerindeki dallı çokgen A'yı çokgen B'den otomatik olarak nasıl ayırt edebilirim ? (Bunları rasterlere dönüştürmek son derece küçük hücre boyutu, muazzam veri kümesi ve hafıza eksikliğini gerektirecektir, bu yüzden mümkün değildir). Diğer parametreleri içeren başka şekil indeksleri var mı? İdeal olarak, yöntem sadece açıkça dallanmış çokgenleri değil, C ve D'yi bile ayırt edecektir:
Benim tek fikrim dışbükey gövde oluşturmak ve daha sonra çokgeni dışbükey gövdesinden silmek ve bıraktığı (büyük) parçaların sayısını saymak (çokgeni çokgene silmek, tüm katmanı değil). Bu sınır karmaşıklığını gösterebilir.
Daha sonra Python'da uygulayacağım matematiksel çözümleri / algoritmaları memnuniyetle karşılıyorum.