如何使用R获取单波段光栅的RGBA颜色表?

如何使用R获取单波段光栅的RGBA颜色表?,r,raster,geotiff,R,Raster,Geotiff,这是一个名为的光栅文件 使用R,我可以得到如下颜色表: my.raster <- raster( "/path/to/singleband-raster.tif" ) colortable( my.raster ) 这没关系,但我想得到的是RGBA(红、绿、蓝、阿尔法)值,而不是RGB值。因为光栅文件也有alpha值,应该是这样的: [1] "#FFFFFF00" "#969696FF" "#FA00FFFF&quo

这是一个名为的光栅文件

使用R,我可以得到如下颜色表:

my.raster <- raster( "/path/to/singleband-raster.tif" )
colortable( my.raster ) 
这没关系,但我想得到的是RGBA(红、绿、蓝、阿尔法)值,而不是RGB值。因为光栅文件也有alpha值,应该是这样的:

[1] "#FFFFFF00" "#969696FF" "#FA00FFFF" "#F200FFFF" "#E600FFFF"
可以通过命令行中的GDAL工具检查alpha值,如下所示:

my.raster <- raster( "/path/to/singleband-raster.tif" )
colortable( my.raster ) 
gdalinfo/path/to/singleband-graster.tif
如何使用R获取单波段光栅的RGBA颜色表?

这说明

TIFF格式仅支持调色板/颜色的R、G、B组件 桌子。因此,在写入alpha信息时,将保持静默 丢弃

(因此,在阅读时不可用)

在这种情况下(文件中没有alpha),GDAL似乎将alpha值0指定给NA标志,将255指定给所有其他值<代码>光栅::颜色表不显示该值。但是有了(版本0.9-1)的开发版本,您就可以得到您想要的东西

library(terra)
x <- rast("singleband-raster.tif")
ct <- cols(x)[[1]]

head(ct)
#  red green blue alpha
#1 255   255  255     0
#2 150   150  150   255
#3 250     0  255   255
#4 242     0  255   255
#5 230     0  255   255
#6 222     0  255   255
 
cols <- rgb(ct[,1], ct[,2], ct[,3], ct[,4], maxColorValue=255)
head(cols)
#[1] "#FFFFFF00" "#969696FF" "#FA00FFFF" "#F200FFFF" "#E600FFFF" "#DE00FFFF"
 
图书馆(terra)

x,谢谢你的信息。然而,格达尔的那句话让我非常困惑。通过使用它们,它可以从TIFF中检索正确的alpha值。因此,我没有得到TIFF格式仅支持R、G、B的部分,可能是一个4层(带)TIFF文件(即不使用颜色表)?Robert,它只有1个带。我已经在问题中附加了TIFF文件以供参考。我认为在本例中,NA的alpha值为0,所有其他值的alpha值为255。GDAL分配这些,因为它们不在文件.Aw中!我懂了。它仅被视为
0
255
的布尔值?这是有道理的。