Esqueleto de vectores en QGIS / Python


8

Estoy tratando de encontrar una herramienta para crear un esqueleto de un gran conjunto de datos vectoriales usando QGIS y su paquete. Debería ser directamente programable mediante Python o línea de comandos (QGIS, GRASS, OGR, etc. están bien).

El objetivo es un polígono grande y delgado con agujeros que representan áreas de la calle y necesito obtener una aproximación de la red de carreteras a través de la esqueletización.

Lo que encontré hasta ahora:

  • GRASS 7.0 tiene lo v.skeletonque debería ser lo suficientemente bueno, pero no parece estar listo para integrarse con QGIS en el futuro cercano.
  • CGAL tiene esqueletos de esqueleto, por supuesto, pero el soporte de Python es muy pobre.
  • pySkeleton no funciona para mí y probablemente no tenga tiempo para recuperar el código.

Otras alternativas (esqueleto de openJump, este antiguo complemento de ArcGIS ...) no se pueden conectar fácilmente a QGIS / Python.

¿Cualquier otra sugerencia?


44
GRASS 7.0 es "directamente programable mediante Python o línea de comandos", entonces ¿por qué su solución también debe estar tan ligada a QGIS? Además, ¿qué pasa con PostGIS? ¿Cómo se almacenan sus datos?
alphabetasoup

2
Me gustaría publicar la solución como un complemento QGIS directamente utilizable, por lo tanto, me gustaría seguir con la versión GRASS incluida por QGIS.
Jan Šimbera

Respuestas:


6

Este documento "Esqueleto de polígonos usando PostGIS" describe un proceso que utiliza herramientas de PostGIS y GRASS , las cuales pueden ser invocables. Menciona el uso de PostGIS para crear un esqueleto de los vectores y limpiarlo usando PostGIS nuevamente o GRASS.

Existen herramientas existentes de Processing Toolbox que, con suerte, simplifican las cosas cuando se llama desde Python / línea de comandos, tales como:

¡Espero que esto ayude!


¡Gracias! Sin embargo, debo suponer que no está instalado PostGIS ...
Jan Šimbera

@ JanŠimbera - ¡Muy bienvenido amigo y buena suerte! Suena como un problema muy interesante que tienes :)
Joseph

4

Una opción un tanto redonda podría ser utilizar el módulo de esqueleto de cuadrícula de SAGA ( http://www.saga-gis.org/saga_module_doc/2.1.3/imagery_segmentation_1.html ), ya sea a través de QGIS o utilizando la saga_cmdutilidad de línea de comandos. Tendría que convertir su polígono a un ráster SAGA primero.

De lo contrario, según lo indicado por @ Alpha-beta-soup, podría usar v.skeletondesde GRASS en la línea de comando.

Para usar una herramienta de línea de comando y comunicación desde Python, use el subprocessmódulo para pasar la cadena de comando al sistema.


Gracias por la sugerencia. Prefiero no convertirlo en ráster ya que la extensión es grande y necesito el resultado con una buena resolución; Estoy pensando en eso como una opción de último recurso.
Jan Šimbera
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.