Ich habe zwei Polygone: Polygon 1 und Polygon 2.
Mit zwei Metriken, Fläche und Umfangslänge, möchte ich quantitativ ausdrücken, dass Polygon 1 einen ungleichmäßigeren / gezackten / unregelmäßigeren Umfang aufweist als Polygon 2.
Jedes Polygon hat die gleiche Umfangslänge, deckt jedoch ganz unterschiedliche Bereiche ab. Um die Unebenheit / Zackigkeit / Unregelmäßigkeit jedes Polygons zu quantifizieren, sollte die Berechnung folgendermaßen aussehen:
area/perimeter
oder
perimeter/area
Ich dachte perimeter/area
, aber dann fand ich diesen Blog-Beitrag, der verwendet area/perimeter
: http://www.r-bloggers.com/measuring-the-gerrymander-with-spatstat/
spatial-statistics
Luciano
quelle
quelle
Antworten:
Schauen Sie sich ein Programm namens FRAGSTATS an ( http://www.umass.edu/landeco/research/fragstats/downloads/fragstats_downloads.html ). Im Abschnitt mit den Patch-Metriken wird der „Fraktale Dimensionsindex“ erwähnt, der in den Notizen als „Fraktaler Dimensionsindex“ aufgeführt wird, da er die Komplexität der Form in einer Reihe von räumlichen Maßstäben (Patch-Größen) widerspiegelt. So überwindet es wie der Formindex (SHAPE) eine der Hauptbeschränkungen des Verhältnisses zwischen geradem Umfang und Fläche als Maß für die Komplexität der Form. “( Http://www.umass.edu/landeco/research/fragstats/documents) /Metrics/Shape%20Metrics/Metrics/P9%20-%20FRAC.htm ).
quelle
Das Verhältnis von Fläche zu Umfang bedeutet nicht viel, ein Quadrat und ein Rechteck würden wahrscheinlich gleich gezackt sein, aber sie könnten den gleichen Umfang haben und je weiter vom Quadrat entfernt das Rechteck ist, desto geringer ist die Fläche.
Um die "Zackigkeit" zu berechnen, muss man wissen, wie viele der Scheitelpunkte einen Winkel von mehr als 180 Grad haben. Dies sollte nicht zu schwer zu berechnen sein, wenn Sie einen Geometriespeicher verwenden, bei dem die Drehrichtung des Polygons bekannt ist (normalerweise gegen den Uhrzeigersinn; in diesem Fall überschreitet der Winkel bei Punkt 3 180 Grad, wenn Sie von Punkt 1 nach Punkt 2 gehen befindet sich rechts von der Linie, die durch die Punkte 1 und 2 definiert ist. Andernfalls müssen Sie zuerst die Rotation bestimmen.
quelle
Versuchen Sie es mit dem Normalized Perimeter Index ( http://clear.uconn.edu/tools/Shape_Metrics/ ). Der normalisierte Umfangsindex verwendet den Kreis mit der gleichen Fläche, um die Metrik zu normalisieren. Somit ist die Formel effektiv (in Python Mathe importieren)
normPeriIndex = (2*math.sqrt(math.pi*Area))/perimeter
Für Ihr Beispiel:
Polygon 1: Normalisierter Umfangsindex = 0,358
Polygon 2: Normalisierter Umfangsindex = 0,947
Der normalisierte Umfangsindex vergleicht den eingegebenen Umfang mit dem kompaktesten Polygon mit derselben Fläche (Kreis mit gleicher Fläche), sodass Sie damit Features mit unregelmäßigen Grenzen identifizieren können. Die andere tolle Sache ist, dass es einfach und schnell zu berechnen ist.
Sie können sich auch die normalisierte Streuung ansehen, bei der der durchschnittliche Abstand von Punkten entlang des Umfangs vom Schwerpunkt (Streuung) berechnet wird. Dazu berechnen Sie auch die Abweichung, dh die durchschnittliche Differenz zwischen jedem Abstand und dem Radius des Kreises mit gleicher Fläche. Dann lautet die endgültige Formel (Dispersion - Abweichung) / Dispersion.
quelle