AutoMapa, Google, HERE czy OpenStreetMap – Porównanie czterech geokoderów na tych samych danych

Do jednego zadania, zamiany adresów na współrzędne i odwrotnie, można dziś użyć kilku usług. Są różnie wyceniane, mają różne limity i działają z różną szybkością. Kilka z nich postanowiłem sprawdzić, jak wypadają w praktyce, na tych samych plikach i w tych samych warunkach.

Test wykonałem na czterech własnych aplikacjach z rodziny LiKoToN. Mają ten sam interfejs i różnią się wyłącznie usługą, z której korzystają podczas geokodowania:

AplikacjaUsługa w tleKlucz
LiKoToN AutoMapa GeocoderAutoMapa APItoken i hasło
LiKoToN Google GeocoderGoogle Geocoding APIklucz API
LiKoToN HERE GeocoderHERE Geocoding and Search APIklucz API
LiKoToN OpenStreetMap GeocoderNominatim (publiczny serwer OSM)brak, wymaga adresu kontaktowego

Wszystkie cztery aplikacje mają te same zakładki: Geokodowanie, Odwrotne geokodowanie i Import (pliki CSV i XLSX. Wyniki można pobrać jako pliki CSV, XLSX lub JSON). Aplikacja przetłumaczona jest na siedem języków. Posiada tryb jasny i ciemny do wyboru.

Jak testowałem?

  • Geokodowanie: plik XLSX z 50 adresami w Polsce (kod pocztowy, miejscowość, ulica, numer). Są w nim zarówno adresy poprawne, jak i „brudne”: skróty (W. Witosa, Krzyż Wlkp.), nazwy bez polskich znaków (Lodz), liczebniki słownie (Jana Pawła Drugiego), adresy bez numeru lub bez ulicy, numery z dopiskami (7 oficyna, 4/8).
  • Odwrotne geokodowanie: plik CSV z 31 punktami (współrzędne) z różnych części Polski, w tym ze wsi i z pól poza zabudową.
  • Pliki przechodziły przez aplikacje tak samo, jak w zakładce Import: porcjami po 100 rekordów, w OSM po 20, ponieważ publiczny Nominatim obsługuje około jednego zapytania na sekundę.
  • Zapytania szły przez lokalny serwer, z jednego łącza. Całość powtórzyłem dwa razy, a czasy różniły się o 1–2%, więc podaję średnie.

Czas: różnica rzędu 20 razy

AplikacjaGeokodowanie (50 adresów)Czas na adresOdwrotne geokodowanie (31 punktów)Czas na punkt
AutoMapa2,8 s56 ms2,4 s77 ms
Google4,1 s83 ms3,3 s105 ms
HERE12,1 s243 ms8,3 s268 ms
OpenStreetMap59 s1 170 ms36,5 s1 180 ms
  • AutoMapa wygrywa, bo ma prawdziwy tryb wsadowy: cała porcja leci jednym zapytaniem (geocodemulti, revgeocodemulti).
  • Google i HERE nie mają takiego trybu, więc aplikacje wysyłają pojedyncze zapytania równolegle. Google jest tu około 3 razy szybszy od HERE.
  • OpenStreetMap jest wolny z założenia. Zasady publicznego serwera dopuszczają około 1 zapytania na sekundę, a aplikacja tego pilnuje. Plik na 10 tysięcy adresów to blisko trzy godziny. Do większych zadań potrzebny jest własny serwer Nominatim.

Geokodowanie: kto znalazł co?

AplikacjaZnalezione adresy
AutoMapa50 / 50
Google50 / 50
HERE49 / 50
OpenStreetMap31 / 50

Wszystkie cztery aplikacje wskazywały zwykle ten sam budynek. Różnice dotyczą przypadków granicznych:

  • Garwolin, Popiełuszki 39: Google przesunął punkt o 1,7 km, HERE o ok. 245 km, OSM o 0,9 km. To jeden z adresów, na których usługi rozjechały się najbardziej.
  • Komorniki, numer 24, bez ulicy: w Polsce to nazwa kilku miejscowości. AutoMapa i Google wskazały to samo miejsce, a HERE i OSM trafiły o 258 km i 98 km dalej. Adres niejednoznaczny dostaje wynik pewny siebie, ale może być zły.
  • Warszawa, Jana Pawła II 46: OSM o 8,8 km od pozostałych.

OpenStreetMap nie znalazł 19 adresów z 50. To nie tylko „brudne” dane, bo wśród nich są wzorowo zapisane adresy z dużych miast (Kraków, Wrocław, Gdańsk, Szczecin). Wygląda na to, że winę ponosi mniejsze pokrycie danymi, różnice w nazwach ulic i dość sztywne dopasowanie kodu pocztowego. Tam, gdzie OSM adres znalazł, wynik był zwykle precyzyjny: 22 z 31 trafień ma najwyższy znacznik jakości (9).

Znaczniki jakości: każda usługa wylicza po swojemu, więc skali 0–9 w aplikacjach nie należy porównywać wprost między usługami. Warto za to czytać dodatkowe pola:

  • Google: locationType – 38 wyników typu ROOFTOP (dokładny punkt budynku), 2 interpolowane, 4 na środek obiektu i 6 przybliżonych.
  • HERE: partialMatch zwrócił true aż w 35 z 49 wyników. HERE często „dopasowuje częściowo”, np. gdy ulica ma inną formę niż w danych, więc ta flaga jest mało selektywna.
  • AutoMapa: 45 wyników z jakością 9 i 5 z jakością 8.

Odwrotne geokodowanie: wszystkie znalazły wszystko, ale z różnym detalem

Dla 31 punktów każda aplikacja zwróciła wynik dla każdego punktu. Różnią się tym, ile szczegółów udało się ustalić:

AplikacjaZnaleziony numer domuZnaleziony kod pocztowyZnaleziona ulica
AutoMapa193128
Google212721
HERE243128
OpenStreetMap233125
  • Dokładność dopasowania: Google, HERE i OSM zwracają też współrzędne znalezionego obiektu, więc można zmierzyć, jak daleko jest od punktu zapytania. Mediana to 3 m dla Google, 8 m dla OSM i 14 m dla HERE. Maksima to odpowiednio 111 m, 147 m i 730 m. W AutoMapie można skonfigurować promień przyciągania (domyślnie 20 m), więc przy wyższych wartościach wynik byłby lepszy.
  • Punkty bez budynku w pobliżu: usługa zwraca wtedy zwykle samą miejscowość, a czasem najbliższą ulicę, bez numeru domu (przykłady w wynikach: wiersze 11 i 14 pliku CSV).
  • Różne podejście do numeru: dla punktu na ul. Sikorskiego AutoMapa zwróciła 79A/79B, HERE i OSM 79A, a Google 21, czyli sąsiedni, inny numer.

Co wybrać?

PotrzebaRekomendacja
Duże pliki, szybkość, polskie adresyAutoMapa – najszybsza i z kompletem trafień
Najlepsza wykrywalność i precyzja wyniku, dodatkowe metadaneAutoMapa i Google – 100% trafień
Uzupełnianie kodów pocztowych i detali w odwrotnym geokodowaniuHERE – dla domyślnych ustawień
Małe zadania, brak budżetu, brak kluczaOpenStreetMap, ale z wolniejszym tempem i niższą skutecznością

Ceny, limity zapytań i warunki licencji (w tym zasady przechowywania wyników geokodowania) zmieniają się, więc przed wyborem sprawdź aktualne cenniki i regulaminy każdego dostawcy. Szczególnie dotyczy to Google i HERE przy dużych wolumenach oraz zasad Nominatim przy większym ruchu.

Dostęp

AutoMapa wymaga kontaktu z działem biznesowym, aby uzyskać token i hasło oraz ustalić liczbę transakcji. Dostałem dostęp tylko do geokodowania adresów w Polsce.

Google ma prostą metodę wygenerowania klucza API. Warunkiem jest dodanie karty płatniczej do Google Maps Platform. Oferuje 10 000 darmowych zapytań miesięcznie we wszystkich krajach.

W HERE należy podać dane karty płatniczej, aby można było wygenerować klucz API. Podobnie jak w Google, ale tu nie jest tak czytelny sposób wygenerowania klucza. Oferuje za to aż 30 000 darmowych zapytań miesięcznie we wszystkich krajach.

OpenStreetMap, a właściwie Nominatim, jest usługą darmową, bez limitu transakcji. Ma za to limit na czas, co jaki można przekazywać zapytanie i jest to aż 1 sekunda. Ograniczenie można obejść, instalując usługę na własnym serwerze.

Ograniczenia tego testu

  • Mały zbiór: 50 adresów i 31 punktów. To próbka do wyczucia, a nie reprezentatywna statystyka dla całej Polski. Celowo, aby sprawdzić różne błędy adresowe.
  • Środowisko: czasy zawierają drogę z mojego komputera i serwera lokalnego do usługi. Z innego miejsca lub hostingu mogą wyjść inaczej, a proporcje powinny być podobne.
  • Jeden dzień pomiaru: powtórzyłem pomiar dwukrotnie z bardzo podobnym wynikiem, ale obciążenie usług zmienia się w czasie.

Własne dane możesz sprawdzić, wczytując plik w zakładce Import.

Wszystkie cztery aplikacje są dostępne na stronie apps.likoton.pl. Ich opisy znajdziesz w artykułach:

Wizualizacja danych

Wyniki geokodowania i odwrotnego geokodowania możesz zobaczyć nie tylko w arkuszach, ale i na mapie uMap:

Pełny ekran

Pliki z wynikami

Oceń wpis
[Maks.: 0 Średnia: 0]

Komentarze

0 odpowiedzi na “AutoMapa, Google, HERE czy OpenStreetMap – Porównanie czterech geokoderów na tych samych danych”

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.