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:
| Aplikacja | Usługa w tle | Klucz |
|---|---|---|
| LiKoToN AutoMapa Geocoder | AutoMapa API | token i hasło |
| LiKoToN Google Geocoder | Google Geocoding API | klucz API |
| LiKoToN HERE Geocoder | HERE Geocoding and Search API | klucz API |
| LiKoToN OpenStreetMap Geocoder | Nominatim (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
| Aplikacja | Geokodowanie (50 adresów) | Czas na adres | Odwrotne geokodowanie (31 punktów) | Czas na punkt |
|---|---|---|---|---|
| AutoMapa | 2,8 s | 56 ms | 2,4 s | 77 ms |
| 4,1 s | 83 ms | 3,3 s | 105 ms | |
| HERE | 12,1 s | 243 ms | 8,3 s | 268 ms |
| OpenStreetMap | 59 s | 1 170 ms | 36,5 s | 1 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?
| Aplikacja | Znalezione adresy |
|---|---|
| AutoMapa | 50 / 50 |
| 50 / 50 | |
| HERE | 49 / 50 |
| OpenStreetMap | 31 / 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:
partialMatchzwró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ć:
| Aplikacja | Znaleziony numer domu | Znaleziony kod pocztowy | Znaleziona ulica |
|---|---|---|---|
| AutoMapa | 19 | 31 | 28 |
| 21 | 27 | 21 | |
| HERE | 24 | 31 | 28 |
| OpenStreetMap | 23 | 31 | 25 |
- 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ć?
| Potrzeba | Rekomendacja |
|---|---|
| Duże pliki, szybkość, polskie adresy | AutoMapa – najszybsza i z kompletem trafień |
| Najlepsza wykrywalność i precyzja wyniku, dodatkowe metadane | AutoMapa i Google – 100% trafień |
| Uzupełnianie kodów pocztowych i detali w odwrotnym geokodowaniu | HERE – dla domyślnych ustawień |
| Małe zadania, brak budżetu, brak klucza | OpenStreetMap, 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:
- LiKoToN AutoMapa Geocoder – geokodowanie adresów w przeglądarce
- LiKoToN Google Geocoder – geokodowanie adresów z całego świata w przeglądarce
- LiKoToN OpenStreetMap Geocoder – geokodowanie adresów bez klucza API
- LiKoToN HERE Geocoder – geokodowanie adresów z HERE Geocoding and Search API
Wizualizacja danych
Wyniki geokodowania i odwrotnego geokodowania możesz zobaczyć nie tylko w arkuszach, ale i na mapie uMap:


Dodaj komentarz