Преобразование значений широты / долготы (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 ""

  1. Разделите S на 60 и получите X
  2. Найдите Y, добавив X к M
  3. Разделите Y на 60, чтобы получить F
  4. Ответ = 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

Другие вопросы по тегам