Преобразование значений широты / долготы (DMS+ формат направления компаса) в соответствующие значения десятичной точки в Android
Я работаю над проектом Java android и имею следующую проблему. Я так много искал, но все же у меня проблема с преобразованием значений широты / долготы в формате DMS (например, 38°2'56''N, 122°9'28''W) для соответствующего им формата десятичных градусов.
Пример значений, которые необходимо преобразовать для соответствующего им формата десятичных градусов.
38 ° 49'59''N, 26 ° 56'59''E
38 ° 2'56''N, 122 ° 9'28''W
34 ° 52'58'S, 56°10'58''W
Спасибо
3 ответа
Все, что вы делаете, когда переводите DMS в десятичные градусы, делите на 60. Разделите S на 60, добавьте его в M, разделите результат на 60, а затем добавьте в D.
Вторая часть касается направления, на которое указывают координаты. Изобразите пару осей с указанием компаса в правильных местах (т. Е. Вверх - N, справа - E, вниз - S, слева - W). Это означает, что любое значение десятичной степени, соответствующее значению DMS, которое указывало бы либо на S, либо на W, будет отрицательным.
38 ° 2'56''N, 122 ° 9'28 ''W -> 38.048889, -122.157778
Д ° М'S ""
- Разделите S на 60 и получите X
- Найдите Y, добавив X к M
- Разделите Y на 60, чтобы получить F
- Ответ = D + F
РЕЗЮМЕ
Конвертировать из DMS в степень
Степени = D + ((S/60)+M)/60
Где D, M и S - значения, составляющие формат DMS: D°M'S''
И вы всегда можете проверить вашу работу с формулой Шерифа здесь: http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html