微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决R terra函数分类创建非常大的文件

我有一张来自冰岛 (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")

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?