นำเข้า shp ไปยัง Postgis โดยใช้ Python และ ogr


14

ฉันเพิ่งส่งออกตาราง Postgis เพื่อ shp โดยใช้ เคล็ดลับนี้ แต่ฉันไม่สามารถนำเข้า shp ไปยัง Postgis โดยใช้ไลบรารีเดียวกัน (ogr) ความคิดใด ๆ ขอบคุณมาก f.


1
คุณต้องการใช้ไพ ธ อนจริงๆหรือคุณแค่พยายามนำเข้าไฟล์หรือไม่? ฉันล้มลงคุณต้องทำคือนำเข้าไฟล์จากนั้นใช้ ogr2ogr ในบรรทัดคำสั่ง ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
Jesse Crocker

คำตอบ:


29

ใน Pure Python โดยไม่ต้องใช้โมดูลย่อย (os.system จะเลิกใช้) เพื่อโทรogr2ogrหรือshp2pgsqlตัวอย่างเช่น:

1) กับ ogr

2) ด้วยogrและpsycopg2จากหนังสือPython Geospatial Development (Eric Westra), ตอนที่ 7, p.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และห้องสมุดอวกาศอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.