处理多个光栅文件并对其执行单位转换:R

Posted

技术标签:

【中文标题】处理多个光栅文件并对其执行单位转换:R【英文标题】:Handling multiple raster files and executing unit conversions on them: R 【发布时间】:2014-08-26 16:05:57 【问题描述】:

我已经挖掘了很多答案,但找不到任何东西,所以我在这里。

我有一大堆 ascii 光栅文件,对应于 744 小时时间步长的某个区域的气温和露点温度。 (所以我有 744 个空气温度和 744 个露点文件对应于一个 31 天的月份)。这些文件每个只有大约 45 kB。

我想将它们堆叠在一起,以便对它们进行一些分析,并且我还想将它们的单位从 K 转换为 deg F。

文件名 air Tair1.txt, Tair2.txt, ... Tair744.txt 和 Eair1.txt, Eair2.txt, ... Eair744.txt。

使用光栅包,我可以轻松地将所有文件加载为光栅:

for (i in 1:744) 
assign(paste0("Tair",i),raster(paste0("Tair",i,".txt")))
assign(paste0("Eair",i),raster(paste0("Tair",i,".txt")))

我尝试将 ls() 与 pattern 或 glob2rx 一起使用来定义光栅文件名和 然后对它们进行转换,或者做类似的事情将它们加入堆栈,但无济于事。我还尝试了 mget、values(mget(filename)) 之类的方法来获取循环中的值。

我知道 R 不能很好地处理大型数据集,但我认为这些数据集并没有那么大,所以应该有一些非常简单的东西?

我将不胜感激任何帮助和建议!谢谢你。

【问题讨论】:

【参考方案1】:

光栅包的RasterStack 是为此:

library(raster)
files <- paste0("Tair",1:744,".txt")
rs <- stack(files)

为什么你有这些文本格式的文件呢?谁把这场灾难强加给了你?我怀疑您的各个图层的元数据不足,因此请尝试一个,看看是否明智。您可以使用extent(rs) &lt;-projection(rs) &lt;- 来修复:

r <- raster(files[1])
print(r)

不要使用assign(),那只会造成混乱。

【讨论】:

以上是关于处理多个光栅文件并对其执行单位转换:R的主要内容,如果未能解决你的问题,请参考以下文章

在 R 中转换单位

如何将图像尺寸(宽度/高度)转换为毫米?

文件处理

F# 运算符重载用于转换多个不同的度量单位

单位px 转换成 rem

linux笔记4.0