¿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.
¿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.
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.
Puntos de entrada digitalizados en una capa separada. Los puntos deben ajustarse a los vértices del límite del polígono.
Utilice las herramientas del esqueleto y rellene los campos
Obtener el resultado
Lamentablemente el archivo jar no contiene ningún manual. ¿Podría guiarme cómo añadir este plugin a mi OpenJump-GUI?
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.
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.
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 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.
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
Que tal: postgis.net/docs/ST_StraightSkeleton.html ?
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 llevarST_StriaghtSkeleton()
en la base de datos? ¿Alguna idea?0 votos
PostGIS necesita ser compilado con soporte SFCGAL, pero esa es una pregunta diferente y no es algo con lo que estoy muy familiarizado.
0 votos
@Jakub Gracias. De alguna manera he resuelto esta configuración de SFCGAL por mí mismo aquí