1 Star 0 Fork 13

靖老道/python-gdal-test

forked from fungis/python-gdal-test 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
17_栅格转面&面转栅格.py 2.00 KB
一键复制 编辑 原始数据 按行查看 历史
fungis 提交于 2023-06-13 22:06 . 栅格转面&面转栅格
# -*- coding: utf-8 -*-
"""
@File : 17_栅格转面&面转栅格.py
@Author : fungis@163.com
@Time : 2023/06/08 19:41
@notice :
"""
from osgeo import ogr, osr, gdal
def shape_to_raster(shapefile, rasterfile, savefile):
"""
面转栅格TIF
:param shapefile: 文件矢量Shapefile文件
:param rasterfile: 栅格参照文件
:param savefile: 文件输出路径
:return:
"""
data = gdal.Open(rasterfile, gdal.GA_ReadOnly)
x_res = data.RasterXSize
y_res = data.RasterYSize
shape = ogr.Open(shapefile)
layer = shape.GetLayer()
targetDataset = gdal.GetDriverByName('GTiff').Create(savefile, x_res, y_res, 1, gdal.GDT_Float32)
targetDataset.SetGeoTransform(data.GetGeoTransform())
targetDataset.SetProjection(data.GetProjection())
band = targetDataset.GetRasterBand(1)
band.SetNoDataValue(-9999)
band.FlushCache()
gdal.RasterizeLayer(targetDataset, [1, 2, 3], layer)
def raster_to_shape(rasterfile, shapefile):
"""
栅格TIF转面
:param rasterfile: 栅格TIF输入文件
:param shapefile: 文件输出路径-矢量Shapefile文件
:return:
"""
data = gdal.Open(rasterfile, gdal.GA_ReadOnly)
inband = data.GetRasterBand(1)
drv = ogr.GetDriverByName('ESRI Shapefile')
polygon = drv.CreateDataSource(shapefile)
prj = osr.SpatialReference()
prj.ImportFromWkt(data.GetProjection()) ## 使用栅格的投影信息
polygon_layer = polygon.CreateLayer(shapefile, srs=prj, geom_type=ogr.wkbMultiPolygon)
newField = ogr.FieldDefn('Value', ogr.OFTInteger)
polygon_layer.CreateField(newField)
gdal.FPolygonize(inband, None, polygon_layer, 0)
if __name__ == '__main__':
# 输入栅格(不支持map文件)
input_raster = r'G:\pythonCode\env\python-gdal-test\data-use\tif\global\coast_distance.tif'
# 输入要素类
input_shp = r'G:\pythonCode\env\python-gdal-test\demo-time-axis\data-use\shp\Vic_polygon\Basin_boundary.shp'
# 栅格转面
raster_to_shape(input_raster, './results/test.shp')
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/jzhang0767/python-gdal-test.git
git@gitee.com:jzhang0767/python-gdal-test.git
jzhang0767
python-gdal-test
python-gdal-test
master

搜索帮助