在我的一个较旧的脚本中,我使用 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)
您可以使用
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