1
我正在寻找一个函数,可以让我发送2经纬度。 1拉特,长是我的基础,第二个是我想确定它是N,S,E还是西。或者我是否必须去NW,N,NE,EN,E,ES,SE,S,SW,WS,W,WN?无论哪种方式都没有人在C#中有这样的东西?根据2经度,长点的方向
我正在寻找一个函数,可以让我发送2经纬度。 1拉特,长是我的基础,第二个是我想确定它是N,S,E还是西。或者我是否必须去NW,N,NE,EN,E,ES,SE,S,SW,WS,W,WN?无论哪种方式都没有人在C#中有这样的东西?根据2经度,长点的方向
首先,你可以计算大圆轴承
θ= 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.
}
AM我假设在灰色的线来计算的大轴承圈仅仅是功能,而不是代码? – StephanM
@StephanM:如果用*表示灰色*表示带有希腊符号的那个,是的。我用代码更新了答案。 –
dLon从哪里来? – StephanM