栅格裁剪至另一栅格范围的操作方法及裁剪失败问题咨询
栅格裁剪对齐解决方案
问题根源
你使用的crop函数参数顺序完全颠倒:crop(x, y)的作用是将**x(待裁剪栅格)裁剪至y(参考范围/栅格)**的范围。你写的crop(slope, distance)是把坡度栅格裁剪为距离栅格的更小范围,完全和你的需求相反,自然解决不了问题。
R语言terra包正确操作步骤
- 第一步:执行正确的裁剪操作,以dem作为参考范围裁剪距离栅格:
# 直接用dem的范围裁剪距离栅格 distance_cropped <- crop(x = distance, y = ext(dem))
- 第二步:如果裁剪后仍存在像元不对齐、行列数不匹配的问题,可使用
resample函数严格对齐参考栅格的像元网格(距离栅格为连续值,可选用双线性插值法;如果是分类值请改为method="near"):
distance_aligned <- resample(x = distance_cropped, y = dem, method = "bilinear")
- 第三步:验证一致性:
# 对比范围 ext(distance_aligned) == ext(dem) # 对比行列数 c(ncol(distance_aligned), nrow(distance_aligned)) == c(ncol(dem), nrow(dem)) # 对比投影 same.crs(distance_aligned, dem)
以上三个判断都返回TRUE即可进行后续的栅格相乘运算。
其他工具的常用操作方式
- ArcGIS:使用【裁剪】工具,输入栅格选择距离栅格,输出范围设置为dem/slope栅格,同时在环境设置中将像元大小、Snap栅格都设置为参考的dem栅格,保证像元完全对齐。
- QGIS:使用【按掩膜层裁剪栅格】工具,输入层选距离栅格,掩膜层选dem栅格;如果需要更严格的对齐,可使用【对齐栅格】工具,参考层设置为dem。
内容的提问来源于stack exchange,提问作者scumbagsurfer
相关产品推荐
相关产品推荐

