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