Como Converter Coordenadas Decimais para Sexagesimais (Latitude e Longitude)

Quando lidamos com coordenadas geográficas, como as que encontramos em sistemas de GPS, mapas digitais ou aplicações de geolocalização, é comum encontrar dois formatos distintos de representação:

  • Coordenadas decimais (graus decimais): exemplo -26.237489
  • Coordenadas sexagesimais (graus, minutos e segundos): exemplo 26°14'14.96"S

Este post explica com todos os detalhes como converter do formato decimal para o formato sexagesimal, usando exemplos reais de coordenadas geográficas e fornecendo também um código em PHP para automatizar o processo.


Entendendo os formatos

1. Graus Decimais (DD)

É o formato mais utilizado por sistemas modernos, como APIs de mapas, bancos de dados e planilhas. Ele representa os graus como um número de ponto flutuante contínuo, podendo ser positivo ou negativo:

  • Latitude: varia entre -90 (Sul) e +90 (Norte)
  • Longitude: varia entre -180 (Oeste) e +180 (Leste)

Exemplos:

  • Latitude: -26.237489 (26 graus ao sul do equador)
  • Longitude: -49.527113 (49 graus a oeste do meridiano de Greenwich)

2. Graus, Minutos e Segundos (DMS)

Esse é o formato tradicional utilizado por navegadores antigos, cartas náuticas e em situações que exigem leitura precisa por humanos. Ele separa a coordenada em três partes:

  • Graus inteiros (°)
  • Minutos (1 grau = 60 minutos) (')
  • Segundos (1 minuto = 60 segundos) (")

Exemplo:

  • Latitude: 26°14'14.96"S
  • Longitude: 49°31'37.61"W

Como converter decimal para sexagesimal (DMS)

Passo a passo manual

Vamos usar o valor -26.237489 como exemplo (uma latitude no hemisfério sul):

  1. Obtenha os graus inteiros:
    Pegue a parte inteira do número:
    graus = 26 (o sinal é tratado à parte)
  2. Calcule os minutos:
    Subtraia a parte inteira e multiplique o restante por 60:
    minutos_float = (0.237489) × 60 = 14.24934
    minutos = 14 (parte inteira)
  3. Calcule os segundos:
    Subtraia a parte inteira dos minutos e multiplique o restante por 60:
    segundos = (0.24934) × 60 = 14.9604
    Arredondamos para duas casas decimais: 14.96
  4. Determine a direção (hemisfério):
    • Para latitude: sinal negativo = Sul (S), positivo = Norte (N)
    • Para longitude: sinal negativo = Oeste (W), positivo = Leste (E)

Resultado:

  • -26.23748926°14'14.96"S

Exemplo prático completo

Vamos converter um par de coordenadas decimais para sexagesimal:

  • Latitude: -26.237489
  • Longitude: -49.527113

Resultado:

TipoFormato DecimalFormato Sexagesimal
Latitude-26.23748926°14'14.96"S
Longitude-49.52711349°31'37.61"W

Código PHP para converter decimal para sexagesimal

Se você estiver trabalhando com sistemas web ou precisa automatizar a conversão, este código PHP pode te ajudar:

function decimalToDMS($decimal, $isLatitude = true) {
    $direction = $decimal < 0
        ? ($isLatitude ? 'S' : 'W')
        : ($isLatitude ? 'N' : 'E');

    $decimal = abs($decimal);

    $degrees = floor($decimal);
    $minutesFloat = ($decimal - $degrees) * 60;
    $minutes = floor($minutesFloat);
    $seconds = round(($minutesFloat - $minutes) * 60, 2);

    return sprintf("%d°%02d'%05.2f\"%s", $degrees, $minutes, $seconds, $direction);
}

// Exemplo de uso:
echo decimalToDMS(-26.237489, true);  // 26°14'14.96"S
echo "\n";
echo decimalToDMS(-49.527113, false); // 49°31'37.61"W

Observações importantes

  1. Arredondamento: os segundos devem ser arredondados com cuidado. Um pequeno erro pode gerar uma diferença de vários metros no solo.
  2. Precisão: 1 segundo de latitude ou longitude equivale a aproximadamente 30 metros na superfície da Terra. Arredondar demais pode causar imprecisão em trilhas, mapas ou marcações de terrenos.
  3. Conversão reversa (DMS → Decimal): também é possível, somando os minutos divididos por 60 e os segundos divididos por 3600 ao valor dos graus. Essa fórmula pode ser explicada em outro post.
Rolar para cima