Импортируйте shp в Postgis, используя Python и ogr

14

Я просто экспортирую таблицу Postgis в shp, используя эти советы, но я не могу импортировать shp в Postgis, используя ту же библиотеку (ogr). Любая идея? Большое спасибо f.

franco_b
источник
1
Вам действительно нужно использовать python, или вы просто пытаетесь импортировать файл? Я упал, вам нужно сделать, это импортировать файл, а затем использовать ogr2ogr в командной строке ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
Джесси Крокер

Ответы:

29

В чистом Python без использования модуля подпроцесса (os.system устарела) для вызова ogr2ogrили shp2pgsql, например):

1) с огр

2) с ogr и psycopg2 из книги Python Geospatial Development (Эрик Вестра), глава 7, с.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) только с psycopg2

4) с psycopg2 и другими пространственными библиотеками

ген
источник