Python-gdal用二进制颜色和NaN编写GeoTiff

时间:2017-08-28 20:49:42

标签: python gdal geotiff

我从numpy数组生成一个简单的两类(二进制)geotiff,其中包含3个值: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

1 个答案:

答案 0 :(得分:1)

字节只接受8位值,因此不支持NaN。一种解决方案是将NaN转换为8位值(如255)并添加此行代码(在follow_up <- function(n=10,rp=5){ donnees <- data.frame(Id=rep(1:n, rep(rp,n)),X=rnorm(n*rp),Y=rnorm(n*rp,4,2)) sfit <- summary(lm(Y~X, donnees)) output <- c(sfit$R.chisq,sfit$coeff[1],sfit$coeff[2]) return(output) } n=c(5,10) rp=c(2,4,6) p=expand.grid(n=n,rp=rp) 之前):

outband.WriteArray(result)

您创建的数组中的所有255个值现在都将被视为nodata。