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

标签 r large-files terra

我有一张来自冰岛的栖息地分类 map ( https://vistgerdakort.ni.is/ ),其中包含 72 个类,大小为 5m*5m 像素大小的 tif 文件。我想简化一下,只有 14 个类。我打开这些文件(一个 tif 文件和一个包含重新分类规则的文本文件),并在 map 的子集上使用 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")

关于R terra函数分类创建非常大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66560955/

相关文章:

r - 交替组合两个向量

xml - 在 R 中解析 iTunes RSS

c# - 处理非常大的XML文件

algorithm - 置换外部存储器的实用算法

r - 尝试运行并行操作时,terra 包返回错误

debugging - 关于 R 中函数的 "Dynamic/interactive"调试的建议?

r - 如何通过 twitteR 包获取 twitter 用户好友/关注者?

php - 在 PHP 中处理大量非常大的文件

r - Terra R - 使用自定义函数加速栅格数据的聚合()

r - 如何在地形或栅格中执行邻域分析并保持输入的相同 NA 像元?