【发布时间】:2018-01-22 17:36:53
【问题描述】:
我想将高分辨率栅格重采样为更粗略的分辨率,但要为更粗略的网格单元保留单元的最大值。
由于 R 的 raster 包中的 resample 函数中没有 fun 参数,我整理了一个简单的自定义函数:
resampleCustom <- function(r1, r2) {
resRatio <- as.integer(res(r2) / res(r1))
ret <- aggregate(r1, fact = resRatio, fun = max)
if (!compareRaster(ret, r2, stopiffalse = FALSE)) {
ret <- resample(ret, r2, method = 'bilinear')
}
return(ret)
}
基本上,我使用聚合(可以提供自定义函数)来接近目标栅格,然后使用resample 进行一些最终调整。
我将此应用于表示一种鱼类的预计分布的栅格(其中像元值表示范围从 0 到 1 的适宜性分数),奇怪的是生成的栅格的值大于最大值原始栅格中的值。
library(raster)
# read in species raster and template
sp <- raster('Abalistes_filamentosus.tif')
template <- raster('rasterTemplate.tif')
> sp
class : RasterLayer
dimensions : 360, 720, 259200 (nrow, ncol, ncell)
resolution : 48243.14, 40790.17 (x, y)
extent : -17367530, 17367530, -7342230, 7342230 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs
data source : /Users/pascaltitle/Dropbox/Abalistes_filamentosus.tif
names : Abalistes_filamentosus
values : -5.684342e-14, 1 (min, max)
> template
class : RasterLayer
dimensions : 49, 116, 5684 (nrow, ncol, ncell)
resolution : 3e+05, 3e+05 (x, y)
extent : -17367530, 17432470, -7357770, 7342230 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs
data source : /Users/pascaltitle/Dropbox/rasterTemplate.tif
names : rasterTemplate
values : 1, 1 (min, max)
> resampleCustom(sp, template)
class : RasterLayer
dimensions : 49, 116, 5684 (nrow, ncol, ncell)
resolution : 3e+05, 3e+05 (x, y)
extent : -17367530, 17432470, -7357770, 7342230 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs
data source : in memory
names : Abalistes_filamentosus
values : -0.2061382, 1.206138 (min, max)
最大值是 1.2,但是当双线性方法本质上应该取单元格值的平均值时,这怎么可能呢?我希望生成的栅格的所有值都在原始栅格值的范围内。
【问题讨论】:
-
也许您正在寻找的是使用 method = 'ngb' 重新采样以避免双线性算法的任何外推问题
-
这些是物种存在的栖息地适宜性分数,所以就我的目的而言,如果精细栅格中存在高度适宜的单元格,我希望将其反映在生成的粗略-缩放栅格,这就是为什么我一直在尝试实现一种采用单元格最大值的重采样方法。也许,正如您所建议的,“ngb”适合作为重采样的第二步。
-
相反,这建议您应该使用与您想要聚合到的低分辨率栅格对齐的栅格数据来创建栖息地适宜性评分。