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

为什么terra::cellSize()与raster::area()的栅格像元面积估算结果不同?

问题解答

一、二者返回值不一致的原因

  • raster::area()采用简化近似算法:计算每个像元面积时,仅代入像元中心点的纬度值,先计算该纬度下1度经度对应的地表距离、再乘以1度纬度对应的固定距离,二者乘积作为单个像元的面积。这种算法没有考虑像元南北边界纬度不同带来的经度跨度距离差异,属于快速近似计算。
  • terra::cellSize()/terra::expanse()采用精确球面多边形计算:将每个像元视作由四个顶点坐标围成的球面四边形,基于默认的WGS84椭球参数,直接计算椭球面上该四边形的真实面积,没有做近似简化,计算精度更高。

二、哪个估算结果准确性更高

terra的计算结果准确性更高,你测试的1°×1°区域(北纬42°43°、西经84°83°)的理论真实面积和terra返回的9130.795 km²一致,raster的结果因为近似算法产生了约42 km²的误差,误差量级和栅格覆盖的纬度范围正相关:栅格南北跨度越大,raster::area()的累计误差就越高。

补充建议

如果要更新历史面积估算结果,直接迁移到terra的计算逻辑即可,terra作为raster的官方替代包,核心计算逻辑都经过了rspatial团队的校验,精度和运算效率都优于旧版raster包的实现。


内容的提问来源于stack exchange,提问作者Christopher L. Crawford

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:30:05