Raster.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from osgeo import gdal, osr, ogr
  2. # 设置数据库连接信息
  3. pg_connection_string = "PG:host=localhost dbname=webgistest user=postgres password=postgres"
  4. # 加载栅格数据
  5. raster_dataset = gdal.Open('D:\gisdata\HEBEI\HebeiDEM.tif')
  6. # 创建PostGIS层
  7. postgis_driver = ogr.GetDriverByName('PostgreSQL')
  8. if postgis_driver is None:
  9. print("PostGIS 驱动未找到,请确保已安装。")
  10. exit(1)
  11. # 打开或创建 PostGIS 图层
  12. postgis_layer = postgis_driver.Open(pg_connection_string, update=1)
  13. if postgis_layer is None:
  14. print("无法连接到 PostGIS 数据库。")
  15. exit(1)
  16. # 设置空间参考
  17. srs = osr.SpatialReference()
  18. srs.ImportFromWkt(raster_dataset.GetProjectionRef())
  19. # 创建图层
  20. layer_name = 'your_layer_name'
  21. postgis_layer = postgis_layer.CreateLayer(layer_name, srs=srs, geom_type=ogr.wkbPolygon)
  22. # 添加属性
  23. # geom_field = ogr.FieldDefn('geom', ogr.OFTString)
  24. # geom_field.SetWidth(254) # 设置宽度
  25. # postgis_layer.CreateField(geom_field)
  26. # 设置栅格到 PostGIS
  27. gdal.RasterizeLayer(postgis_layer, [1], raster_dataset.GetLayer(), burnValues=[1])
  28. # 关闭资源
  29. raster_dataset = None
  30. postgis_layer = None
  31. postgis_driver = None