问题标签 [terra]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
format - SpatRaster 的原点、分辨率和坐标在使用某些文件格式(并非全部)写入/读取后(略微)修改
在写入然后读取具有某些文件格式(ESRI .hdr 标签格式、netCDF 和 ENVI,但不是 GeoTIFF 或 Erdas HFA)的 SpatRaster 时,光栅原点、分辨率和坐标略有变化。这些参数的相等性测试足以返回 FALSE 值。这是一个例子,GeoTiff 然后是 flt。
这里有三个问题:
. 为什么会发生这样的转变?
. 有没有办法阻止它们?
. 如果没有,阅读后纠正它们的最佳方法是什么?
谢谢。
r - 在 terra 包中读取多个栅格
我正在更改我的空间工作流程以使用 terra 包而不是 raster 包。使用光栅包,我曾经将多个光栅直接读入堆栈。
是否有一种简单的方法可以在 terra 中执行相同的操作?
这是我最初想出的,但它不起作用。我最终得到了 25 个 spatRasters 的列表
r - terra extract() 在 R 中给出 NA 值
我试图通过使用 terra::extract() 来获取地块中的平均 NDVI 值。我注意到来自 terra::extract() 的数据框为我提供了 NA 值(实际上,在 4519 个观察值中,我有 2494 个 NA 值)。我的 NDVI 栅格的空间分辨率约为 0.5 英尺(0.15 米)。下面是我的代码。我也尝试过exactextractr::exact_extract(),但它没有给我与raster::extract() 相同的值。根据我的阅读,exactextractr::exact_extract() 说明了位于多边形内的单元格部分。我想知道哪个更好用,exactextractr::exact_extract() 或 terra::extract()。任何帮助/指导都会很棒!
r - 一个 rast 砖的快速子集化
我有一个多边形列表,我想用它来对terra::rast
砖进行子集化。为此,我使用terra::crop
with lapply
,如下所示,而且速度相当慢。是否有一种矢量化的方式来使用多边形而不是lapply
通过多边形进行子集?
例子
首先,我加载库并创建一个rast
对象。
接下来,我创建了这些对象的砖块。
在这里,我只是在创建大量空间多边形。
最后,我遍历每个多边形并用它来裁剪我的砖块。
问:有没有更快的方法来完成这最后一步?
r - R terra 函数分类创建非常大的文件
我有一张来自冰岛 ( https://vistgerdakort.ni.is/ ) 的栖息地分类图,在 5m*5m 像素大小的 tif 文件中有 72 个类。我想简化它,这样只有 14 个类。我打开文件(一个 tif 文件和一个包含重新分类规则的文本文件)并使用 terra 包中的功能分类如下地图的子集。
它完全符合我的需要,我可以使用将文件保存回 tif
问题是我的初始 tif 文件是 105MB,而我的新重新分类 tif 文件是 420MB。由于我的目标是重新分类国家的整个范围,我不能让文件变得如此之大。关于如何使它更小的任何见解?我在网上找不到与此问题有关的任何评论。
r - 无法使用 terra 包将压缩的 geotiff 写入磁盘
我正在尝试从 Robert Hijmans 的光栅包切换到更新更快的 terra 包,以便在 r 中进行光栅计算。在这样做时,我想出了一个我无法解决的可笑的简单问题。无论我做什么,我都无法获得新的 writeRaster 函数来将 geotiff 写入压缩文件。
这是一个可复制的示例:让我们从头开始制作 2 个栅格:
具有连续值的大型栅格
图书馆(土地)
r <- rast(ncol=1000, nrow=1000, xmin=0, xmax=10, ymin=0, ymax=10)
值(r) <- 1:ncell(r)
具有单个值的大型栅格
r2 <- rast(ncol=1000, nrow=1000, xmin=0, xmax=10, ymin=0, ymax=10)
值(r2) <- 1
无论我是否在新的 writeRaster 函数中指定压缩选项,输出文件都会导致两个栅格的大小完全相同。表示没有应用压缩。
我意识到 gdal 压缩参数没有被考虑,因为我可以将 LZW 字符串替换为任何值,并且仍然可以获得没有压缩且没有错误的光栅输出。
最后,尝试使用较旧的光栅包语法进行保存会产生相同的未压缩结果
知道如何克服这个问题吗?我使用相当大的geotifs并且没有压缩我会立即像香肠一样塞满我的硬盘......
r - (函数(类,fdef,mtable)中的错误:无法找到签名“SpatVector”的函数“坐标”的继承方法
从新包 terra 发出的函数“coords”似乎不适用于 SpatRaster,这里是一个简单的例子:
此致
r - 附加大 spatRaster 对象的范围以匹配 spatVector 的范围:计算区域统计数据并消除“范围不重叠错误?”
我只在terra
包上工作。
spatRaster 详细信息:南美洲的碳通量数据 (~500 GB)
spatVector 详细信息:南美洲保护区数据库 (~70 MB)
目标:计算区域统计数据
错误:执行区域统计操作时,范围不重叠。
可能的错误原因: 光栅文件只有陆地范围。然而,多边形延伸到海洋区域,因此具有陆地、海洋和陆地-海洋的组合范围。
问题:是否可以将光栅文件扩展到多边形的范围而不会丢失这么大文件的任何值?有没有有效的方法来解决这类问题?
PS:我是新来的,如果有人发现已经回答了类似的问题,请帮助我。很抱歉,我无法为这个问题制作一个可重现的例子。
r - 使用 for 循环重新采样多个栅格
我正在尝试在列表中的一些栅格上循环重采样函数,以便它们的尺寸、范围和分辨率与列表中的第一个栅格相匹配。但我不断收到以下错误
(function (classes, fdef, mtable) 中的错误:无法为签名 '"list"、"RasterLayer"' 的函数 'resample' 找到继承的方法</p>
下面是我的代码:
我发现了一些类似的线程,但我认为我没有犯同样的错误,所以我不确定解决方案是否会对我有所帮助。您可以提供的任何帮助将不胜感激。
r - 在处理更大的栅格时处理临时目录和工作区的最佳方法是什么?
由于临时文件夹占用了大型工作区,我在远程桌面中引用了 R-help 的解决方案中的文件夹,在我的情况下使用terraOptions
这种方式:
terraOptions(tempdir = "/processing/tmp_terra/")
我裁剪了一个光栅(花了 6 个小时)并将其作为文件名保存LA_crop.tif
到另一个名称不同的文件夹中。我在新会话中加载了保存的栅格:
但是,当我从这里以示例执行类似操作时,它工作正常。
- 我在这里做错了什么?是因为我更改了临时目录吗?
- 有关如何有效处理此问题的任何进一步建议(未来参考)。