我有一个包含数百万个多边形的矢量层,可以连续覆盖。我需要根据它们的形状对其进行分类。我已经在使用景观生态学中的几个形状指标,例如紧密度(4piA / P ^ 2),平均宽度(2A / P),形状编号(P / sqrt(A)),我也看到了计算的圆度/紧凑度的答案多边形?
我的问题是所有这些指标都仅使用面积和周长的某种比率。即使是分形维数索引也仅使用面积和周长(2ln(0.25P)/ ln(A))。但是,如何区分两个具有相同面积和周长但形状完全不同的多边形?像这样的分支多边形A:
我试图以与弯曲的条带B相同的面积和周长进行绘制。我所有已知的索引对于它们都将是相同的。但是对我来说,区分简单的条带(包括弯曲的新月形)和复杂的分支形状非常重要。
我有意将多边形B显示为弯曲的条带,而不是直线的条带,因为我知道相关的外接圆索引可以检测到细长的笔直形状,但是我的多边形也可能具有相同的外接圆。即使我构造凸包并计算面积比Apolygon / Aconvex,在这里也可能非常相似。
那么,如何在矢量数据中自动清晰地区分分支多边形A和多边形B?(将它们转换为栅格将需要非常小的像元大小,巨大的数据集和内存不足,因此这是不可能的)。是否有其他形状索引包含其他参数?理想情况下,该方法不仅可以区分清楚分支的多边形,还可以区分C和D:
我唯一的想法是构造凸包,然后从其凸包中删除多边形,并计算它留下的(大)块的数量(逐个多边形而不是整个图层擦除多边形)。这可能表明边界的复杂性。
我欢迎数学解决方案/算法,以后将在Python中实现。