1

我正在寻找一个函数,可以让我发送2经纬度。 1拉特,长是我的基础,第二个是我想确定它是N,S,E还是西。或者我是否必须去NW,N,NE,EN,E,ES,SE,S,SW,WS,W,WN?无论哪种方式都没有人在C#中有这样的东西?根据2经度,长点的方向

回答

6

首先,你可以计算大圆轴承

θ= ATAN2(SIN(Δλ)名为.cos(φ2),COS(φ1).sin(φ2) - 罪(φ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(); 

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

AM我假设在灰色的线来计算的大轴承圈仅仅是功能,而不是代码? – StephanM

+0

@StephanM:如果用*表示灰色*表示带有希腊符号的那个,是的。我用代码更新了答案。 –

+0

dLon从哪里来? – StephanM