如何将小栅格空间范围扩展至匹配大栅格?terra扩展失败求助
问题:将小栅格空间范围扩展至与大栅格一致(填充0)
问题描述
需将小栅格的空间范围(物理和维度层面)扩展至与大栅格一致,重点扩展小栅格的最北部区域,扩展部分填充为0。尝试过terra包的extend()函数,但返回结果尺寸未发生变化;也试过ArcGIS Pro的栅格计算器,同样无效果。
栅格信息
大栅格(large)
> large class : SpatRaster dimensions : 762, 762, 1 (nrow, ncol, nlyr) resolution : 3100, 3100 (x, y) extent : -3034878, -672677.7, 2022791, 4384991 (xmin, xmax, ymin, ymax) coord. ref. : Canada_Lambert_Conformal_Conic source : Yukon_poly_raster_project.tif name : Yukon_poly_raster_project min value : 0 max value : 127
大栅格图像:覆盖范围更广,包含小栅格未覆盖的北部区域
小栅格(small)
> small class : SpatRaster dimensions : 426, 400, 1 (nrow, ncol, nlyr) resolution : 3096.673, 3098.812 (x, y) extent : -2284678, -1046008, 2551588, 3871682 (xmin, xmax, ymin, ymax) coord. ref. : Canada_Lambert_Conformal_Conic source : FRT_Canada_yukon_ras_1.tif name : FRT_Canada_yukon_ras_1 min value : 3 max value : 11
小栅格图像:范围仅覆盖大栅格中部区域,北部存在空白待扩展区域
已尝试的R代码
library(terra) r = extend(small, large)
解决方案
核心问题是两个栅格分辨率不一致,extend()仅能扩展范围,无法自动匹配分辨率。需先重采样小栅格至大栅格的分辨率,再扩展范围,步骤如下:
- 重采样小栅格,匹配大栅格的分辨率与投影:
library(terra) # 采用最近邻插值(可根据数据类型更换为bilinear等方法) small_resampled <- resample(small, large, method = "near")
- 扩展重采样后的栅格至大栅格范围,填充值设为0:
small_extended <- extend(small_resampled, large, fill = 0)
- 验证结果维度是否匹配:
dim(small_extended) dim(large)
失效原因说明
terra::extend()仅调整空间范围,不改变分辨率。小栅格分辨率(约3097×3099)与大栅格(3100×3100)存在差异,直接扩展无法达到大栅格的762×762行列数。- ArcGIS栅格计算器同理,需先统一分辨率,否则无法匹配目标栅格的维度。
内容的提问来源于stack exchange,提问作者user11384727
相关产品推荐
相关产品推荐

