使用しているプログラミング言語が浮動小数点数(PythonやRubyなど)で%(mod)演算子をサポートしている場合は、それを使用することをお勧めします。それ以外の場合、他のいくつかの言語(CやC ++など)では、fmod()を使用できます。
(どちらのmod演算子を使用する場合でも、それが浮動小数点数に対してmod操作を実行すること、および常に非負の答えが得られることを事前に確認してください。それ以外の場合は、後で多くの緯度/経度ポイントは正しくありません。)
次のように使用します。
# Put the longitude in the range of [0,360):
longitude %= 360
# Put the longitude in the range of [-180,180):
if longitude >= 180:
longitude -= 360
すべてを1行で実行したい場合:
# Put the longitude in the range of [-180,180):
longitude = (longitude + 180) % 360 - 180
これらのアプローチにはループがないため、観測値が地球を周回した回数に関係なく、繰り返し加算または減算する必要なく経度値を正規化します。
編集:
うーん... Javascriptは、%
思ったように負の値を処理できないようです。
その場合は、次のワンライナーを試してください。
longitude = (longitude + 36180) % 360 - 180
36180
私たちが追加している36,000が正の領域に負の値を移動させることで、180はそれがでモッドされたときにことをそれを上にシフトすることである36000 + 180である360
)、それは[0360の範囲になります。- 180
それは[-180180)の範囲に後部移行します。
これは、36,000の十分な大きさに依存しない別のワンライナーです。
longitude = (longitude % 360 + 360 + 180) % 360 - 180
longitude % 360 + 360
それは、後によりモッドだときの部分は、正の領域での値の滞在を保証します360
。+ 180
それは後で(とから差し引か180を取得したときに一部シフトは、それが上ように- 180
)、それは[-180180)の所望の範囲内になるだろう。