Pythonとogrを使用してshgiをPostgisにインポートする


13

このヒントを使用してPostgisテーブルをshpにエクスポートするだけ ですが、同じライブラリ(ogr)を使用してshgisをPostgisにインポートすることはできません。何か案が?どうもありがとうf。


1
あなたは本当にそれを行うためにPythonを使用する必要がありますか、それともファイルをインポートしようとしていますか?私はあなたがして、コマンドラインでogr2ogr使用したファイルをインポートしている実行する必要が落ちる ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
ジェシー・クロッカー

回答:


28

純粋なPythonでは、サブプロセスモジュール(os.systemは非推奨)を使用せずに、ogr2ogrまたはを呼び出しますshp2pgsql

1)ogrを使用

2)本Python Geospatial Development(Eric Westra)のogrとpsycopg2の第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.