8 votos

Extracción de la línea central de un polígono complejo en PostGIS/Python

¿Alguna idea de cómo extraer la línea central del siguiente polígono (Fig1) utilizando funciones de PostGIS o módulos de Python? Estaba intentando Función Voronoi pero eso no es útil para este tipo de forma. Quiero algo como la línea negra de Fig2.

Fig1: Polygon Shape Fig2: Centerline

2 votos

Puede que quieras mirar esta respuesta: gis.stackexchange.com/questions/29863/ Sé que utiliza ArcGIS en su lugar, pero el enfoque puede ser útil.

2 votos

0 votos

@Jakub Estoy tratando de configurar SFCGAL (necesario para la función de esqueleto) a mi ya existente PostGIS db. Aunque he instalado el libSFCGAL.so archivo en /usr/local/lib directorio pero no sabe cómo llevar ST_StriaghtSkeleton() en la base de datos? ¿Alguna idea?

4voto

Joe Puntos 16

Esta puede ser una herramienta incorrecta para ti, pero puedes hacerlo simplemente con OpenJUMP y el plugin Skeletonizer. El plugin se puede descargar de http://sourceforge.net/projects/jump-pilot/files/OpenJUMP_plugins/More%20Plugins/JUMP%20Skeletonizer%20Plugin/

El archivo zip contiene un buen manual. El plugin está pensado para arroyos y masas de agua pero tu polígono me parece un arroyo.

Este es su polígono tal y como lo he digitalizado. Observe los vértices en las líneas centrales de las entradas/salidas.

enter image description here

Puntos de entrada digitalizados en una capa separada. Los puntos deben ajustarse a los vértices del límite del polígono.

enter image description here

Utilice las herramientas del esqueleto y rellene los campos

enter image description here

Obtener el resultado

enter image description here

0 votos

Lamentablemente el archivo jar no contiene ningún manual. ¿Podría guiarme cómo añadir este plugin a mi OpenJump-GUI?

0 votos

Mira dentro de la zip en skeletonizer-1.0 \doc\ debería encontrar el archivo "SkeletonizerUserGuide.doc". La instalación se realiza soltando los archivos jar de skeletonizer-1.0 \lib\ en lib \ext en OpenJUMP.

0 votos

Sin embargo, parece que la mayoría de los jars o las versiones más recientes de los mismos ya están incluidos en OpenJUMP, ya sea en \lib o en \lib\ext. Tal vez sea mejor copiar sólo los que parecen faltar. Es necesario reiniciar después de añadir nuevos frascos.

3voto

Si su polígono es rasterizado, digitalícelo.

Una vez que tu polígono es realmente un polígono :), una primera solución está, como dijo @WhiteboxDev, es el esqueleto recto, pero tiene el problema de que, además de la línea central que quieres, también devuelve un montón de segmentos que irradian desde esa línea hasta el borde de tu polígono. Pero si tienes PostGIS 2.2+, puedes usar ST_ApproximateMedialAxis() en su lugar, que es lo que quieres.

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