我想调整栅格大小(在这种情况下放大)以匹配另一个栅格的尺寸。使用disaggregate
我可以放大栅格,但调整大小因子参数只接受整数,因此输出更接近但不匹配目标尺寸。以下示例通过尝试调整ras2
的大小以匹配ras1
维度来说明:
> require(raster)
> ras1 = raster(volcano)
> ras2 = aggregate(raster(apply(volcano, 1, rev)), fact=2, FUN=mean) # aggregated & rotated
> extent(ras1) = extent(ras2) = c(0,100,0,100)
> crs(ras1) = crs(ras2) = '+init=epsg:27700'
> fact = c(ncol(ras1) / ncol(ras2), nrow(ras1) / nrow(ras2))
> ras2_resized = disaggregate(ras2, fact, method='')
> dim(ras2_resized)
[1] 93 44 1
> dim(ras1)
[1] 87 61 1
感激如果有人知道指定调整大小而不是因子的方法。提前谢谢。
一种通用方法的奖励,可以调整任何一种方式而不仅仅是放大,但这不是优先考虑。
答案 0 :(得分:2)
重新采样功能也可用于此:
ras2_resized <- resample(ras2, ras1)
答案 1 :(得分:1)
根据Carl的建议,以下内容对我有用,虽然我确信有更优雅的表述:
> require(akima)
> pts1 = rasterToPoints(ras1)
> pts2 = rasterToPoints(ras2)
> intp = interp(x=pts2[,1], y=pts2[,2], z=pts2[,3], xo=unique(pts1[,1]), yo=unique(pts1[,2]))
> ras2_resized = flip(raster(apply(intp$z, 1, rev)),'y') # flipped and rotated
> dim(ras2_resized)
[1] 87 61 1
> dim(ras1)
[1] 87 61 1