2

我想打开光栅文件(ASCII 或 TIFF 格式),聚合它们的单元格,并在此操作之后计算这个新光栅文件中的值与另一个值之间的相关性。不幸的是,我不知道我的命令出了什么问题 - 我收到一条错误消息:

x <- GDAL.open('~/Pulpit/dods/karol/TVDI 113_121/TVDI_kamp_evi_TRANSF.asc') 

CPL 错误 4: `~/Pulpit/dods/karol/TVDI 113_121/TVDI_kamp_evi_TRANSF.asc' 在文件系统中不存在,并且不被识别为支持的数据集名称。

.local(.Object, ...) 中的错误:`~/Pulpit/dods/karol/TVDI 113_121/TVDI_kamp_evi_TRANSF.asc' 在文件系统中不存在,并且不被识别为支持的数据集名称。

4

2 回答 2

6

如果您在获取文件名时遇到问题,您可以这样做:

my_asc_files = dir("../somepath", pattern="*.asc", recursive=T, full.names=T)
files_I_want = my_asc_files[c(1,12,32,33)]

然后你可以像这样加载你的文件

library(raster)
my_rasters = lapply(files_I_want, raster)

然后你可以这样做:

pairs(my_rasters) 

和这个:

for(i in 1:length(my_rasters)) 
  for(j in i:length(my_rasters))   
    if(i != j) {
      df = na.omit(data.frame(values(my_rasters[[i]]), values(my_rasters[[j]])))
      cor(df[,1], df[,2])
    }

尽管如果栅格太大以至于您无法同时在内存中保存两个栅格,则会遇到问题。如果没有更好的问题,就很难给你更好的建议。

于 2011-04-29T21:48:43.837 回答
5

要读取(打开)栅格,一种方法是使用readGDAL

library(rgdal)
r <- readGDAL("~/myhome/thisdir/IhaveaFile.asc")

这是我个人的偏好,如果我的机器没有 RAM (+abit) 来处理有问题的数据集,那么使用GDAL.openor的唯一原因是。raster

于 2011-04-29T18:37:54.770 回答