Імпортуйте shp в Postgis за допомогою Python та ogr


14

Я просто експортую таблицю Postgis до shp, використовуючи ці поради, але я не в змозі імпортувати shp до Postgis за допомогою тієї ж бібліотеки (ogr). Будь-яка ідея? Велике спасибі f.


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 з книги Геопросторовий розвиток Пітона (Ерік Вестра), глава 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 та іншими просторовими бібліотеками

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.