Chuyển đổi bảng PostGIS thành Shapefile trong Python?


10

Tôi muốn chuyển đổi một bảng PostGIS thành một shapefile (không sử dụng pssql2shp).

Để tạo một hình học trong shapefile, tôi phải cung cấp cho Xmin, Ymin và Xmax, Ymax và hình học mà tôi có trong bảng PostGIS của mình là một hình dạng không đều (tôi có thể lấy bên ngoài bằng hộp giới hạn nhưng sẽ bao gồm một số khu vực thêm nhiều hơn khu vực của tôi ineterest). Có phương pháp nào để tôi có thể hoàn thành nhiệm vụ không?

Tôi muốn làm điều đó theo chương trình và sử dụng Python.

Câu trả lời:


12

Nếu bạn muốn làm điều đó bằng lập trình với Python thì có lẽ GDAL / OGR là cách tốt nhất để làm điều đó. Nhìn vào mã ví dụ mẫu sao chép trên bảng từ PostgreSQL vào tệp SHP. Ví dụ không hoàn hảo nhưng bạn có thể dễ dàng sửa đổi nó để phù hợp với nhu cầu của bạn.

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()

Nếu môi trường lập trình của bạn là Windows, thì bạn có thể tải xuống GDAL / OGR từ đây . Một số tài liệu khởi đầu tốt bạn có thể tìm thấy ở đây . Hy vọng nó giúp.


1

Tôi có thể khuyên bạn hãy xem thư viện GDAL / OGR: http://www.gdal.org/ogr/index.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.