Importa shp a Postgis usando Python y ogr

13

Acabo de exportar una tabla de Postgis a shp usando estos consejos pero no puedo importar un shp a Postgis usando la misma biblioteca (ogr). ¿Alguna idea? Muchas gracias f.

    
pregunta franco_b 18.03.2014 - 17:02

1 respuesta

24

En Python puro, sin usar el módulo de subproceso (os.system está en desuso) para llamar a ogr2ogr o shp2pgsql , por ejemplo):

1) con ogr

2) con ogr y psycopg2 del libro Desarrollo geoespacial de Python (Eric Westra), Capítulo 7, p.219

import os.path  
import psycopg2
import osgeo.ogr  
connection = psycopg2.connect("dbname=... user=...")  
cursor = connection.cursor()  
cursor.execute("DELETE FROM countries")  
srcFile = os.path.join("DISTAL-data", "TM_WORLD_BORDERS-0.3","TM_WORLD_BORDERS-0.3.shp")  
shapefile = osgeo.ogr.Open(srcFile)    
layer = shapefile.GetLayer(0)    
for i in range(layer.GetFeatureCount()):  
    feature = layer.GetFeature(i)  
    name = feature.GetField("NAME").decode("Latin-1")  
    wkt = feature.GetGeometryRef().ExportToWkt()  
    cursor.execute("INSERT INTO countries (name,outline) " +"VALUES (%s, ST_GeometryFromText(%s, " +"4326))", (name.encode("utf8"), wkt))  

connection.commit()  

3) sólo con psycopg2

4) con psycopg2 y otras bibliotecas espaciales

respondido por el gene 18.03.2014 - 19:51

Lea otras preguntas en las etiquetas