PostGIS tablosunu Python'da Shapefile'e dönüştürme?


10

PostGIS tablosu (pgsql2shp kullanmadan) bir shapefile dönüştürmek istiyorum.

Şekil dosyasında bir geometri oluşturmak için Xmin, Ymin ve Xmax, Ymax'ı vermeliyim ve PostGIS masamda bulunan geometri düzensiz şekilli (dış sınırlayıcı kutu kullanarak alabilirim ama içerecek) bazı ekstra alan benim alanım daha fazla). Görevi tamamlayabileceğim bir yöntem var mı?

Ben bunu programlı ve Python kullanarak yapmak istiyorum.

Yanıtlar:


12

Python ile programlı olarak yapmak istiyorsanız, muhtemelen GDAL / OGR bunu yapmanın en iyi yoludur. Tabloda PostgreSQL'den SHP dosyasına kopyalayan örnek örnek koda bakın. Örnek mükemmel değil, ancak ihtiyaçlarınıza göre kolayca değiştirebilirsiniz.

import os
os.environ['PATH'] = "c:\\Program Files\\GDAL\\bin" + ';' + os.environ['PATH']
os.environ['GDAL_DRIVER_PATH'] = "c:\\Program Files\\GDAL\\bin\\gdal\\plugins-optional"
os.environ['GDAL_DATA'] = "c:\\Program Files\\GDAL\\bin\\gdal-data"
import ogr

conn=ogr.Open("PG: host=192.168.5.3 dbname=some_database user=postgres password=xxxx")
if conn is None:
    print 'Could not open a database or GDAL is not correctly installed!'
    sys.exit(1)

output = "d:\\points.shp"

# Schema definition of SHP file
out_driver = ogr.GetDriverByName( 'ESRI Shapefile' )
out_ds = out_driver.CreateDataSource(output)
out_srs = None
out_layer = out_ds.CreateLayer("point", out_srs, ogr.wkbPoint)
fd = ogr.FieldDefn('name',ogr.OFTString)
out_layer.CreateField(fd)


layer = conn.GetLayerByName("point_data")
#layer = conn.ExecuteSQL(sql)

feat = layer.GetNextFeature()
while feat is not None:
    featDef = ogr.Feature(out_layer.GetLayerDefn())
    featDef.SetGeometry(feat.GetGeometryRef())
    featDef.SetField('name',feat.TITLE)
    out_layer.CreateFeature(featDef)
    feat.Destroy()
    feat = layer.GetNextFeature()

conn.Destroy()
out_ds.Destroy()

Sizin programlama ortamı Windows'u ise, o zaman gelen GDAL / Öğr indirebilirsiniz burada . Burada bulabileceğiniz bazı iyi başlangıç ​​malzemeleri . Umarım yardımcı olur.


1

GDAL / OGR kütüphanesine göz atmanızı tavsiye edebilirim: http://www.gdal.org/ogr/index.html

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.