Tengo dos polígonos: Polígono 1 y Polígono 2.
Usando dos métricas, área y longitud del perímetro, quiero expresar cuantitativamente que el Polígono 1 tiene un perímetro más desigual / irregular / irregular que el Polígono 2.
Cada polígono tiene la misma longitud de perímetro pero cada uno cubre áreas bastante diferentes. Para cuantificar las irregularidades / irregularidades / irregularidades de cada polígono, el cálculo debe ser:
area/perimeter
o
perimeter/area
Pensé perimeter/area
, pero luego encontré esta publicación de blog que usa area/perimeter
: http://www.r-bloggers.com/measuring-the-gerrymander-with-spatstat/
spatial-statistics
luciano
fuente
fuente
Respuestas:
Eche un vistazo a un programa llamado FRAGSTATS ( http://www.umass.edu/landeco/research/fragstats/downloads/fragstats_downloads.html ). En la sección de métricas del parche se menciona el "Índice de dimensión fractal", que según las notas "El índice de dimensión fractal es atractivo porque refleja la complejidad de la forma en un rango de escalas espaciales (tamaños de parche)". Por lo tanto, al igual que el índice de forma (SHAPE), supera una de las principales limitaciones de la relación de área perimetral recta como medida de la complejidad de la forma ". ( http://www.umass.edu/landeco/research/fragstats/documents/Metrics/Shape%20Metrics/Metrics/P9%20-%20FRAC.htm ).
fuente
La relación del área con el perímetro no significa mucho, probablemente se consideraría que un cuadrado y un rectángulo tienen la misma irregularidad, pero podrían tener el mismo perímetro y cuanto más lejos del cuadrado esté el rectángulo, menor será el área.
Para calcular la "irregularidad", creo que necesita saber cuántos vértices tienen ángulos mayores de 180 grados. Esto no debería ser demasiado difícil de calcular si está utilizando una tienda de geometría donde se conoce la dirección de rotación del polígono (generalmente en sentido antihorario, en cuyo caso si va del punto 1 al punto 2, el ángulo excede 180 grados si el punto 3 está a la derecha de la línea definida por los puntos 1 y 2). De lo contrario, primero debe determinar la rotación.
fuente
Pruebe el Índice de perímetro normalizado ( http://clear.uconn.edu/tools/Shape_Metrics/ ). El índice de perímetro normalizado usa el círculo de área igual para normalizar la métrica. Por lo tanto, la fórmula es efectiva (en Python, importar matemáticas)
normPeriIndex = (2*math.sqrt(math.pi*Area))/perimeter
Por su ejemplo:
Polígono 1: Índice de perímetro normalizado = 0.358
Polígono 2: Índice de perímetro normalizado = 0.947
El índice de perímetro normalizado compara el perímetro de entrada con el polígono más compacto con la misma área (círculo de área igual), lo que significa que puede usarlo para identificar entidades con límites irregulares. La otra gran cosa es que es fácil y rápido de calcular.
También puede observar la dispersión normalizada, que calcula la distancia promedio desde puntos a lo largo del perímetro desde el centroide (dispersión). Para esto también calcularía la desviación, que es la diferencia promedio entre cada distancia y el radio del círculo de área igual, luego la fórmula final sería (dispersión - desviación) / dispersión.
fuente