如何使用 NetTopologySuite 获取以米为单位的两点几何距离?

Anz*_*S N 5 c# geometry nettopologysuite

如何使用 NetTopologySuite 获取两点几何图形的距离(以米为单位)。

我使用了 Distance() 函数,但我得到了一些值,但无法识别这些值的单位。对于ac#应用程序来说,忽略20米的容差值是可以忽略的。

using NetTopologySuite.Geometries;
using GeoAPI.Geometries;

private static double findistance()
{
   var geomFactory = new GeometryFactory(new PrecisionModel(), 4326);
   IGeometry geometry1 = geomFactory.CreatePoint(new Coordinate(12.977299, 77.571075));
   IGeometry geometry2 = geomFactory.CreatePoint(new Coordinate(12.977277, 77.571258));
   var distance = geometry1.Distance(geometry2);
   return distance;
}
Run Code Online (Sandbox Code Playgroud)

我需要得到以米为单位计算的距离。

小智 0

您可以使用毕达哥拉斯定理来计算距离。

步骤如下:

  1. 获取 Delta
    • double int deltaX = Math.Abs​​(point1.X - point2.X);
    • double int deltaY = Math.Abs​​(point1.Y - point2.Y);
  2. 毕达哥拉斯公式
    • 双倍距离 = Math.Sqrt((deltaX * deltaX) + (deltaY * deltaY));

如果你想计算 3D 点,除了计算 DeltaZ 之外,步骤相同,公式为距离 = X^2 + Y^2 + Z^2