为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用GDAL栅格化(python API)按属性指定刻录值?

如何使用GDAL栅格化(python API)按属性指定刻录值?

杨__羊羊 2022-08-25 13:32:25
我正在使用GeoTiff模板将形状文件转换为GeoTiff,同时通过刻录输出值。我想输出的是一个.tif,其中刻录值对应于给定属性的值。我发现这是烧焦到与我的属性字段中的值不对应的奇怪值。以下是我目前拥有的内容:gdal.RasterizeLayer()ATTRIBUTEgdal.RasterizeLayer()    gdalformat = 'GTiff'    datatype = gdal.GDT_Byte    # Open Shapefile    shapefile = ogr.Open(self.filename)    shapefile_layer = shapefile.GetLayer()    # Get projection info from reference image    image = gdal.Open(ref_image, gdal.GA_ReadOnly)    output = gdal.GetDriverByName(gdalformat).Create(output_tif, image.RasterXSize, image.RasterYSize, 1, datatype,                                                     options=['COMPRESS=DEFLATE'])    output.SetProjection(image.GetProjectionRef())    output.SetGeoTransform(image.GetGeoTransform())    # Write data to band 1    band = output.GetRasterBand(1)    band.SetNoDataValue(0)    gdal.RasterizeLayer(output, [1], shapefile_layer, options=['ATTRIBUTE=FCode'])    # Close datasets    band = None    output = None    image = None    shapefile = None    # Build image overviews    subprocess.call("gdaladdo --config COMPRESS_OVERVIEW DEFLATE " + output_tif + " 2 4 8 16 32 64", shell=True)发生的情况是,输出.tif为每个属性正确分配了不同的刻录值,但该值与属性值不对应。例如,输入属性值 FCode=46006 将变为刻录值 182(不清楚为什么!我尝试添加和删除该选项,并添加和删除的“ 3D”选项。不影响输出刻录值。'COMPRESS=DEFLATE'gdal.RasterizeLayer()您可以在此处查看输入形状文件和属性值:输入 .shp以及具有不正确值的输出,如下所示:输出栅格
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

我自己修复了这个问题,将类型更改为.gdal.GDT_Int32



查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号