Python ve ogr kullanarak shp'yi Postgis'e aktar


14

Ben sadece bu ipuçlarını kullanarak shp için bir Postgis Tablo verme ama aynı kütüphane (ogr) kullanarak Postgis bir shp almak mümkün değil. Herhangi bir fikir? Çok teşekkürler f.


1
Bunu yapmak için gerçekten python kullanmanız mı gerekiyor yoksa dosyayı almaya mı çalışıyorsunuz? Yapmanız gereken düşmek dosyayı almak sonra komut satırında ogr2ogr kullanın ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
Jesse Crocker

Yanıtlar:


29

Saf Python'da, aramak için alt işlem modülünü (os.system kullanımdan kaldırılmıştır) kullanmadan ogr2ogrveya shp2pgsqlörneğin):

1) ogr ile

2) Python Geospatial Development (Eric Westra ) kitabından ogr ve psycopg2 ile , Bölüm 7, s.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) sadece psycopg2 ile

4) psycopg2 ve diğer uzamsal kütüphanelerle

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.