首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用NetTopologySuite获取两点几何的距离,单位为米?

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

Stack Overflow用户
提问于 2019-07-01 13:54:55
回答 2查看 1K关注 0票数 4

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

我使用了Distance()函数,但是我得到了一些值,并且我不能识别这些值的单位。c#应用程序忽略要忽略的20米的公差值。

代码语言:javascript
复制
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;
}

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

EN

回答 2

Stack Overflow用户

发布于 2020-11-17 14:38:49

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

以下是步骤:

  1. Get Deltas
    • double int deltaX = Math.Abs(point1.X -point1.Y= Math.Abs(point1.Y -point1.y

  1. 毕达哥拉斯公式
    • 双倍距离= Math.Sqrt((deltaX * deltaX) + (deltaY *

如果要计算3D点,除了计算DeltaZ和公式= X^2 + Y^2 + Z^2之外,步骤相同

票数 1
EN

Stack Overflow用户

发布于 2020-11-17 15:46:01

根据docs,SRID4326代表下面的定义

代码语言:javascript
复制
GEOGCS["WGS 84",
  DATUM["WGS_1984",
    SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],
    AUTHORITY["EPSG","6326"]],
  PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
  UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
  AUTHORITY["EPSG","4326"]]

UNIT["degree"...告诉我们,您得到的结果具有度量值。如果我们将这些点转换成投影坐标系,我们就可以计算出以米为单位的距离。ProjNET4GeoAPI包可以为我们做到这一点。

代码语言:javascript
复制
private static double findDistance()
{
    CoordinateTransformationFactory ctfac = new CoordinateTransformationFactory();

    var from = GeographicCoordinateSystem.WGS84;
    var to = ProjectedCoordinateSystem.WebMercator;

    var trans = ctfac.CreateFromCoordinateSystems(from, to);
    var mathTransform = trans.MathTransform;

    var p1Coordinate = new GeoAPI.Geometries.Coordinate(12.977299, 77.571075);
    var p2Coordinate = new GeoAPI.Geometries.Coordinate(12.977277, 77.571258);

    p1Coordinate = mathTransform.Transform(p1Coordinate);
    p2Coordinate = mathTransform.Transform(p2Coordinate);

    return p1Coordinate.Distance(p2Coordinate);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56830592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档