问题描述
这是一个名为singleband-raster.tif
的光栅文件。
使用R,我可以像这样获得颜色表:
my.raster <- raster( "/path/to/singleband-raster.tif" )
colortable( my.raster )
它将为您提供RGB值,如下所示:
[1] "#FFFFFF" "#969696" "#FA00FF" "#F200FF" "#E600FF" # shortened for brevity
这没关系,但是我想得到的是 RGBA (红色,绿色,蓝色,alpha)值,而不只是 RGB 值。因为栅格文件也具有如下的alpha值:
[1] "#FFFFFF00" "#969696FF" "#FA00FFFF" "#F200FFFF" "#E600FFFF"
可以通过GDAL工具在命令行中检查alpha值,如下所示:
gdalinfo /path/to/singleband-raster.tif
如何使用R获取单波段栅格的RGBA色表?
解决方法
这page说
TIFF格式仅支持用于调色板/颜色的R,G,B组件 表。因此,在编写Alpha信息时,它会保持静默 丢弃。
(因此,无法阅读)
在这种情况下(文件中没有alpha),GDAL似乎为NA标志分配了0的alpha值,为所有其他值分配了255。 raster::colortable
没有显示出来。但是使用terra(版本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],3],4],maxColorValue=255)
head(cols)
#[1] "#FFFFFF00" "#969696FF" "#FA00FFFF" "#F200FFFF" "#E600FFFF" "#DE00FFFF"