R- 用较精细的图像重新采样一幅较粗分辨率的光栅图像
R- resampling one coarser resolution raster image with finer one
我有 2 张不同空间分辨率和投影的光栅图像。我想根据一张 4 km 的更精细分辨率图像将多个较粗糙的图像(0.25 度)重新采样到更精细的分辨率(4 km)。
两者在不同的文件夹中。我曾尝试在 R 中编写代码,但出现错误。
>library(raster)
>setwd("D:/mtech project/data/DEC 16/RH/1-DEC-16/extracted/")
>inFiles1 <- list.files(pattern="*.tif")
> nFiles1 <- length(inFiles1)
> setwd("D:/mtech project/data/extracted/")
> inFiles2 <- raster("3DIMG_01DEC2016_0000_L2C_FOG_FOG.tif")
> for (i in 1:nFiles1) {
+ r1<-raster(inFiles1[[i]])
+ r2<-inFiles2
+ rs<-resample(r1,r2,method="bilinear")
+ write.Raster(rs, paste0('D:/mtech project/data/DEC 16/RH/RESAMPLED/rs_',i,'.img'), overwrite=T)
+ }
Error in .local(.Object, ...) :
Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", : Cannot create a RasterLayer object from this file. (file does not exist)
`
如果带循环的函数不起作用,请尝试 运行 第一种情况,不带循环。您收到的错误消息非常清楚。该文件不存在,因为您只有文件名,但没有路径名,并且您更改了目录。
相反,您可以这样做:
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)
我有 2 张不同空间分辨率和投影的光栅图像。我想根据一张 4 km 的更精细分辨率图像将多个较粗糙的图像(0.25 度)重新采样到更精细的分辨率(4 km)。
两者在不同的文件夹中。我曾尝试在 R 中编写代码,但出现错误。
>library(raster)
>setwd("D:/mtech project/data/DEC 16/RH/1-DEC-16/extracted/")
>inFiles1 <- list.files(pattern="*.tif")
> nFiles1 <- length(inFiles1)
> setwd("D:/mtech project/data/extracted/")
> inFiles2 <- raster("3DIMG_01DEC2016_0000_L2C_FOG_FOG.tif")
> for (i in 1:nFiles1) {
+ r1<-raster(inFiles1[[i]])
+ r2<-inFiles2
+ rs<-resample(r1,r2,method="bilinear")
+ write.Raster(rs, paste0('D:/mtech project/data/DEC 16/RH/RESAMPLED/rs_',i,'.img'), overwrite=T)
+ }
Error in .local(.Object, ...) :
Error in .rasterObjectFromFile(x, band = band, objecttype = "RasterLayer", : Cannot create a RasterLayer object from this file. (file does not exist)
`
如果带循环的函数不起作用,请尝试 运行 第一种情况,不带循环。您收到的错误消息非常清楚。该文件不存在,因为您只有文件名,但没有路径名,并且您更改了目录。
相反,您可以这样做:
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)