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

时间:2014-08-26 16:05:58

标签: r raster

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

我有一大堆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")))
}

我尝试使用带模式或glob2rx的ls()来定义光栅文件名和 然后对它们进行转换,或做类似的事情将它们加入堆栈中,但无济于事。我还尝试了mget,values(mget(filename))以及类似的东西来获取循环中的值。

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

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

1 个答案:

答案 0 :(得分:0)

光栅包的RasterStack就是为了这个:

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

为什么这些文件有文本格式?是谁给你造成了这场灾难?我怀疑你的各个图层都没有足够的元数据,所以试一试,看看它是否合理。您可以使用extent(rs) <-projection(rs) <-来修复:

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

不要使用只会造成混乱的assign()