R-对一幅较细分辨率的光栅图像进行重采样

时间:2018-11-10 05:09:29

标签: r resampling

我有2个具有不同空间分辨率和投影的栅格图像。我想基于一张4 km的较高分辨率图像对多个较粗的图像(0.25度)进行重新采样,以得到更高分辨率(4 km)。

两者都位于不同的文件夹中。我曾尝试用R编写代码,但出现错误。

indx = np.array([1,4,5,8])
indx2 = np.array([3,6,7])
indx3 = np.array([0,2])

samp = {}
samp[0] = indx
samp[1] = indx2
samp[2] = indx3

print(samp)
{0: array([1, 4, 5, 8]), 1: array([3, 6, 7]), 2: array([0, 2])}

d = {value1:key  for key,value in samp.items() for value1 in value}

print(d)
{1: 0, 4: 0, 5: 0, 8: 0, 3: 1, 6: 1, 7: 1, 0: 2, 2: 2}

`

1 个答案:

答案 0 :(得分:0)

如果带有循环的函数不起作用,请尝试在没有循环的情况下针对第一种情况运行它。您收到的错误消息非常清楚。该文件不存在,因为您只有文件名,而没有路径名,并且已更改目录。

相反,您可以这样做:

library(raster)
ff <- list.files("D:/mtech project/data/DEC 16/RH/1-DEC-16/extracted/", pattern="\\.tif$", full.names=TRUE)
n <- length(ff)
r2 <- raster("D:/mtech project/data/extracted/3DIMG_01DEC2016_0000_L2C_FOG_FOG.tif")
for (i in 1:n) {
    r1 <- raster(ff[i])    
    f <- paste0('D:/mtech project/data/DEC 16/RH/RESAMPLED/rs_',i,'.img')
    rs <- resample(r1, r2, method="bilinear", filename=f, overwrite=TRUE)
}

或者完全避免循环并写入单个文件。

s <- stack(inFiles)
f <- 'D:/mtech project/data/DEC 16/RH/RESAMPLED/rs.img')
rs <- resample(s, r2, method="bilinear", filename=f, overwrite=TRUE)