12 votos

¿Cómo convertir tabla PostGIS a Shapefile en Python?

Quiero convertir una tabla de PostGIS en un shapefile (sin utilizar pgsql2shp).

Para crear una geometría en el shapefile que tengo que dar el Xmin, Ymin y Xmax, Ymax, y la geometría que tengo en mi mesa de PostGIS es una forma irregular (puedo conseguir el exterior con la caja pero que incluirá un área adicional más de mi área de ineterest). ¿Es cualquier método por el cual puedo conseguir la tarea que realiza?

Quiero hacer las cosas mediante programación y utilizando Python.

12voto

UberAlex Puntos 1854

Si quieres hacerlo de la programación con Python entonces probablemente GDAL/OGR es la mejor manera de hacerlo. Mira el ejemplo de código de ejemplo de que las copias de la tabla de PostgreSQL en archivo SHP. Ejemplo no es perfecto, pero se puede modificar fácilmente para adaptarse a sus necesidades.

import os
os.environ['PATH'] = "c:\\Program Files\\GDAL\\bin" + ';' + os.environ['PATH']
os.environ['GDAL_DRIVER_PATH'] = "c:\\Program Files\\GDAL\\bin\\gdal\\plugins-optional"
os.environ['GDAL_DATA'] = "c:\\Program Files\\GDAL\\bin\\gdal-data"
import ogr

conn=ogr.Open("PG: host=192.168.5.3 dbname=some_database user=postgres password=xxxx")
if conn is None:
    print 'Could not open a database or GDAL is not correctly installed!'
    sys.exit(1)

output = "d:\\points.shp"

# Schema definition of SHP file
out_driver = ogr.GetDriverByName( 'ESRI Shapefile' )
out_ds = out_driver.CreateDataSource(output)
out_srs = None
out_layer = out_ds.CreateLayer("point", out_srs, ogr.wkbPoint)
fd = ogr.FieldDefn('name',ogr.OFTString)
out_layer.CreateField(fd)


layer = conn.GetLayerByName("point_data")
#layer = conn.ExecuteSQL(sql)

feat = layer.GetNextFeature()
while feat is not None:
    featDef = ogr.Feature(out_layer.GetLayerDefn())
    featDef.SetGeometry(feat.GetGeometryRef())
    featDef.SetField('name',feat.TITLE)
    out_layer.CreateFeature(featDef)
    feat.Destroy()
    feat = layer.GetNextFeature()

conn.Destroy()
out_ds.Destroy()

Si su entorno de programación es de Windows, entonces usted puede descargar GDAL/OGR a partir de aquí. Algunos buenos materiales de partida se puede encontrar aquí. Espero que ayude.

1voto

Simon Nickerson Puntos 17147

Me puede asesorar para echar un vistazo a GDAL/OGR biblioteca: http://www.gdal.org/ogr/index.html

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