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

在R中使用terra重投影栅格时,如何保持全局值总和不变?

解决栅格重投影时全局总和保持不变的问题

问题核心在于:WGS84(地理坐标系)的像素面积随纬度变化,直接用method="sum"投影时,没有考虑原始像素的实际面积权重,导致总和失真。正确的做法是先将原始栅格转换为单位面积的数值,再进行投影求和,具体步骤如下:

步骤说明

  • 计算原始栅格(r2)每个像素的实际地表面积
  • 将r2的数值转换为"单位面积"量(比如每平方米的数值)
  • 投影到目标栅格(r1)的CRS和分辨率,使用method="sum"
  • 验证全局总和是否一致

示例代码

library(terra)

# 假设r1是目标栅格(World Mollweide,10km分辨率),r2是原始栅格(WGS84,0.1度)

# 1. 计算r2每个像素的实际面积(单位:平方米)
r2_area <- cellSize(r2, unit = "m")

# 2. 将r2的值转换为单位面积的数值(原数值 / 像素面积)
# 注:如果原r2的数值本身就是"单位面积"量(如密度),则跳过此步
r2_per_m2 <- r2 / r2_area

# 3. 投影到r1的CRS和分辨率,使用sum方法
# 此时sum的结果是:单位面积值 × 新像素覆盖的总面积 → 即新像素的总量
r2_moll <- project(r2_per_m2, r1, method = "sum")

# 4. 验证总和
sum_before <- global(r2, "sum", na.rm = TRUE)
sum_after <- global(r2_moll, "sum", na.rm = TRUE)

# 查看结果,两者应基本一致(误差来自投影精度)
sum_before
sum_after

关键原理

  • WGS84下的0.1度像素,赤道附近的面积远大于高纬度地区,直接相加不同纬度的像素值会导致权重失衡。
  • 转换为单位面积数值后,投影求和时,新像素的总和等价于原始重叠区域的总量,从而保证全局总和不变。

内容的提问来源于stack exchange,提问作者Antonio de Rosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:27:37