Перевод десятичных грудусов в градусы, минуты и секунды

При работе с картами или GPS мы можем получить долготу (longitude) и широту (latitude) в виде виде десятичных грудусов. Например, 37.422006 (широта) и -122.084095 (долгота). Это где-то в Силиконовой долине. Нам может потребоваться перевести эти десятичные градусы в градусы, минуты и секунды, т.е. в формат более понятный человеку.

Для справки:

  • Положительное значение широты — северная широта
  • Отрицительное значание широты — южная широта
  • Положительное значение долготы — восточная долгота
  • Отрицательное значение долготы — западная долгота

Преобразование будет реализовано в виде функции, принимающей в качестве параметра десятичный градуc (double), а в качестве результата возвращающая строку вида: X° Y′ Z″, где X — градусы, Y — минуты и Z — секунды.
Реализация на Java:

public static String doubleToDegree(double value){
	int degree = (int) value;
	double rawMinute = Math.abs((value % 1) * 60);		
	int minute = (int) rawMinute;
	int second = (int) Math.round((rawMinute % 1) * 60);
	return String.format("%d° %d′ %d″", degree,minute,second);
}

Пример использования:

System.out.println(doubleToDegree(37.422006));//Результат: 37° 25′ 19″
System.out.println(doubleToDegree(-122.084095));//Результат: -122° 5′ 3″

Результаты можно интерпретировать следующим образом:
37° 25′ 19″ означает 37 градусов 25 минут 19 секунд северной широты.
-122° 5′ 3″ означает 122 градуса 5 минут 3 секунды западной долготы.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.