O que é o Nominatim?
Nominatim é uma ferramenta para buscar dados do OpenStreetMap (OSM) por nome e endereço — o chamado geocoding — e também para gerar endereços sintéticos a partir de pontos OSM, o que é conhecido como reverse geocoding.
O Nominatim é o software de geocodificação que alimenta o site oficial do OSM em openstreetmap.org, chegando a responder 30 milhões de consultas por dia em um único servidor. A versão mais recente é a 5.3.2.
Arquitetura
A arquitetura do Nominatim é dividida em três partes fundamentais: a importação de dados, o cálculo de endereços e o frontend de busca. O estágio de importação lê os dados brutos do OSM e extrai todas as informações úteis para a geocodificação, tarefa realizada pelo osm2pgsql. O frontend recebe as consultas de busca e geocodificação reversa, consulta os dados e retorna os resultados no formato solicitado — esse componente está no pacote nominatim-api.
O sistema é construído em torno de uma classe de API central que gerencia conexões com o banco de dados, coordena o subsistema de busca e gerencia a formatação dos resultados. Ele suporta operações síncronas e assíncronas para acomodar diferentes cenários de implantação.
Endpoints da API
O Nominatim indexa recursos nomeados (ou numerados) do dataset OSM, além de um subconjunto de recursos não nomeados como pubs, hotéis e igrejas. Sua API oferece os seguintes endpoints principais:
| Endpoint | Descrição |
|---|---|
/search |
Geocodificação direta (nome/endereço → coordenadas) |
/reverse |
Geocodificação reversa (coordenadas → endereço) |
/lookup |
Consulta por OSM ID específico |
/details |
Detalhes internos de um objeto (apenas para depuração) |
/status |
Verificação do estado do serviço |
A API suporta consultas estruturadas, onde o endereço já está dividido em componentes, e cada parâmetro representa um campo do endereço. Os resultados podem ser retornados em JSON, XML e GeoJSON.
Geocodificação Reversa
O Nominatim pode encontrar e retornar endereços correspondentes a uma dada coordenada de latitude e longitude. Para isso, usa-se o endpoint /reverse com os parâmetros lat e lon. O endpoint suporta o parâmetro zoom, que retorna resultados de granularidade diferente dependendo do valor — por exemplo, país, cidade ou rua.
Política de Uso
O serviço público em nominatim.openstreetmap.org existe principalmente para alimentar a barra de busca do openstreetmap.org. A política exige:
- No máximo 1 requisição por segundo
- Identificação da aplicação via
HTTP RefererouUser-Agent - Exibição clara de atribuição de dados
- Proibição de buscas sistemáticas em lote (como grids de geocodificação reversa ou download de listas completas de CEPs)
Instalação Própria (Self-Hosting)
É possível configurar sua própria instância offline do Nominatim, o que permite realizar tantas geocodificações quanto necessário, sem restrições de uso. Isso é especialmente útil para aplicações que precisam de alto volume de requisições, como:
- Rastreamento de frotas
- Aplicações de logística
- Qualquer serviço onde o uso da API pública seria inadequado
Casos de Uso Práticos
| Caso | Endpoint | Exemplo |
|---|---|---|
| Busca por endereço | /search |
"Palmas, Tocantins, Brasil" |
| Geolocalização por GPS | /reverse |
lat=-10.18, lon=-48.33 |
| Integrar num site | /search |
Com format=json |
| Verificar um POI | /lookup |
?osm_ids=N123456 |
Resumo
O Nominatim é uma solução robusta, open source e gratuita para geocodificação baseada no OpenStreetMap. É a escolha ideal para quem precisa de geocodificação sem depender de APIs pagas como Google Maps ou Mapbox, especialmente em instâncias auto-hospedadas para uso intensivo.