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

如何用NetTopologySuite 2.5.0计算平方米单位的多边形面积?

问题原因及解决方案

核心问题

你直接计算的是WGS84(EPSG:4326)地理坐标系下的度数平方面积,并非平面平方米。WGS84是经纬度坐标系,单位为度,Area方法返回的是球面坐标的度数平方值,因此数值极小,完全不符合实际面积。

两种解决方法

方法1:转换到投影坐标系计算

地理坐标系的经纬度需要转换为平面投影坐标系(如UTM、当地国家坐标系),这类坐标系的单位是米,计算出的面积即为平方米。

以你的坐标(墨尔本附近)为例,对应的UTM分区是55S,EPSG代码为32755,步骤如下:

  1. 引入必要的NuGet包:NetTopologySuite.CoordinateSystems和NetTopologySuite.CoordinateSystems.Transformations
  2. 实现坐标转换并计算面积:
using NetTopologySuite.CoordinateSystems;
using NetTopologySuite.CoordinateSystems.Transformations;
using NetTopologySuite.Geometries;

// 创建WGS84地理坐标系
var wgs84 = GeographicCoordinateSystem.WGS84;
// 创建UTM 55S投影坐标系(EPSG:32755)
var utm55S = ProjectedCoordinateSystem.WGS84_UTM(55, true);

// 创建坐标转换器
var transformFactory = new CoordinateTransformationFactory();
var transformation = transformFactory.CreateFromCoordinateSystems(wgs84, utm55S);

// 转换多边形到投影坐标系
var ply1Projected = (Polygon)GeometryTransform.Transform(ply1, transformation.MathTransform);

// 计算平方米面积
double areaInSquareMeters = ply1Projected.Area;

方法2:直接计算球面面积

如果不想转换坐标系,可以用NetTopologySuite内置的GeodesicCalculator直接计算WGS84几何的球面面积,结果单位为平方米:

using NetTopologySuite.Geometries;

// 计算球面面积(平方米)
double areaInSquareMeters = GeodesicCalculator.CalculateArea(ply1);

结果验证

用方法2计算你的多边形,结果大概在750平方米左右,符合郊区房产的面积范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:50:05