R 使用颜色表导出栅格

问题描述 投票:0回答:1

在我的一个较旧的脚本中,我使用 writeGDAL 函数将单波段整数光栅图像导出到磁盘,其中颜色表分配给特定的光栅值。既然rgdal包已经从R中删除了,还有其他方法可以达到同样的效果吗?保存颜色的栅格需要是单个 tif 文件,当在 QGIS 中打开时,它将正确且自动地将颜色分配给特定值。我将非常感谢任何帮助。

下面,我提供了一段之前可以正常工作的代码片段。

r<-readGDAL("my_raster.tif")
writeGDAL(r, "my_new_raster.tif", type="Byte",
   colorTable=c("#00000000","#FF0000","#FFA500","#7FFF00","#006300","#0000ff"),
   catNames=c("class_a",'class_b','class_c','class_d', 'class_e', 'class_e'), mvFlag=0)

我尝试使用带有 r@legend 槽的栅格包来定义值、颜色和名称,例如 r@图例@颜色<-c("#00000000","#FF0000","#FFA500","#7FFF00","#006300","#0000ff") but this information is not retained when exporting with writeRaster: writeRaster(r, "my_new_raster.tif", datatype='INT1U', format="GTiff", overwrite=T)

r colors export raster rgdal
1个回答
0
投票

您可以使用

terra::writeRaster

library(terra)
r <- rast(ncols=3, nrows=2, vals=1:6)
coltab(r) <- data.frame(value=1:6, col=rainbow(6, end=.9))
writeRaster(r, "test.tif", overwrite=TRUE, datatype="INT1U")

x <- rast("test.tif")
coltab(x)[[1]] |> head()
  value red green blue alpha
1     0   0     0    0   255
2     1 255     0    0   255
3     2 235   255    0   255
4     3   0   255   41   255
5     4   0   194  255   255
6     5  82     0  255   255
© www.soinside.com 2019 - 2024. All rights reserved.