Tengo una capa vectorial con millones de polígonos de decisiones de cobertura continua. Necesito clasificar de acuerdo a su forma. Yo ya estoy usando varios de forma que los índices de ecología del paisaje como la compacidad (4piA/P^2), la media de ancho (2A/P), de forma de número (P/sqrt(A)), también vi esta respuesta para el Cálculo de la redondez/compacidad de polígono?
Mi problema es que todas estas métricas son el uso de algunos proporción de área y perímetro solamente. Incluso el índice de Dimensión Fractal está utilizando sólo el área y el perímetro (2ln(0.25 P)/ln(A)). Pero, ¿cómo puedo distinguir dos polígonos con el mismo perímetro y área, pero absolutamente diferente forma? Como esta ramificada el polígono:
lo que traté de dibujar con la misma área y perímetro curvo tira B. Todos mis conocidos índices será el mismo para ellos. Pero para mí es muy importante diferenciar simples tiras (incluyendo curvas como la de la luna nueva) de complejas formas ramificadas.
He querido mostrar el polígono B como una curva de la tira y no una recta tira porque soy consciente de Relacionados con la circunferencia circunscrita índice que detecta directamente alargadas formas, pero mi polígonos pueden tener también el mismo circumcircles. Incluso si construyo Convex hull y calcular un cociente de áreas Apolygon/Aconvex, puede ser muy similar aquí.
Así que, ¿cómo puedo distinguir claramente ramificada polígono Un polígono de B en el vector de datos de forma automática? (La conversión de raster requeriría extremadamente pequeño tamaño de la celda, un enorme conjunto de datos y una falta de memoria, por lo que no es posible). Hay otra forma de índices que incluyen otros parámetros? Idealmente, el método de distinguir no sólo claramente ramificada polígonos, sino incluso C y D:
Mi única idea es construir el convex hull, a continuación, borrar el polígono de convex hull y cuente el número de la (gran) obras de hojas (borrar polígono por polígono y no la totalidad de la capa). Esto podría demostrar la frontera de la complejidad.
Doy la bienvenida a soluciones matemáticas/algoritmos, que me gustaría implementar más adelante en Python.