使用SpatVector裁剪MODIS LAI栅格数据时错位问题求助
问题描述
需使用SpatVector裁剪多幅MODIS LAI栅格数据,运行下方代码后,裁剪后的栅格与SpatVector无法对齐,推测裁剪未正常执行。尝试过修改MODIS数据的CRS而非矢量的,调整extent、align、snap参数,也试用过sf库,均未解决问题。
library(terra) library(geodata) # 获取SpatVector es <- geodata::gadm(country="ESP", level=1, path=".") catal <- es[es$NAME_1 == "Cataluña", ] # 获取MODIS数据 modis <- terra::rast("see link below") modis <- modis*0.1 # terra::plot(modis) modis_crs <- terra::crs(modis) # 获取MODIS数据的CRS catal_2 <- terra::project(catal, modis_crs) # 将矢量数据投影到MODIS的CRS # terra::crs(catal_2)==terra::crs(modis) # 检查两者CRS是否一致 modis_cr <- terra::crop(modis, catal_2) # 裁剪(未做掩膜) terra::plot(modis_cr) # 绘制裁剪后的MODIS数据 terra::plot(catal_2, add=TRUE, lwd=2) # 叠加绘制转换CRS后的矢量数据
当前结果中两者无法对齐(忽略栅格颜色):
解决方案
- 优化矢量投影方法:MODIS常用正弦曲线投影,执行投影时指定 geodesic 方法提升精度:
catal_2 <- terra::project(catal, modis_crs, method = "geodesic") - 强制裁剪时对齐栅格:裁剪时通过
snap参数让栅格范围向矢量边界对齐:modis_cr <- terra::crop(modis, catal_2, snap = "near") - 校验CRS细节一致性:用
describe=TRUE查看CRS的完整参数,确认投影、基准面等信息完全匹配:terra::crs(modis, describe=TRUE) terra::crs(catal_2, describe=TRUE) - 调整操作顺序:先掩膜后裁剪:先对栅格做矢量掩膜,再裁剪到矢量范围,避免对齐偏差:
modis_masked <- terra::mask(modis, catal_2) modis_cr <- terra::crop(modis_masked, catal_2) - 重置栅格范围:若MODIS数据原始范围存在偏差,先将栅格范围与投影后的矢量范围对齐:
terra::ext(modis) <- terra::ext(catal_2)
内容的提问来源于stack exchange,提问作者Fran
相关产品推荐
相关产品推荐

