Python과 ogr을 사용하여 shp를 Postgis로 가져 오기


14

이 팁을 사용하여 Postgis Table을 shp로 내보내 지만 동일한 라이브러리 (ogr)를 사용하여 Postgis로 shp를 가져올 수 없습니다. 어떤 생각? 고마워요 f.


1
실제로 파이썬을 사용해야합니까, 아니면 파일을 가져 오려고합니까? 파일을 가져온 다음 명령 행에서 ogr2ogr을 사용하면됩니다 ogr2ogr -f "PostgreSQL" PG:”dbname=DBNAME host=localhost" file.shp -nln TABLENAME
Jesse Crocker

답변:


29

순수 파이썬에서, (os.system을가되지 않습니다)를 호출하는 서브 프로세스 모듈을 사용하지 않고 ogr2ogr또는 shp2pgsql예를 들어)

1) ogr와 함께

2) OGR과와 psycopg2 책에서 파이썬 지리 개발 (에릭 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.