12345678910111213141516171819202122232425262728293031323334353637383940 |
- from osgeo import gdal, osr, ogr
- # 设置数据库连接信息
- pg_connection_string = "PG:host=localhost dbname=webgistest user=postgres password=postgres"
- # 加载栅格数据
- raster_dataset = gdal.Open('D:\gisdata\HEBEI\HebeiDEM.tif')
- # 创建PostGIS层
- postgis_driver = ogr.GetDriverByName('PostgreSQL')
- if postgis_driver is None:
- print("PostGIS 驱动未找到,请确保已安装。")
- exit(1)
- # 打开或创建 PostGIS 图层
- postgis_layer = postgis_driver.Open(pg_connection_string, update=1)
- if postgis_layer is None:
- print("无法连接到 PostGIS 数据库。")
- exit(1)
- # 设置空间参考
- srs = osr.SpatialReference()
- srs.ImportFromWkt(raster_dataset.GetProjectionRef())
- # 创建图层
- layer_name = 'your_layer_name'
- postgis_layer = postgis_layer.CreateLayer(layer_name, srs=srs, geom_type=ogr.wkbPolygon)
- # 添加属性
- # geom_field = ogr.FieldDefn('geom', ogr.OFTString)
- # geom_field.SetWidth(254) # 设置宽度
- # postgis_layer.CreateField(geom_field)
- # 设置栅格到 PostGIS
- gdal.RasterizeLayer(postgis_layer, [1], raster_dataset.GetLayer(), burnValues=[1])
- # 关闭资源
- raster_dataset = None
- postgis_layer = None
- postgis_driver = None
|