Nhập shp vào Postgis bằng Python và ogr


13

Tôi chỉ xuất Bảng Postgis sang shp bằng mẹo này nhưng tôi không thể nhập shp sang Postgis bằng cùng một thư viện (ogr). Bất kỳ ý tưởng? Cảm ơn rất nhiều f.


1
Bạn có thực sự cần sử dụng python để làm điều đó, hoặc bạn chỉ đang cố gắng nhập tệp? Tôi rơi bạn cần làm là nhập tệp sau đó sử dụng ogr2ogr trên dòng lệnh ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
Jesse Crocker

Câu trả lời:


28

Trong tinh khiết Python, mà không sử dụng các mô-đun subprocess (os.system bị phản đối) để gọi ogr2ogrhoặc shp2pgsql, ví dụ):

1) với ogr

2) với ogr và psycopg2 từ cuốn sách Python Geospatial Development (Eric Westra), Chương 7, tr.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) với psycopg2 chỉ

4) với psycopg2 và các thư viện không gian khác

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.