在.NET Core中查找2个坐标之间的距离

时间:2020-03-16 05:43:12

标签: .net asp.net-core .net-core geolocation geospatial

我需要找到.NET core中2个坐标之间的距离。我尝试使用下面提到的代码,

var sCoord =新的GeoCoordinate(sLatitude,sLongitude); var eCoord = new GeoCoordinate(eLatitude,eLongitude);

返回sCoord.GetDistanceTo(eCoord);

但是,.NET核心似乎不支持GeoCoordinate类。是否还有其他精确的方法可以使用.NET Core中的经度和纬度来计算2个坐标之间的距离?

1 个答案:

答案 0 :(得分:3)

GeoCoordinate类是.net框架中System.Device.dll的一部分。但是,.Net Core不支持它。我找到了找到2个坐标之间距离的替代方法。

    public double CalculateDistance(Location point1, Location point2)
    {
        var d1 = point1.Latitude * (Math.PI / 180.0);
        var num1 = point1.Longitude * (Math.PI / 180.0);
        var d2 = point2.Latitude * (Math.PI / 180.0);
        var num2 = point2.Longitude * (Math.PI / 180.0) - num1;
        var d3 = Math.Pow(Math.Sin((d2 - d1) / 2.0), 2.0) +
                 Math.Cos(d1) * Math.Cos(d2) * Math.Pow(Math.Sin(num2 / 2.0), 2.0);
        return 6376500.0 * (2.0 * Math.Atan2(Math.Sqrt(d3), Math.Sqrt(1.0 - d3)));
    }

其中point1和point2是2个坐标点,而Location是一个类,如下所示,

public class Location
{
    public double Latitude { get; set; }
    public double Longitude { get; set; }
}

请检查链接以获取另一种计算距离的方法,该方法得出的结果与上述代码相同- Alternative method