Ищу java-утилиту. Будет еще лучше, если вы подскажете, как это сделать с помощью библиотеки geotools.
как преобразовать градусы, минуты, секунды в десятичные координаты
Ответы (3)
Под «десятичными координатами» вы подразумеваете широту и долготу (также известную как десятичная степень)? Если да, то то, что вы пытаетесь сделать, довольно просто:
Учитывая координаты DMS (градусы, минуты, секунды), такие как W87°43′41″, тривиально преобразовать их в число десятичных градусов, используя следующий метод: Подсчитайте общее количество секунд,
43′41″ = (43*60 + 41) = 2621
секунд. Дробная часть равна общему количеству секунд, деленному на 3600. 2621 / 3600 = ~0,728056 Добавьте дробные градусы к целым градусам, чтобы получить окончательный результат: 87 + 0,728056 = 87,728056.Поскольку это координата западной долготы, отрицайте результат. Окончательный результат -87,728056.
Из Википедии. Вот виджет JavaScript, который делает то же самое.
Это зависит от вашего исходного формата. Если он уже разделен на градусы (d), минуты (m) и секунды (s), ваш алгоритм:
(при условии, что d может быть положительным или отрицательным)
dd = Math.signum(d) * (Math.abs(d) + (m / 60.0) + (s / 3600.0));
Если они объединены в строку, обычный формат таков:
"ддд.ммсс"
Поэтому проанализируйте, используя регулярное выражение или String.substring(), чтобы получить m и s.
Обратное преобразование это:
d = (int)dd; // Truncate the decimals
t1 = (dd - d) * 60;
m = (int)t1;
s = (t1 - m) * 60;