J'ai deux polygones: le polygone 1 et le polygone 2.
En utilisant deux mesures, l'aire et la longueur du périmètre, je veux exprimer quantitativement que le polygone 1 a un périmètre plus irrégulier / irrégulier / irrégulier que le polygone 2.
Chaque polygone a la même longueur de périmètre, mais chacun couvre des zones assez différentes. Pour quantifier les irrégularités / irrégularités / irrégularités de chaque polygone, le calcul devrait-il être:
area/perimeter
ou
perimeter/area
J'ai pensé perimeter/area
, mais j'ai trouvé ce billet de blog qui utilise area/perimeter
: http://www.r-bloggers.com/measuring-the-gerrymander-with-spatstat/
spatial-statistics
luciano
la source
la source
Réponses:
Jetez un œil à un programme appelé FRAGSTATS ( http://www.umass.edu/landeco/research/fragstats/downloads/fragstats_downloads.html ). Dans la section des mesures de patchs, il mentionne «Fractal Dimension Index» dont les notes indiquent que «Fractal dimension index est attrayant car il reflète la complexité de la forme à travers une gamme d'échelles spatiales (tailles de patchs). Ainsi, comme l'indice de forme (SHAPE), il surmonte l'une des principales limitations du rapport périmètre-surface droit en tant que mesure de la complexité de la forme. » ( http://www.umass.edu/landeco/research/fragstats/documents/Metrics/Shape%20Metrics/Metrics/P9%20-%20FRAC.htm ).
la source
La relation entre l'aire et le périmètre ne signifie pas grand-chose, un carré et un rectangle seraient probablement considérés comme ayant des irrégularités égales, mais ils pourraient avoir le même périmètre et plus le carré est éloigné du carré, moins l'aire est grande.
Pour calculer la "dentelure", je pense que vous devez savoir combien de sommets sont à des angles supérieurs à 180 degrés. Cela ne devrait pas être trop difficile à calculer si vous utilisez un magasin de géométrie où le sens de rotation du polygone est connu (généralement dans le sens antihoraire, auquel cas si vous passez du point 1 au point 2, l'angle dépasse 180 degrés si le point 3 est à droite de la ligne définie par les points 1 et 2). Sinon, vous devez d'abord déterminer la rotation.
la source
Essayez l'index de périmètre normalisé ( http://clear.uconn.edu/tools/Shape_Metrics/ ). L'indice de périmètre normalisé utilise le cercle de surface égale pour normaliser la métrique. Ainsi la formule est effectivement (en Python, importation mathématique)
normPeriIndex = (2*math.sqrt(math.pi*Area))/perimeter
Pour votre exemple:
Polygone 1: indice de périmètre normalisé = 0,358
Polygone 2: indice de périmètre normalisé = 0,947
L'indice de périmètre normalisé compare le périmètre d'entrée au polygone le plus compact avec la même zone (cercle de zone égale), ce qui signifie que vous pouvez l'utiliser pour identifier des entités aux limites irrégulières. L'autre grand avantage est qu'il est facile et rapide à calculer.
Vous pouvez également regarder la dispersion normalisée, qui calcule la distance moyenne des points le long du périmètre du centroïde (dispersion). Pour cela, vous devez également calculer l'écart, qui est la différence moyenne entre chaque distance et le rayon du cercle de surface égale, puis la formule finale serait (dispersion - écart) / dispersion.
la source