Importiere shp nach Postgis mit Python und Ogr

13

Ich exportiere gerade eine Postgis-Tabelle mit diesen Tipps nach shp, kann aber mit derselben Bibliothek (OGR) keine shp nach Postgis importieren. Irgendeine Idee? Vielen Dank f.

franco_b
quelle
1
Müssen Sie dafür wirklich Python verwenden oder versuchen Sie nur, die Datei zu importieren? Ich falle, Sie müssen nur die Datei importieren und dann ogr2ogr in der Befehlszeile verwenden ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
Jesse Crocker

Antworten:

28

In reinem Python ohne Verwendung des Subprozessmoduls (os.system ist veraltet) zum Aufrufen von ogr2ogroder shp2pgsql(zum Beispiel):

1) mit ogr

2) mit ogr und psycopg2 aus dem Buch Python Geospatial Development (Eric Westra), Kapitel 7, S. 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) mit psycopg2 nur

4) mit psycopg2 und anderen räumlichen Bibliotheken

Gen
quelle