ฉันเพิ่งส่งออกตาราง Postgis เพื่อ shp โดยใช้ เคล็ดลับนี้ แต่ฉันไม่สามารถนำเข้า shp ไปยัง Postgis โดยใช้ไลบรารีเดียวกัน (ogr) ความคิดใด ๆ ขอบคุณมาก f.
ฉันเพิ่งส่งออกตาราง Postgis เพื่อ shp โดยใช้ เคล็ดลับนี้ แต่ฉันไม่สามารถนำเข้า shp ไปยัง Postgis โดยใช้ไลบรารีเดียวกัน (ogr) ความคิดใด ๆ ขอบคุณมาก f.
คำตอบ:
ใน Pure Python โดยไม่ต้องใช้โมดูลย่อย (os.system จะเลิกใช้) เพื่อโทรogr2ogr
หรือshp2pgsql
ตัวอย่างเช่น:
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