как конвертировать градусы, минуты, секунды в десятичные координаты - PullRequest
17 голосов
/ 25 ноября 2011

Ищу утилиту Java.Еще лучше, если вы подскажете, как это сделать с помощью библиотеки геотурсов.

Ответы [ 3 ]

21 голосов
/ 25 ноября 2011

Это зависит от вашего исходного формата. Если он уже разделен на градусы (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 голосов
/ 25 ноября 2011

Под «десятичными координатами» вы подразумеваете широту и долготу (также известную как десятичная степень)? Если да, то, что вы пытаетесь сделать, довольно легко:

Учитывая координаты DMS (градусы, минуты, секунды), такие как W87 ° 43′41 ″, тривиально преобразовать его в число десятичных градусов, используя следующий метод: Рассчитать общее количество секунд, 43′41″ = (43*60 + 41) = 2621 секунд. Дробная часть - это общее количество секунд, разделенное на 3600. 2621/3600 = ~ 0,728056 Добавьте дробные градусы к целому градусов для получения окончательного результата: 87 + 0,728056 = 87,728056

Так как это западная долгота, отрицание результата. Окончательный результат -87,728056.

Из Википедия . Вот Javascript-виджет , который делает то же самое.

8 голосов
/ 20 апреля 2013
**begin  23°26’49”**
degrees = 23
minutes = 26
seconds = 49
decimal = ((minutes * 60)+seconds) / (60*60))
answer = degrees + decimal
**finish  23.44694444**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...