20 votos

¿Cálculo de la redondez/compacidad de un polígono?

Intento encontrar formas de describir cuantitativamente las formas de varios polígonos. Para mi proyecto, estos polígonos representan lagos, ríos, lagunas y parques. Pueden tener casi cualquier forma. Una métrica fácil es calcular el perímetro frente al área, que en el mejor de los casos es una métrica poco útil. Pero también me gustaría mucho poder decir algo sobre la "redondez" de un polígono. O lo "compacta" que es la forma en un mapa.

La única manera que se me ocurre de hacerlo fácilmente es calcular el área de cada polígono en relación con un cuadro delimitador de ese polígono (que ya tengo). Pero parece una mala solución.

Así que ahora estoy pensando en algo más parecido a esto - tomar el centroide del polígono, añadir una serie de buffers de áreas crecientes (digamos 50%, 100%, 150%), luego comparar cuánto solapamiento hay entre cada buffer y el polígono original. Un círculo perfecto tendrá un solapamiento perfecto al 100%, y puedo usar los buffers del 50% y 150% para juzgar cuánto y en qué se diferencia cada polígono.

Pero incluso eso parece engorroso y una mala solución para lo que probablemente alguien ya haya resuelto mucho mejor.

Como referencia, como mínimo tendré que ser capaz de ver los índices resultantes para la forma de varios polígonos, y ser capaz de hacer una conjetura educada en cuanto a su origen (¿río? ¿embalse con forma dendrítica? ¿lago/lago? ¿parque?).

2 votos

Eche un vistazo al Redondez Artículo Wikipedia para profundizar en el tema. ¿Por qué no crear un búfer alrededor del centroide que tenga exactamente la misma superficie que el polígono y, a continuación, medir la superficie fuera del búfer para crear algún tipo de puntuación? ¿Está tratando de obtener la redondez relativa entre sólo los objetos en este conjunto de datos, o tiene que ser redondez absoluta para que puedan ser comparados con otros polígonos fuera de ese conjunto de datos?

0 votos

Gracias por la respuesta, definitivamente ayuda. Uno de mis problemas es que no basta con comparar áreas: un elipsoide oblongo puede tener el mismo "índice de redondez" que una forma dendrítica utilizando este índice. Tal vez el uso de este índice de redondez en combinación con la relación perímetro/área sea capaz de captar también esas diferencias; no he hecho antes este tipo de análisis, así que tendré que pensarlo. Al final, sólo voy a tener que comparar las formas dentro de un conjunto de datos, pero es bastante grande (1000s de polígonos)

0 votos

Cierto, pero entonces se podrían filtrar esos resultados utilizando la métrica área frente a perímetro para, al menos, ordenar las formas de simples a complejas. Una forma dendrítica tendrá una relación área-perímetro relativamente menor (el círculo perfecto tiene una relación de 1, el cuadrado de 0,5, etc.) ¡Definitivamente, no es un problema fácil! Imagino que habrá que utilizar varias métricas para obtener una "puntuación de redondez" sólida.

26voto

xenny Puntos 670

La compacidad de un objeto puede medirse utilizando la función Prueba Polsby-Popper mediante la determinación de la puntuación Polsby-Popper (PP).

La puntuación PP se determina multiplicando el área del polígono por 4pi y dividiéndolo por el perímetro al cuadrado. De este modo, un círculo tendrá una puntuación de 1 y cualquier otra forma geométrica tendrá una proporción menor.

disco :(4*PI)* PI*R² / 4PI²R²= 1

cuadrado : (4*PI) * C² / 16 * C² = PI/4 ~=0,78

Otro índice útil podría ser la longitud/anchura del rectángulo más pequeño que lo encierra (véase el archivo geometría límite mínima herramienta). Pero en este caso el cuadrado y el círculo son iguales y se ignora la concavidad.

Como última recomendación, si trabajas con perímetro, es útil "suavizar" tu objeto antes de calcular los índices, para evitar el efecto "fractal" (especialmente si tus polígonos provienen de la conversión de ráster a polígono).

0 votos

Esto ayuda, gracias. Mis polígonos no provienen de rásters, pero es un punto excelente que ni siquiera había considerado. Definitivamente lo haré.

1 votos

¿Fuente de las fórmulas?

0 votos

Lo siento, no me acuerdo :-~. Probablemente en un trabajo sobre ecología del paisaje. Lo utilicé por primera vez hace mucho tiempo, y añadí la "normalización" para mayor comodidad.

7voto

JohannesH Puntos 3817

Además de la fórmula de redondez descrita por radouxju en su respuesta y otros como la relación entre el área del polígono y el área de su círculo delimitador mínimo - ST_Area(geom)/(ST_Area(ST_MinimumBoundingCircle(geom)) as rnd_check en PostGIS: A menudo me resulta útil comprobar el número de vértices/puntos de una geometría "sospechosa" ST_NPoints(geom) en PostGIS.

Lo que yo hago es diferente de lo que describes, pero creo que el filtro NPoints ayuda a distinguir entre parcelas (que pueden ser largas y delgadas, por supuesto) y ríos y otros accidentes naturales largos y delgados. Existe la parcela impar larga y delgada que bordea un río, pero la comprobación de anomalías es la razón por la que nos pagan tanto dinero (¡JA!): invariablemente tienen un lado (al menos) que es recto durante una buena parte de la longitud de la característica, así que el trabajo está hecho.

Además, es raro (en mi flujo de trabajo) que no haya algún identificador aspacial que no se pueda utilizar, y en cualquier caso gran parte de mi trabajo está configurado de manera que estamos analizando "delta" (cambios a través del tiempo), así que si los datos en T=0 están limpios y nadie ha introducido "mejoras negativas" para T [0, t-1], entonces delta para un estado entero para T=t|t-1 puede hacerse en medio día.

Montones de puntos en una cosa que es larga y delgada y no tiene ninguna línea que sea... probablemente un río.

Un embalse con forma dendrítica desafiaría sin duda esa conjetura, pero es probable que filtrar por la longitud total de la forma pueda dar resultados si todo el río es un polígono (deberíamos tener tanta suerte) - o encontrar el número de caminos desde el extremo "estrecho" hasta el extremo gordo (el número de ramificaciones).

Lago vs parque... Si me lo permitieran, trataría de hacerlo mediante imágenes aéreas o por satélite: es una chemin Es más fácil utilizar un clasificador tierra/agua cuando se conoce la región que hay que comprobar, que intentar identificar y extraer una región de agua de una imagen en la que no se conoce la ubicación del agua.

También encontré esta respuesta (a otra pregunta) muy útil para discriminar entre rasgos largos y delgados.

4voto

Steve Puntos 1

Me enfrentaba a un problema similar y acabé resolviendo la ecuación de la circunferencia y el área de un círculo para que fueran iguales, así:

2*pi*r = c <=> r = c/2*pi pi*r^2 = a <=> r = sqrt(a/pi)

c/2*pi = sqrt(a/pi) <=>

sqrt(a/pi)

-------------- = 1

c/2*pi

Este índice está entre 0 y 1, donde 1 es un círculo perfecto. No sé si se trata de un método establecido, pero me encantaría saber de alguien que lo haya visto en otra parte.

0 votos

Buen desarrollo a partir de cero. este es el razonamiento de Polby-Popper que mencioné en mi post, excepto que sacaste la raíz cuadrada. básicamente no cambiará la clasificación si sacas la raíz cuadrada (o no)

-1voto

John Kramlich Puntos 286

WhiteBox Tools dispone de un conjunto de herramientas para el cálculo de métricas de forma, consulte el manual aquí . Si es usuario de ArcGIS, las herramientas se exponen en una caja de herramientas fácil de usar que puede descargarse. aquí .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X