1

2 Lat、Longsを送信できる関数を探しています。1緯度、経度は私のベースであり、2番目はそれがN、S、E、または西であるかどうかを判断したいものです。それとも私はNW、N、NE、EN、E、ES、SE、S、SW、WS、W、WNに行かなければなりませんか?いずれにせよ、C#でこのようなものを持っている人はいますか?

4

1 に答える 1

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();

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.
}
于 2012-12-18T20:59:23.687 に答える