Je viens d'exporter une table Postgis vers shp en utilisant ces conseils, mais je ne suis pas en mesure d'importer un shp vers Postgis en utilisant la même bibliothèque (ogr). Une idée? Merci beaucoup f.
Je viens d'exporter une table Postgis vers shp en utilisant ces conseils, mais je ne suis pas en mesure d'importer un shp vers Postgis en utilisant la même bibliothèque (ogr). Une idée? Merci beaucoup f.
Réponses:
En Python pur, sans utiliser le module de sous-processus (os.system est déconseillé) pour appeler ogr2ogr
ou shp2pgsql
, par exemple):
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()
ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME