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

При работе с картами или 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 для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.