我从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
答案 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。