我想打开光栅文件(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',并且不会将其识别为受支持的数据集名称。
答案 0 :(得分: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])
}
虽然如果栅格太大而你不能同时在内存中保存两个,你会遇到问题。没有更好的问题,很难给你更好的建议。
答案 1 :(得分:5)
要阅读(打开)栅格,一种方法是使用readGDAL
:
library(rgdal)
r <- readGDAL("~/myhome/thisdir/IhaveaFile.asc")
这是我个人的偏好,否则使用GDAL.open
或raster
的唯一原因是我的机器没有RAM(+ abit)来处理相关数据集。