Validador de Coordenada Geográfica
Aceita coordenadas em vários formatos (decimal, DMS, com hemisférios) e valida se latitude e longitude estão dentro dos limites válidos.
Detecção de formato de coordenada: DD, DMS, DDM, UTM, MGRS, Plus Code e What3Words
Um par latitude/longitude são só dois números, mas a string usada para representá-lo muda radicalmente conforme a origem: uma URL do Google Maps, uma tag EXIF dentro de um JPEG, uma carta topográfica, um relatório militar e um app de delivery escolhem notações diferentes. Um validador de formato de coordenada faz algo mais estreito do que um validador GPS genérico: ele inspeciona a string bruta, classifica em qual das sete codificações canônicas ela se encaixa e parseia para uma forma interna normalizada. Os sete formatos suportados — DD, DMS, DDM, UTM, MGRS, Plus Code e What3Words — cobrem praticamente toda string de coordenada que aparece na natureza.
Esta ferramenta não trata de ranges ou datums (esse é o papel de validador-coordenadas-gps) — ela trata de parsear o envelope textual primeiro, para que qualquer lógica downstream receba um par normalizado independentemente da origem.
As sete codificações canônicas
- DD (Decimal Degrees) — decimais com sinal, separados por vírgula ou espaço:
-23.5505, -46.6333. Padrão das APIs. - DMS (Graus, Minutos, Segundos) — sexagesimal com letras cardinais:
23°33'01.8"S 46°37'59.9"W. Usado em tags EXIF GPS e cartas náuticas. - DDM (Graus e Minutos Decimais) — híbrido comum em GPS marítimo:
23°33.030'S 46°37.998'W. - UTM (Universal Transverse Mercator) — zona + easting/northing em metros:
23K 333024 7395060. 60 zonas de 6° de largura, ideal para topografia e CAD. - MGRS (Military Grid Reference System) — grade NATO construída sobre UTM:
23K KP3302473950. Comprimento fixo, amigável para rádio. - Plus Code (Open Location Code) — padrão aberto do Google:
8R3R+QF São Paulo. Funciona offline, sem API key. - What3Words — grade proprietária de 3 m × 3 m mapeada para trio de palavras:
///filled.count.soap. API licenciada.
Regex de validação por formato
Auto-detecção é uma cascata de testes de regex, do mais específico ao mais permissivo, para que o padrão mais frouxo de DD não absorva uma string DMS que por acaso comece com dígitos:
// DD: "-23.5505, -46.6333"
const dd = /^-?\d{1,3}\.\d+,\s*-?\d{1,3}\.\d+$/
// DMS: 23°33'01.8"S 46°37'59.9"W
const dms = /^\d{1,3}°\d{1,2}'\d{1,2}(\.\d+)?"[NSEW]\s+\d{1,3}°\d{1,2}'\d{1,2}(\.\d+)?"[NSEW]$/
// UTM: 23K 333024 7395060
const utm = /^\d{1,2}[C-X]\s+\d{6}\s+\d{7}$/
// Plus Code: 8R3R+QF
const olc = /^[23456789CFGHJMPQRVWX]{4,8}\+[23456789CFGHJMPQRVWX]{2,}/
// What3Words: ///palavra.palavra.palavra
const w3w = /^\/{3}[a-z]+\.[a-z]+\.[a-z]+$/
A heurística do cardinal é o que torna a detecção de DMS robusta — se a string contém ° e uma letra N/S/E/W, nem tente o regex de DD. UTM é inequívoco porque a letra de zona vem após uma contagem fixa de dígitos. MGRS é mais difícil: um prefixo de grade de 5 caracteres precisa vir logo após a zona UTM, e então um par easting/northing de mesmo comprimento.
Conversão DD ↔ DMS e tags EXIF GPS
Conversão entre DD e DMS é puramente aritmética — o sinal vem da letra cardinal:
function dmsParaDd(grau, min, seg, hemi) {
const dd = grau + min/60 + seg/3600
return (hemi === 'S' || hemi === 'W') ? -dd : dd
}
Tags EXIF GPS dentro de fotos JPEG/HEIC guardam coordenadas como três valores RATIONAL (grau, min, seg) mais um byte separado GPSLatitudeRef / GPSLongitudeRef contendo o cardinal — é essencialmente DMS sem a pontuação. Qualquer leitor de metadados (exifr, ExifTool, Pillow) devolve DMS por padrão; se você precisa de DD para uma coluna de banco, aplique a fórmula acima. URLs de mapas são inconsistentes: Google usa ?q=lat,lng em DD, Apple Maps usa ?ll=lat,lng em DD, Bing usa ?cp=lat~lng com til. KML e GeoJSON são DD apenas.
UTM, MGRS e datums brasileiros
UTM divide o mundo em 60 zonas de 6° de longitude; o Brasil abrange as zonas 18 a 25, com São Paulo na zona 23K. Coordenadas UTM são metros lineares a partir do meridiano central da zona (easting) e do Equador (northing), o que torna cálculos de distância e área triviais — por isso todo projeto CAD, plano de mineração e desenho de engenharia no Brasil usa UTM, não lat/lng. MGRS adiciona um quadrante alfabetizado de 100 km × 100 km em cima, útil quando é preciso ler coordenadas pelo rádio. Datum importa em UTM: o mesmo easting/northing em WGS84 versus SAD69 pode deslocar o ponto em dezenas de metros, e o datum legalmente válido para cartografia brasileira é o SIRGAS 2000.
Bibliotecas e ferramental
Em Node, o pacote coordinate-parser auto-detecta DD, DMS e DDM e normaliza para DD; utm faz UTM ↔ DD; mgrs faz MGRS ↔ DD; open-location-code faz Plus Code; turf.js cobre distância em grande círculo, bounding boxes e interpolação geodésica uma vez que você tenha DD. Para trabalho pesado, PROJ (via proj4js) faz transformações arbitrárias de datum e projeção, incluindo SIRGAS ↔ WGS84.
FAQ
Qual formato guardar no banco? DD em duas colunas DOUBLE, ou um geography(Point) do PostGIS. Converta a partir de DMS/UTM/MGRS na fronteira de entrada. Manter a string original em coluna separada é um bom rastro de auditoria.
Como converto entre formatos automaticamente? A lib npm coordinate-parser auto-detecta DD/DMS/DDM e devolve DD. Para UTM e MGRS, use os pacotes dedicados acima; What3Words requer a API proprietária.
What3Words é proprietário? Sim. O algoritmo de grade 3 m × 3 m e o dicionário de palavras são licenciados — você precisa de chave de API para uso em produção. Plus Code (Open Location Code) é o equivalente em padrão aberto mantido pelo Google com licença permissiva.
Por que o EXIF guarda DMS em vez de DD? A spec EXIF é de 1995 e foi modelada na saída dos receptores GPS da época, que por sua vez espelhavam a notação de cartas aeronáuticas. DD virou a forma dominante para computador depois; a spec EXIF nunca foi atualizada por questão de compatibilidade.
Uma string pode misturar dois formatos? Não — uma string de coordenada bem formada pertence a exatamente uma das sete codificações. Se a detecção retornar múltiplos matches, a entrada é ambígua e deve ser rejeitada para revisão humana.
Ferramentas Relacionadas
Validador de Coordenadas GPS
Valida coordenadas geográficas (latitude entre −90 e +90, longitude entre −180 e +180). Aceita formatos decimal e DMS simples.
Validador de CPF em Lote
Valida uma lista de CPFs (um por linha) e mostra quais são válidos e quais são inválidos. Sem envio para servidores.
Validador de PIS/PASEP
Valide números de PIS/PASEP pelo algoritmo oficial com dígito verificador, sem enviar dados para servidores. Gratuito e sem cadastro.