Вопрос

Google Maps дает мне лат и длинное место в десятичной записи, как это:

38.203655,-76.113281

Как мне преобразовать их в координации (градусы, минуты, секунды)

Это было полезно?

Решение

38.203655 является десятичным значением градусов. 60 минут - это степень и 60 секунд за минуту (1degree == 60min == 3600S).

Так что возьмите дробную часть значения, то есть 0,203655, и умножьте ее на 60, чтобы получить минуты, то есть 12,2193, что составляет 12 минут, а затем повторите для дробной части минут, то есть 0,2193 = 13,158000 секунд.

Пример в Python:

def deg_to_dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return [d, m, sd]

print deg_to_dms(38.203655)
print deg_to_dms(-76.113281)

Другие советы

Если вам нужна другая функциональность, связанная с гео, в JavaScript, вы можете использовать следующую библиотеку

http://www.movable-type.co.uk/scripts/latlong.html

Он предоставляет следующую функциональность:

  • DMS от/до десятичной широты/долготы конверсий
  • Расчеты расстояния
  • Расчет подшипника
  • Калькуляция точки пересечения

Библиотека Python, которая делает свое дело:

https://pypi.python.org/pypi/latlon/1.0.2

Я думаю, что это поможет вам с решением:

def deg_min_sec(self,degrees=0.0):
        if type(degrees) != 'float':
            try:
                degrees = float(degrees)
            except:
                print '\nERROR: Could not convert %s to float.' % (type(degrees))
                return 0
        minutes = degrees % 1.0 * 60
        seconds = minutes % 1.0 * 60

        return (degrees, minutes, seconds)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top