Como descobrir o nome oficial de uma cidade a partir de coordenadas ou dados geográficos
Muita gente trava na hora de identificar o nome certo de uma cidade quando trabalha com dados geoespaciais, APIs de localização ou scripts de automação. O problema não é tão simples quanto parece, porque o "nome da cidade" pode variar dependendo da fonte que você consulta. Vamos tratar disso de forma prática.
A pergunta mais comum: qual é o nome da nossa cidade?
Se você está começando um projeto e precisa saber qual é o nome oficial de uma cidade, o caminho mais direto é consultar bases de dados geográficas consolidadas. O GeoNames (geonames.org) é uma das opções mais usadas. Você sobe as coordenadas em formato CSV ou interroga a API gratuita, e ele devolve o nome oficial, a região administrativa e o código do país. A API gratuita permite 15.000 requisições por dia sem key. Se o seu volume for maior, aí você migra para o banco completo baixando os dumps mensais, que ocupam uns 8 GB compactados. O OpenStreetMap com o Nominatim também resolve rápido para casos pontuais. A desvantagem é que o Nominatim exige um User-Agent bem formado na header e tem limite de 1 requisição por segundo. Eu já vi gente fazendo loop de 500 chamadas seguidas e sendo banida em 30 segundos. Coloca um cache local em SQLite e limita a frequência. Funciona bem.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Tem ainda a base do GEOnet Names Server (GNS), do governo dos Estados Unidos. É a referência para nomes oficiais em países que não usam o latim como alfabeto, como Rússia, China e Coreia. Se você estiver lidando com transliteração, essa é a base certa. O download é pesado, uns 2 GB, mas o arquivo de nomes é extremamente completo. O que as pessoas esquecem é que o nome "oficial" nem sempre é o nome que aparece nos GPS ou nos mapas digitais. Cidades brasileiras como São Paulo ou Rio de Janeiro não têm ambiguidade, mas lugares menores podem ter múltiplos registros. Já me deparei com um caso em que o mesmo assentamento aparecia com três nomes diferentes no GeoNames, no GNS e no OpenStreetMap. O problema veio quando o cliente pediu para gerar etiquetas com o "nome correto" para envío de malote entre duas filiais no interior de Minas. A solução foi cruzar os três bancos, pegar o nome com maior occorrência entre as três fontes e, em caso de empate, consultar o IBGE. A base do IBGE para municípios brasileiros é imbatível para o contexto nacional. O código de município com 7 dígitos resolve qualquer ambiguidade.
Outro detalhe que todo mundo esquece: nome de cidade e nome de município nem sempre são a mesma coisa. No Brasil, um município pode ter sede em uma cidade e abranger várias comunidades com nomes diferentes. Se você está fazendo validação de endereço, usar apenas o nome da cidade sem validar o código do município gera erros de duplicação. Eu perdi um dia inteiro corrigindo endereços duplicados porque a pessoa morava no distrito de São João del-Rei, mas o campo cidade estava preenchido como "Rio Preto" (que é outro município vizinho). A correção foi simples: parar de confiar no campo texto e passar a usar o código IBGE como chave primária. O resto vem junto. Se o seu cenário envolve países fora do Brasil, a coisa fica mais complicada. A Turquia renomeou cidades recentemente. A Geórgia tem topônimos em georgiano, russo e inglês simultaneamente. O Cáucaso tem cidades que mudaram de nome cinco vezes nos últimos cem anos. Nesse caso, defina um ano de corte no seu sistema edocumente a fonte. Nada pior do que descobrir seis meses depois que o nome mudou e ninguém registrou o motivo.
Resumindo sem querer resumir: use o GeoNames para o dia a dia, o GNS para transliteração, o Nominatim para consultas esparsas e o IBGE para o Brasil. Cache tudo. Valide com códigos, não com nomes. E registre a fonte. Vai te salvar de dor de cabeça futura.