Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python gdal使用二进制颜色和NaN编写GeoTiff_Python_Gdal_Geotiff - Fatal编程技术网

Python gdal使用二进制颜色和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 =

我正在从一个包含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 = 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)