You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 09:01:12