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

Turf.js v6.5.0多边形面积计算异常:第二个多边形数值偏差极大

问题根源

Turf.js 的 turf.area() 函数默认将输入坐标解析为WGS84经纬度(单位:度),但你提供的是平面投影坐标(单位:米)——这类坐标数值远超出经纬度的合理范围(经度±180、纬度±90),直接计算会导致面积结果完全失真。

解决方案

使用 Turf.js 提供的 turf.planarArea() 函数,它专门用于计算平面坐标系下的多边形面积,无需转换坐标,直接适配米单位的投影坐标场景。

修正后的代码
const turf = require("@turf/turf");

var polygon1 = turf.polygon([
  [
    [499980.0, 3600000.0],
    [609780.0, 3600000.0],
    [609780.0, 3490200.0],
    [499980.0, 3490200.0],
    [499980.0, 3600000.0],
  ],
]);
var polygon2 = turf.polygon([
  [
    [499981.0, 3599999.0],
    [533365.5903128482, 3599999.0],
    [505696.0943201342, 3490201.0],
    [499981.0, 3490201.0],
    [499981.0, 3599999.0],
  ],
]);

// 改用平面面积计算
console.log(turf.planarArea(polygon1));
console.log(turf.planarArea(polygon2));
补充说明
  • 原代码中 turf.area() 计算的是椭球面上的面积,仅适用于经纬度坐标;
  • 如果需要基于椭球面计算投影坐标的面积,需先使用 proj4 等工具将投影坐标转换为WGS84经纬度,再调用 turf.area()。

内容的提问来源于stack exchange,提问作者devfubar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:50:49