如何重新采样栅格捕捉到现有网格?

时间:2013-10-08 08:58:38

标签: r aggregate raster resampling snapping

我想在定义的网格单元格中将栅格从高分辨率重新采样到低分辨率(具有不同的范围)。有没有办法使用现有的栅格文件作为捕捉的输入?

在光栅包中,aggregateresample似乎已足够,但我找不到如何操作。

3 个答案:

答案 0 :(得分:7)

如果在一个投影和分辨率中有光栅,并且需要以不同的特定分辨率和投影输出,则可以使用projectRaster

from参数是您的高分辨率栅格,to参数是您的低分辨率栅格。确保选择正确的聚合方法(即bilinear表示连续数据,ngb(最近邻居)表示分类数据。

require( raster )

#  Projection info
proj1 <- CRS("+proj=laea +lon_0=20 +lat_0=5 +ellps=sphere +unit=km +to_meter=1e3")
proj2 <-  CRS("+proj=longlat +datum=WGS84 +ellps=WGS84")
#  High res raster
r1km <- raster( nrows = 1515 , ncols = 2300 , xmn = -4000 , xmx = -1700 , ymn = -15 , ymx = 1500 , crs = proj1 )

#  Low res raster
r5km <- raster( nrows = 303 , ncols = 460 , xmn = -20 , xmx = -5 , ymn = 4 , ymx = 15 , crs = proj2 )

#  Set some values in high res raster
pts <- rasterToPoints(r1km)
values( r1km ) <-  0.01*pts[,1] + sin(0.02*pi*pts[,2])

#  Reproject using the attributes of the low res raster for output
out <- projectRaster( from = r1km , to = r5km , method = "bilinear" )

#  Plot - extent of second raster doesn't fully cover first so some data is missing
par( mfrow = c(1,2) )
plot( r1km )
plot( out )

enter image description here

如果您的输入和输出数据相同,除了分辨率,您可以使用聚合...

#  If same extent and resolution require use aggregate
r1 <- raster(system.file("external/rlogo.grd", package="raster"))
r5 <- aggregate( r1 , fact = 5 , method = "bilinear" )
par( mfrow = c(1,2) )
plot( r1 )
plot( r5 )

enter image description here

答案 1 :(得分:1)

您可以使用system启动外部命令,并调用gdal_translategdal_warp命令。这当然需要安装gdal实用程序

答案 2 :(得分:1)

此解决方案有效:

system(paste("gdalwarp"
,paste(dir_path,"fileHR.tif",sep="")
,paste(dir_path,"fileLR.tif",sep=""),sep=" "))

其中dir_path是存储文件的目录, fileHR.tif是高分辨率文件, fileLR.tif是低分辨率文件。