Direction based off of 2 Lat,Long points

不问归期 提交于 2019-12-24 07:07:00

问题


I am looking for a function that will allow me to send 2 Lat, Longs. 1 Lat, long is my base and the second is what I want to determine if it is N,S,E, or West. Or would I have to go NW,N,NE,EN,E,ES,SE,S,SW,WS,W,WN? Either way does anyone have something like this in C#?


回答1:


First you can calculate the Great Circle Bearing

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

JavaScript (easily convertable to 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();

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

Then segment the result into the desired cardinal directions, e.g. if bearing is between -45 (315 degrees) degrees and 45 degrees it is North and so on.

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.
}


来源:https://stackoverflow.com/questions/13941352/direction-based-off-of-2-lat-long-points

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!