处理多个光栅文件并对其执行单位转换: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) <-
和projection(rs) <-
来修复:
r <- raster(files[1])
print(r)
不要使用assign()
,那只会造成混乱。
【讨论】:
以上是关于处理多个光栅文件并对其执行单位转换:R的主要内容,如果未能解决你的问题,请参考以下文章