Publication date:

11/18/24

Nominatim – Open-source’owa usługa geokodowania i obsługi map

Czym jest Nominatim?

Nominatim to open-source’owa usługa geokodowania powiązana z projektem OpenStreetMap (OSM), która umożliwia konwersję adresów na współrzędne geograficzne i odwrotnie. Jest doskonałą alternatywą dla komercyjnych usług geokodowania, takich jak Google Maps API, umożliwiając użytkownikom pełną kontrolę nad danymi lokalizacyjnymi. W artykule pokażemy, jak uruchomić Nominatim z użyciem Docker, co znacząco upraszcza proces instalacji.

Dlaczego warto używać Nominatim?
  1. Brak opłat licencyjnych: Nominatim jest open-source i można go uruchomić na własnej infrastrukturze.

  2. Kontrola nad danymi: Pełna niezależność w zarządzaniu danymi i ich dostępnością.

  3. Bogate dane OSM: Baza danych OpenStreetMap obejmuje szeroki zakres lokalizacji na całym świecie.

  4. Kompatybilność z Dockerem: Dzięki Dockerowi Nominatim można uruchomić w odizolowanym środowisku, co upraszcza zarządzanie i skalowanie.

Instalacja Nominatim przy użyciu Docker

Uruchomienie Nominatim za pomocą Dockera pozwala na łatwą instalację i minimalizuje potrzebę konfiguracji zależności. W poniższej instrukcji korzystamy z oficjalnego obrazu Nominatim, co umożliwia szybkie i niezawodne wdrożenie.

Krok 1: Tworzenie pliku docker-compose.yml

Stwórz plik docker-compose.yml, który zdefiniuje usługi potrzebne do uruchomienia Nominatim.

services:
  nominatim:
    image: mediagis/nominatim:latest
    container_name: nominatim
    environment:
      NOMINATIM_IMPORT_OSM_DATA: /app/data/osm.pbf
      POSTGRESQL_DATA_DIR: /var/lib/postgresql/12/main
      NOMINATIM_PBF_URL: https://download.geofabrik.de/europe/poland-latest.osm.pbf
      NOMINATIM_REPLICATION_URL: https://download.geofabrik.de/europe/poland-updates
      POSTGRES_PASSWORD: nominatimpassword
      NOMINATIM_EMAIL: test@hypedevgroup.pl
    volumes:
      - nominatim-data:/var/lib/postgresql/12/main
    ports:
      - "8080:8080"
    shm_size: 1gb

volumes:
  nominatim-data

Wyjaśnienie konfiguracji
  • image: Używamy oficjalnego obrazu mediagis/nominatim, który zawiera wszystkie potrzebne zależności i konfiguracje.

Środowisko
  • NOMINATIM_IMPORT_OSM_DATA: Lokalizacja pliku .osm.pbf z danymi geograficznymi, które zostaną zaimportowane.

  • NOMINATIM_PBF_URL: URL pliku .osm.pbf, który zostanie automatycznie pobrany i zaimportowany przy pierwszym uruchomieniu.

  • NOMINATIM_REPLICATION_URL: URL dla replikacji, aby Nominatim mógł być automatycznie aktualizowany.

  • POSTGRES_USER oraz POSTGRES_PASSWORD: Dane logowania do bazy PostgreSQL.

  • NOMINATIM_EMAIL: Adres e-mail używany przez Nominatim do raportów o błędach.

Wolumeny
  • volumes: nominatim-data to wolumen, który pozwala na przechowywanie danych PostgreSQL pomiędzy restartami kontenera.

Krok 2: Uruchomienie Nominatim

Aby uruchomić Nominatim, przejdź do katalogu, w którym znajduje się plik docker-compose.yml, a następnie wykonaj polecenie:

docker-compose up -d

Docker pobierze obraz Nominatim, skonfiguruje bazę danych PostgreSQL i zaimportuje plik .osm.pbf wskazany w konfiguracji.

Testowanie Nominatim

Po uruchomieniu kontenera Nominatim powinien być dostępny pod adresem http://localhost:8080. Możesz przetestować działanie usługi, wysyłając żądanie do jednego z punktów końcowych API Nominatim.

Przykład żądania geokodowania

Przykład zapytania geokodowania (adres na współrzędne):

http://localhost:8080/search?q=Warsaw&format=json

Przykład zapytania odwrotnego geokodowania (współrzędne na adres):

http://localhost:8080/reverse?lat=52.2297&lon=21.0122&format=json

Powyższe żądania zwracają dane w formacie JSON, które zawierają informacje o lokalizacji lub adresie na podstawie bazy OpenStreetMap.

Podstawowa konfiguracja Nominatim

Nominatim można konfigurować, aby dostosować sposób przetwarzania danych lokalizacyjnych i ustawić zasady użycia. Możesz na przykład skonfigurować maksymalną liczbę żądań na minutę oraz określić zasady buforowania.

Zastosowania Nominatim
  1. Aplikacje mobilne: Nominatim jest używany w aplikacjach, które wymagają geokodowania adresów, takich jak aplikacje taksówkowe, dostawcze, czy usługi lokalizacyjne.

  2. Systemy GIS: Wykorzystywany do konwersji adresów na współrzędne geograficzne, idealny dla analiz przestrzennych i wizualizacji.

  3. E-commerce i logistyka: Może służyć do weryfikacji adresów dostaw lub wyznaczania tras.

  4. Mapy i usługi lokalizacyjne: Zintegrowany z OpenStreetMap, Nominatim pozwala tworzyć własne rozwiązania mapowe.

Automatyczne aktualizacje danych OSM

Nominatim obsługuje funkcję replikacji danych, co pozwala na automatyczne pobieranie i stosowanie aktualizacji z bazy OpenStreetMap. W pliku docker-compose.yml skonfigurowaliśmy zmienną NOMINATIM_REPLICATION_URL, która umożliwia automatyczne aktualizacje.

Korzyści z używania Nominatim z Dockerem
  1. Szybka instalacja i prostota: Dzięki Dockerowi, proces instalacji Nominatim jest uproszczony, bez potrzeby ręcznego konfigurowania zależności.

  2. Izolacja środowiska: Docker tworzy odizolowane środowisko, które zapobiega konfliktom z innymi aplikacjami na serwerze.

  3. Łatwość skalowania: W miarę wzrostu ruchu Nominatim można łatwo skalować, uruchamiając kontener na klastrze serwerów.

Podsumowanie

Nominatim to solidne rozwiązanie do geokodowania, które pozwala na pełną kontrolę nad danymi lokalizacyjnymi. Dzięki integracji z Dockerem, Nominatim może być szybko wdrożony i łatwo zarządzany. Jest to idealne narzędzie dla aplikacji, które wymagają pracy z danymi geograficznymi i lokalizacyjnymi, niezależne od ograniczeń komercyjnych licencji.

Korzyści z używania Nominatim:
  • Brak kosztów licencyjnych,

  • Pełna kontrola nad danymi,

  • Możliwość skalowania i łatwa integracja z aplikacjami.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.

Umów się na bezpłatną konsultację

Porozmawiaj z nami, a z przyjemnością oszacujemy Twój projekt bez żadnych kosztów.

Skontaktuj się z nami

HypeDev Group sp. z o.o.

ul. Jana III Sobieskiego 11/18

40-082 Katowice, Polska

+48 603 675 293

kontakt@hypedevgroup.pl

NIP: 6343019462

© HypeDev Group sp. z o.o.