আমি এই টিপসগুলি ব্যবহার করে কেবল পোস্টপিস টেবিলটি রফতানি করি তবে আমি একই লাইব্রেরি (ওজিআর) ব্যবহার করে পোস্টগ্রিসে কোনও এসপিপি আমদানি করতে পারছি না। কোন ধারণা? অনেক অনেক ধন্যবাদ।
আমি এই টিপসগুলি ব্যবহার করে কেবল পোস্টপিস টেবিলটি রফতানি করি তবে আমি একই লাইব্রেরি (ওজিআর) ব্যবহার করে পোস্টগ্রিসে কোনও এসপিপি আমদানি করতে পারছি না। কোন ধারণা? অনেক অনেক ধন্যবাদ।
উত্তর:
শুদ্ধ পাইথনে, সাবপ্রসেস মডিউলটি ব্যবহার না করে (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