方向基于2个纬度,长点

Ste*_*anM 1 c# google-maps google-earth latitude-longitude computational-geometry

我正在寻找一个允许我发送2个Lat,Longs的功能.1 Lat,long是我的基础,第二个是我想确定它是N,S,E还是West.或者我必须去NW,N,NE,EN,E,ES,SE,S,SW,WS,W,WN?无论哪种方式都有人在C#中有这样的东西吗?

Eri*_* J. 6

首先,您可以计算出大圆轴承

θ= atan2(sin(Δλ).cos(φ2),cos(φ1).sin(φ2) - sin(φ1).cos(φ2).cos(Δλ))

JavaScript(可轻松转换为C#):

var y = Math.sin(dLon) * Math.cos(lat2);
var x = Math.cos(lat1)*Math.sin(lat2) -
        Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);
var brng = Math.atan2(y, x).toDeg();
Run Code Online (Sandbox Code Playgroud)

http://www.movable-type.co.uk/scripts/latlong.html

然后将结果分割成所需的基本方向,例如,如果方位在-45(315度)和45度之间,则它是北方,依此类推.

public string Cardinal(double degrees)
{
    if (degrees > 315.0 || degrees < 45.0)
    {
        return "N";
    }
    else if (degrees >= 45.0 && degrees < 90)
    {
        return "E";
    }
    // Etc for the whole 360 degrees.  Segment finer if you want NW, WNW, etc.
}
Run Code Online (Sandbox Code Playgroud)