Nominatim — open-source’owa usługa geokodowania i obsługi map
Nominatim to open-source’owa usługa geokodowania powiązana z projektem OpenStreetMap, która umożliwia konwersję adresów na współrzędne geograficzne i odwrotnie — doskonała alternatywa dla Google Maps API.
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 Dockera, co znacząco upraszcza proces instalacji.
Dlaczego warto używać Nominatim?
- Brak opłat licencyjnych — Nominatim jest open-source i można go uruchomić na własnej infrastrukturze.
- Kontrola nad danymi — pełna niezależność w zarządzaniu danymi i ich dostępnością.
- Bogate dane OSM — baza danych OpenStreetMap obejmuje szeroki zakres lokalizacji na całym świecie.
- Kompatybilność z Dockerem — dzięki Dockerowi Nominatim można uruchomić w odizolowanym środowisku, co upraszcza zarządzanie i skalowanie.
Instalacja Nominatim przy użyciu Dockera
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
Obraz
image— używamy oficjalnego obrazumediagis/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-datato 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 -dDocker 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=jsonPrzykład zapytania odwrotnego geokodowania (współrzędne na adres):
http://localhost:8080/reverse?lat=52.2297&lon=21.0122&format=jsonPowyż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
- Aplikacje mobilne — Nominatim jest używany w aplikacjach, które wymagają geokodowania adresów, takich jak aplikacje taksówkowe, dostawcze czy usługi lokalizacyjne.
- Systemy GIS — wykorzystywany do konwersji adresów na współrzędne geograficzne, idealny dla analiz przestrzennych i wizualizacji.
- E-commerce i logistyka — może służyć do weryfikacji adresów dostaw lub wyznaczania tras.
- 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
- Szybka instalacja i prostota — dzięki Dockerowi proces instalacji Nominatim jest uproszczony, bez potrzeby ręcznego konfigurowania zależności.
- Izolacja środowiska — Docker tworzy odizolowane środowisko, które zapobiega konfliktom z innymi aplikacjami na serwerze.
- Ł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.