Python gdal使用二进制颜色和NaN编写GeoTiff
我正在从一个包含3个值的numpy数组生成一个简单的两类(二进制)geotiff:1、2和NaN。我想用不同的颜色显示geotiff,所以我使用了颜色表。但是,颜色表仅支持Byte或UInt16数据类型,这将把NaN转换为零 有没有一种方法可以编写一个包含带有颜色的NaN的二进制geotiff?谢谢Python gdal使用二进制颜色和NaN编写GeoTiff,python,gdal,geotiff,Python,Gdal,Geotiff,我正在从一个包含3个值的numpy数组生成一个简单的两类(二进制)geotiff:1、2和NaN。我想用不同的颜色显示geotiff,所以我使用了颜色表。但是,颜色表仅支持Byte或UInt16数据类型,这将把NaN转换为零 有没有一种方法可以编写一个包含带有颜色的NaN的二进制geotiff?谢谢 filename = 'test.tif' ds = gdal.Open(filename, gdal.GA_ReadOnly) outfile = 'classify.tif' driver =
filename = 'test.tif'
ds = gdal.Open(filename, gdal.GA_ReadOnly)
outfile = 'classify.tif'
driver = gdal.GetDriverByName("GTiff")
outdata = driver.Create(outfile, cols, rows, 1, gdal.GDT_Byte)
outdata.SetGeoTransform(ds.GetGeoTransform())
outdata.SetProjection(ds.GetProjection())
outband = outdata.GetRasterBand(1)
ct = gdal.ColorTable()
ct.SetColorEntry(1, (0,0,102,255))
ct.SetColorEntry(2, (0,255,255,255))
outband.SetColorTable(ct)
outband.WriteArray(result)
outband.FlushCache()
outdata = None
outband = None
ds = None
字节仅接受8位值,因此不支持NAN。一种解决方案是将NAN转换为8位值(如255)并添加这行代码(在
outband.WriteArray(result)
之前):
创建的数组中的所有255个值现在都将被视为nodata
outband.SetNoDataValue(255)