как преобразовать градусы, минуты, секунды в десятичные координаты

Ищу java-утилиту. Будет еще лучше, если вы подскажете, как это сделать с помощью библиотеки geotools.


person Aravind Yarram    schedule 25.11.2011    source источник
comment
возможный дубликат Как преобразовать эти координаты в координаты, читаемые Google Maps?   -  person Cute Bear    schedule 15.01.2014


Ответы (3)


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

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

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

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

person David Titarenco    schedule 25.11.2011

Это зависит от вашего исходного формата. Если он уже разделен на градусы (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;
person CodeSlinger    schedule 25.11.2011

person    schedule
comment
Спасибо. Проверено на sunearthtools.com/dp/tools/conversion.php и работает. - person KhoaHA; 21.01.2017