R terra函数分类创建非常大的文件

R terra function classify create very large files

我有一张来自冰岛 (https://vistgerdakort.ni.is/) 的栖息地分类图,在一个 5m*5m 像素大小的 tif 文件中有 72 类。我想简化一下,这样就只有14个类了。我打开文件(一个 tif 文件和一个包含重新分类规则的文本文件)并在地图的子集上使用 terra 包中的函数分类,如下所示。

raster <- rast("habitat_subset.tif")
reclass_table<-read.table("reclass_habitat.txt")
habitat_simple<-classify(raster, reclass_table, othersNA=TRUE)

它完全符合我的需要,我可以使用

将文件保存回 tif
writeRaster(habitat_simple, "reclass_hab.tif")

问题是我的初始 tif 文件是 105MB,而我新的重分类 tif 文件是 420MB。由于我的目标是对整个国家/地区的范围进行重新分类,因此我无法承受文件变得如此之大。关于如何缩小它的任何见解?我在网上找不到关于这个问题的任何评论。

您可以指定数据类型,在您的情况下,您应该能够使用“INT1U”(即 0 到 254 之间的字节值 --- 255 用于 NA,至少这是默认值)。这应该提供一个比您使用默认“FLT4S”写入时小 4 倍的文件。根据您的问题,原始数据带有该数据类型。另外你可以使用压缩;我不确定他们与“INT1U”的配合情况如何。您可能已经在文档中找到了相关信息,请参阅 ?writeRaster

writeRaster(habitat_simple, "reclass_hab.tif", 
        wopt=list(datatype="INT1U", gdal="COMPRESS=LZW"))

您也可以跳过 writeRaster 步骤并执行(使用 terra >= 1.1-4)您可以执行

habitat_simple <- classify(raster, reclass_table, othersNA=TRUE, 
         datatype="INT1U", gdal="COMPRESS=LZW")