29 votos

¿Utilizar ogr2ogr para convertir GML a shapefile en Python?

Estoy tratando de convertir un GML a un shapefile de ESRI utilizando la utilidad ogr2ogr en un script de python.

He instalado con éxito el paquete GDAL/OGR a través de osgeo pero ahora estoy luchando para encontrar/entender cualquier detalle sobre la sintaxis para usar ogr2ogr en python.

Después de importar ogr, todo lo que he encontrado es ogr2ogr -f "ESRI Shapefile" output.shp input.gml

¿Cómo puedo usar esto en python? ¿Es tan sencillo como asignar los archivos de entrada y salida?

Todo lo que intento me da errores de sintaxis. Cualquier indicación en la dirección correcta para empezar sería genial.

0 votos

¿Qué errores está recibiendo? y ¿cuál es su versión de GDAL?

41voto

Johnride Puntos 123

Consigue una copia del puerto Python de ogr2ogr, que se distribuye con la descarga del código fuente de GDAL o se puede encontrar aquí: http://svn.osgeo.org/gdal/trunk/gdal/swig/python/samples/ogr2ogr.py

Una vez que lo importes a tu código, puedes usarlo así:

import ogr2ogr

def main():
  #note: main is expecting sys.argv, where the first argument is the script name
  #so, the argument indices in the array need to be offset by 1
  ogr2ogr.main(["","-f", "KML", "out.kml", "data/san_andres_y_providencia_administrative.shp"])

0 votos

Este es el único ejemplo funcional que he visto en algún lugar.

0 votos

No entiendo, ¿cómo debo instalar ogr o GDAL para utilizarlo en lugar de descargar un único archivo py?

5voto

Marc Puntos 230

Probablemente encontrará respuestas mucho mejores que las que yo pueda darle en http://www.gis.usu.edu/~chrisg/python/2009/lectures/ospy_slides1.pdf y http://trac.osgeo.org/gdal/wiki/GdalOgrInPython .

Intenta ahí o en otro tutorial enlazado desde la segunda URL y tal vez haz otra pregunta más específica si estás atascado.

5voto

Antonio Haley Puntos 2588

Lea sobre os.system o os.popen o subproceso . O simplemente usar ogr2ogr y su shell. Incluso cmd.exe (Windows) le permite hacer un bucle sobre los archivos de entrada.

1voto

Una explicación detallada de cómo sustituir el ogr2ogr herramienta de línea de comandos con la API de OGR Python se puede encontrar aquí .

1voto

Denis Nardin Puntos 101

La respuesta de Eric Levine funciona, sin embargo el ogr2ogr.py vinculado está un poco desactualizado (el archivo dice 2013). Por ejemplo, la bandera "-nlt CONVERT_TO_LINEAR" no está implementada.

En lugar de utilizar ogr2ogr (herramienta de línea de comandos) puede utilizar gdal.VectorTranslate() con las mismas opciones de ogr2ogr. Es lo mismo que ogr2ogr sólo que implementado como una librería propia de python (revisa la entrada del blog de Even Rouoalt al respecto aquí ).

En su ejemplo:

from osgeo import gdal

gdal.VectorTranslate(
    'output.shp',
    'input.gml',
    options='-f "ESRI Shapefile"'
)

Encontrará más explicaciones y diferentes sintaxis en esta respuesta

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