Pergunta

O Google Maps me dá o LAT e um longo local em notação decimal como esta:

38.203655,-76.113281

Como faço para convertê -los para coordenar (graus, minutos, segundos)

Foi útil?

Solução

38.203655 é um valor decimal de graus. Há 60 minutos é um grau e 60 segundos em um minuto (1 graus == 60min == 3600s).

Portanto, pegue a parte fracionária do valor, ou seja, 0,203655 e multiplique com 60 para obter minutos, ou seja, 12.2193, que é de 12 minutos e, em seguida, repita a parte fracionária dos minutos, ou seja, 0,2193 = 13,158000 segundos.

Exemplo em 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)

Outras dicas

Caso você precise de outra funcionalidade geo relacionada ao JavaScript, você pode usar a seguinte biblioteca

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

Ele fornece a seguinte funcionalidade:

  • DMS de/para conversões de latitude/longitude decimais
  • Cálculos de distância
  • Cálculo do rolamento
  • Calcualção do ponto de interseção

Biblioteca Python que faz o truque:

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

Eu acho que isso vai te ajudar com a solução:

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)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top