Nominatim: uma alternativa ao Google Maps

Nominatim: uma alternativa ao Google Maps

Na área de geolocalização e pesquisa geográfica, contar com ferramentas eficientes e versáteis é essencial para desenvolver aplicações e projetos de sucesso. Uma dessas ferramentas é o Nominatim, um poderoso mecanismo de pesquisa geográfica e geocodificação de código aberto. Se você está procurando uma maneira rápida e fácil de integrar o Nominatim aos seus projetos, você veio ao lugar certo.

Neste artigo explicarei como usar o Nominatim em conjunto com o Docker, uma plataforma de contêiner que simplifica a implantação e o gerenciamento de aplicações, e aprenderemos como criar uma imagem Docker que inclua o Nominatim, o que nos permitirá desfrutar de todos os funcionalidades deste motor de busca geográfica de forma rápida e fácil.

Ao longo deste tutorial, descobriremos os passos necessários para construir nossa própria imagem Docker com Nominatim e explorar seus recursos de geolocalização e pesquisa de endereços. Não importa se você é um desenvolvedor experiente ou está dando os primeiros passos no mundo do Docker e do Nominatim: este artigo irá guiá-lo pelo processo de configuração e fornecer o conhecimento necessário para integrar o Nominatim em seus projetos.

Antes de nos aprofundarmos no processo de criação de imagens Docker, daremos uma olhada nos recursos e benefícios do Nominatim, bem como nas possíveis aplicações e casos de uso onde esse mecanismo de busca geográfica pode fazer a diferença. Sem mais delongas, vamos começar nossa jornada para criar uma imagem Nominatim com Docker e aproveitar ao máximo seus recursos de geolocalização.


O que é Nominatim?

O Nominatim é um mecanismo de busca geográfica, conhecido por sua capacidade de realizar geocodificação precisa, ou seja, converter endereços e nomes de lugares em coordenadas geográficas. É baseado em dados do OpenStreetMap (OSM), um projeto de mapeamento colaborativo de código aberto. Isso significa que os dados utilizados pelo Nominatim estão disponíveis gratuitamente e você pode contribuir para melhorá-los.

Ao decidir incorporar o Nominatim ao seu projeto, você tem a possibilidade de personalizar e adaptar a configuração de acordo com suas necessidades. Você pode definir a área geográfica específica que deseja que o Nominatim pesquise, ajustar os parâmetros de pesquisa e personalizar a aparência dos resultados. Além disso, oferece a possibilidade de integração fácil com outras tecnologias e ferramentas, como bancos de dados e sistemas de informação geográfica.

Nominatim vs Google Maps

Existem vários motivos pelos quais você pode considerar usar o Nominatim em vez do Google Maps em um projeto. É claro que os requisitos de negócio estabelecidos no desenvolvimento de qualquer projeto devem ser analisados, mas os seguintes elementos são relevantes na hora de tomar uma decisão.

O primeiro aspecto a considerar é a licença de dados. Nominatim é baseado em OpenStreetMap (OSM), como já mencionamos. Por outras palavras, os dados OSM estão disponíveis sob uma licença aberta (ODbL), dando-lhe a liberdade de utilizar, partilhar e adaptar os dados às suas necessidades. Em contrapartida, o Google Maps utiliza os seus próprios dados, que estão sujeitos às restrições e termos de utilização do Google.

Um dos elementos analisados ​​na utilização de uma ferramenta é o seu custo. O Nominatim é uma opção atractiva do ponto de vista económico porque é de acesso gratuito e não tem custos associados à utilização de serviços de geocodificação e pesquisa geográfica. Em vez disso, o Google Maps oferece uma versão gratuita limitada, mas possui planos de preços diferenciados para volumes maiores de uso, o que pode gerar custos significativos em projetos de grande escala.

Uma característica já abordada é a customização e controle que o Nominatim oferece. Esta ferramenta fornece maior controle sobre a configuração e personalização da geocodificação e da funcionalidade de pesquisa. Você pode definir e ajustar parâmetros específicos, como a área geográfica de pesquisa, focar em determinados tipos de lugares e adaptar os resultados às suas necessidades. O Google Maps oferece opções de personalização, mas em menor escala e dentro dos limites estabelecidos pela plataforma.

Ao usar o Nominatim, você contribui para melhorar os dados do OpenStreetMap e se torna parte de uma comunidade global de usuários e desenvolvedores que trabalham juntos para manter e melhorar a qualidade dos dados geográficos. Isto permite-lhe beneficiar de uma fonte de dados em constante evolução e participar ativamente na sua melhoria.

Nominatim é um software de código aberto que você pode instalar e executar em seu próprio servidor ou infraestrutura, proporcionando mais flexibilidade em termos de hospedagem e adaptação às suas necessidades técnicas. Por outro lado, o Google Maps é um serviço em nuvem que requer a utilização da infraestrutura do Google para seu funcionamento.

Embora o Google Maps tenha seus próprios benefícios, como uma interface de usuário intuitiva e uma ampla gama de recursos adicionais integrados, o Nominatim se destaca por sua abordagem de dados abertos, personalização, controle e flexibilidade técnica. A escolha entre os dois depende das necessidades e requisitos específicos do seu projeto, bem como das suas considerações jurídicas, financeiras e de privacidade.

Agora que exploramos os recursos e vantagens do Nominatim, é hora de nos aprofundarmos no processo de criação do ambiente Docker através da ferramenta Docker Compose que incluirá este mecanismo de busca geográfica vinculado ao sistema de gerenciamento de banco de dados PostgreSQL.

Preparar o diretório de trabalho

Para criar seu ambiente Docker para PostgreSQL e Nominatim, você deve começar criando um arquivo docker-compose.yml. Simplificando, é um arquivo de texto que contém todas as instruções necessárias para construir o ambiente Docker. Crie um novo diretório e navegue até ele em seu terminal. Este será o seu diretório de trabalho para o tutorial.

mkdir tutorial-postgres-nominatim
cd tutorial-postgres-nominatim

Dentro do diretório de trabalho, crie um arquivo chamado docker-compose.yml e abra-o em um editor de texto.

touch docker-compose.yml

Escrever o conteúdo do docker-compose.yml

Adicione o seguinte conteúdo ao arquivo docker-compose.yml:

version: '3'


services:


  nominatim:

    image: mediagis/nominatim:4.2

    environment:

      - PBF_URL=https://download.geofabrik.de/north-america/mexico-latest.osm.pbf

      - REPLICATION_URL=http://download.geofabrik.de/north-america/mexico-updates/

      - IMPORT_WIKIPEDIA=false

      - NOMINATIM_PASSWORD=supersecret

    ports:

      - 8080:8080

    volumes:

      - nominatim-data:/var/lib/postgresql/14/main


volumes:

  nominatim-data:


No trecho de código acima, vários aspectos devem ser destacados. A primeira coisa é que um serviço chamado nominatim é construído a partir de uma imagem rotulada mediagis/nominatim, que já contém uma pré-compilação da integração do Nominatim com o sistema de banco de dados PostgreSQL e também com a extensão PostGIS habilitada. Isso significa que o uso desta imagem ignora a etapa de criação de um Dockerfile para instalar todas as dependências necessárias, simplificando o processo de configuração e reduzindo o tempo de implantação.

Outro elemento importante a levar em conta são as variáveis ​​de ambiente. Neste exemplo, queremos customizar a área de busca apenas para o México, portanto a variável de ambiente PBF_URL deve ser configurada com o caminho onde está localizada a fonte de dados OSM com a última atualização do país a ser importada dentro do Nominatim no primeiro carregamento.

Por outro lado, a variável REPLICATION_URL tem a responsabilidade de armazenar o caminho para obter atualizações futuras. Da mesma forma, é definida a variável IMPORT_WIKIPEDIA para ignorar o processo de importação dos dados da Wikipedia e, por último mas não menos importante, é definida a variável NOMINATIM_PASSWORD, que contém a credencial para conexão ao banco de dados.

Em geral, o uso de variáveis ​​de ambiente é uma prática comum na configuração de contêineres Docker. Estas variáveis ​​permitem personalizar o comportamento das aplicações e serviços executados dentro dos containers, o que aumenta sua flexibilidade e adaptabilidade.

Executar o container

Após salvar todo o conteúdo do arquivo docker-compose.yml, certifique-se de estar dentro do diretório de trabalho e execute o seguinte comando associado ao ambiente Docker:

docker compose up --build

Este comando é muito útil para vários serviços encontrados em docker-compose.yml, pois permite que você tenha cada serviço em um contêiner individual. Neste caso, apenas o serviço Nominatim será executado e estará disponível assim que a mensagem abaixo for exibida.


Acessar a Nominatim

Depois de iniciar o contêiner e ele estar em execução, você poderá acessar a ferramenta de geocodificação Nominatim através do seu navegador.

Para isso, basta digitar o seguinte endereço no seu navegador: http://localhost:8080/. Lembre-se de que o que você encontrará nesse caminho será uma resposta no formato JSON que contém informações detalhadas sobre o local que você está procurando.

A partir dessas informações, você pode obter dados como latitude, longitude e o endereço exato de qualquer local que deseja pesquisar. Deixo aqui um comando para tentar uma busca simples por um local de interesse como o Palácio de Belas Artes do México.

curl http://localhost:8080/search.php\?q\=Palacio%20de%20Bellas%20Artes\&polygon_geojson\=1\&format\=jsonv2 | jq

Em resumo, a integração do Nominatim com Docker e PostgreSQL é uma solução eficiente e versátil para gerenciamento de buscas geográficas e geolocalização em aplicações e projetos. Ao utilizar a imagem MEDIAGIS pré-construída, o processo de configuração é simplificado e o tempo de implantação é reduzido, permitindo que você se concentre no desenvolvimento da própria aplicação.

Além disso, o uso de variáveis ​​de ambiente permite customizar o comportamento do Nominatim de acordo com as necessidades específicas do projeto. No geral, esta solução oferece uma alternativa atraente a outras opções comerciais, como o Google Maps, e proporciona a flexibilidade e adaptabilidade necessárias em projetos de desenvolvimento de software.

Além disso, a imagem Nominatim Docker fornecida pela MEDIAGIS é de código aberto, o que significa que qualquer pessoa pode acessar o código-fonte e contribuir para melhorá-lo. Isso permite que a comunidade de desenvolvedores colabore para solucionar problemas ou adicionar novas funcionalidades ao projeto, o que beneficia todos os usuários da ferramenta.

Espero que este guia introdutório tenha sido útil.

Comece a explorar o mundo com Nominatim hoje mesmo!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.