web-dev-qa-db-ja.com

度、分、秒を10進座標に変換する方法

Javaユーティリティを探しています。geotoolsライブラリを使用してそれを行う方法を教えていただければさらに良いです。

17
Aravind Yarram

「10進座標」とは、緯度と経度(10進度とも呼ばれます)を意味しますか?もしそうなら、あなたがやろうとしていることはとても簡単です:

W87°43′41″などのDMS(度、分、秒)座標が指定されている場合、次の方法を使用して小数度に変換するのは簡単です。秒の合計数を計算する43′41″ = (43*60 + 41) = 2621秒。小数部分は、秒の合計数を3600で割ったものです。2621/ 3600 =〜0.728056度に小数度を加算して、最終的な結果を生成します。87+ 0.728056 = 87.728056

西経座標なので、結果を打ち消してください。最終結果は-87.728056です。

Wikipedia から。同じことを行う Javascriptウィジェット を次に示します。

21
David Titarenco

それはあなたのソースフォーマットに依存します。すでに度(d)、分(m)、秒(s)に分割されている場合、アルゴリズムは次のようになります。

(dが正または負であると仮定)

dd = Math.signum(d) * (Math.abs(d) + (m / 60.0) + (s / 3600.0));

文字列にまとめられている場合、通常の形式は次のとおりです。

「ddd.mmss」

したがって、正規表現またはString.substring()を使用して解析し、mとsを取得します。

元に戻すのは:

d = (int)dd;  // Truncate the decimals
t1 = (dd - d) * 60;
m = (int)t1;
s = (t1 - m) * 60;
21
CodeSlinger
**begin  23°26’49”**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish  23.44694444**
8
RussWill