如何使用NetTopologySuite获取以米为单位的两点几何图形的距离。
我使用了Distance()函数,但是我得到了一些值,并且我不能识别这些值的单位。c#应用程序忽略要忽略的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;
}我需要以米为单位计算距离。
发布于 2020-11-17 14:38:49
你可以使用毕达哥拉斯定理来计算距离。
以下是步骤:
如果要计算3D点,除了计算DeltaZ和公式= X^2 + Y^2 + Z^2之外,步骤相同
发布于 2020-11-17 15:46:01
根据docs,SRID4326代表下面的定义
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包可以为我们做到这一点。
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);
}https://stackoverflow.com/questions/56830592
复制相似问题