Ищете утилиту java. Еще лучше, если вы можете сказать мне, как это сделать, используя библиотеку geotools.
Как преобразовать между градусами, минутами, секундами в десятичные координаты
Ответ 1
Под "десятичными координатами" вы подразумеваете широту и долготу (также известную как десятичная степень)? Если это так, то, что вы пытаетесь сделать, довольно просто:
Учитывая координаты DMS (градусы, минуты, секунды), такие как W87 ° 43'41 ", это тривиально, чтобы преобразовать его в несколько десятичных степеней, используя следующий метод: Вычислите общее количество секунд,
43′41″ = (43*60 + 41) = 2621
секунд. Дробная часть - это общее количество секунд, разделенных по 3600. 2621/3600 = ~ 0.728056 Добавить дробные степени в целое градусов для получения конечного результата: 87 + 0.728056 = 87.728056Поскольку это координата западной долготы, отрицайте результат. Конечный результат: -87.728056.
Из Wikipedia. Здесь виджет Javascript, который делает то же самое.
Ответ 2
Это зависит от вашего исходного формата. Если он уже разбит на градусы (d), минуты (m) и секунды (секунды), ваш алгоритм:
(предполагая, что 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;
Ответ 3
**begin 23°26’49"**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish 23.44694444**