help.geoloc.imetroll.comIMETROLL Laboratory of Technology · Nominatim 5.1

Dokumentacja użycia geoloc.imetroll.com

Bramka Nominatim 5.1 do wyszukiwania adresów i POI. Ta strona opisuje publiczne endpointy, token, limity i przepis na najbliższy obiekt — czego samo API nie sortuje po odległości.

Aktualizacja 14.11.2026 · wersja oprogramowania 5.1.0 · sublicencja „IMETROLL Laboratory of Technology”

Czym jest geoloc

Adres bazowy: https://geoloc.imetroll.com. Usługa udostępnia API zgodne z Nominatim 5.1: /search, /reverse, /lookup, /details i /status. Wyniki pochodzą z OpenStreetMap (ODbL). Domyślna bramka dla komponentu Delphi TNominatimSearchProvider i raportów Parcel.

Ta dokumentacja jest statyczna i nie zawiera prawdziwego tokenu. W przykładach jest wyłącznie placeholder YOUR_TOKEN.

Endpointy

Wszystkie metody to GET (ew. HEAD). Do każdego zapytania (także /status) należy dodać token=YOUR_TOKEN. Bez tokenu serwer odpowiada 401 z komunikatem w stylu „Brak tokena – dodaj &token=…”.

Wyszukiwanie tekstowe lub strukturalne. Kolejność wyników to ranking ważności Nominatim (importance), nie odległość. Duży viewbox przy małym limit może odrzucić obiekt faktycznie najbliższy.

ParametrOpis
qZapytanie wolnotekstowe. Działa też wiele special phrases po polsku i operatory w stylu [railway=station] (patrz niżej).
street, city, county, state, country, postalcodeWyszukiwanie strukturalne (zamiast q).
formatjson (zalecane), także jsonv2, geojson, xml.
limitLiczba wyników. Do szukania „najbliższego” dawaj zapas (np. 20), nie 1.
viewboxlon1,lat1,lon2,lat2 (zachód, północ, wschód, południe albo para narożników). Preferowany obszar.
bounded1 = tylko wewnątrz viewbox.
countrycodesnp. pl.
accept-languagenp. pl.
addressdetails, namedetails, extratagsFlagi Nominatim 0/1. extratags=1 jest przyjmowane, ale tagi nie wracają — styl importu bez extratags (patrz niżej).
layer / featureTypeFiltrowanie warstw Nominatim 5 (np. address, poi, railway) tam, gdzie serwer to obsługuje.
dedupe, exclude_place_ids, polygon_geojsonJak w Nominatim 5.1.
tokenWymagany sekret. Nigdy nie wklejaj prawdziwego tokenu do dokumentacji, logów ani JS w przeglądarce publicznej.
GET https://geoloc.imetroll.com/search?q=…&format=json&limit=20&namedetails=0&accept-language=pl&viewbox=W,N,E,S&bounded=1&countrycodes=pl&token=YOUR_TOKEN

GET /reverse

Adres dla punktu lat, lon. Opcjonalnie zoom (poziom szczegółowości), format, addressdetails, accept-language, token.

GET https://geoloc.imetroll.com/reverse?lat=52.46412&lon=20.88074&format=json&zoom=18&accept-language=pl&token=YOUR_TOKEN

GET /lookup

Obiekty po identyfikatorach OSM: osm_ids=W123,R456,N789 (prefiks typu W/R/N), plus format, addressdetails, token.

GET /details

Szczegóły jednego miejsca: place_id=… albo osmtype=W&osmid=…. Pozostałe opcje jak w Nominatim 5.1 DetailsOptions.

GET /status

Sonda żywotności. Też wymaga tokenu (bez niego: HTTP 401). Przy poprawnym tokenie zwraca m.in. software_version (5.1.0) i sublicencję „IMETROLL Laboratory of Technology”. Wynik sondy warto cache’ować po stronie klienta (w komponencie Delphi: StatusCacheSeconds).

Token i limity

Token jest sekretem. Wydawany jest osobno, nie publikujemy go tutaj i nie umieszczamy w DFM, w logach URL, w komunikatach błędów ani w publicznym HTML/JS. W logach stosuj maskowanie (token=***), tak jak metoda RedactedURL w Delphi. Jeśli token jest powiązany z Referer/Origin, używaj wartości podanych przy wydaniu klucza.

Brak „nearest” — przepis na najbliższy POI

Nie ma osobnego endpointu „daj najbliższy X”. /search sortuje po importance. Żeby dostać najbliższy POI (szkołę, stację PKP, sklep…):

  1. Buduj viewbox wokół punktu i ustawiaj bounded=1.
  2. Szukaj warstwami na zewnątrz: 2 km → 5 km → 10 km → 25 km → 50 km. Nie kończ na pierwszej warstwie, jeśli kategoria jeszcze nie ma trafienia.
  3. Dla każdego kandydata licz odległość haversine (albo równoważnie) od punktu i wybierz minimum. Nie wierz kolejności tablicy z API.
  4. Dawaj limit z zapasem (ok. 20). Mały limit + duży viewbox pomija bliskie, mniej „ważne” obiekty.
  5. Odrzucaj trafienia spoza promienia bieżącej warstwy (z małym zapasem, np. 80 m) — inaczej dalszy hit blokuje lepsze źródło na szerszej warstwie.
  6. Dla PKP zawsze pytaj o stację i przystanek: [railway=station] i [railway=halt] (albo stacja kolejowa oraz przystanek kolejowy). Samo „stacja kolejowa” nie zwraca haltów (np. Chotomów).
  7. Fraza stacja kolejowa near Skrzeszew przy bounded=1 może zwrócić 0 wyników — „near” + bounded nie zastępuje warstw + haversine.

W raportach Parcel ten przepis jest zaimplementowany w module family POI (lista wszystkich POI w 10 km, a gdy w 10 km nic nie ma — jeden najbliższy poza 10 km, do 50 km).

Special phrases i kategorie

Na geoloc.imetroll.com special phrases są zaimportowane: działają polskie nazwy kategorii i operatory w nawiasach kwadratowych. Na lokalnym Nominatim 127.0.0.1:8110 (dane Polski) special phrases nie są zaimportowane — tam polegaj na tagach / Overpass.

Kategoria PLENTagi OSM / class+typePrzykładowe q= (special phrases)
żłobeknurseryamenity=childcareżłobek, nursery
przedszkolekindergartenamenity=kindergartenprzedszkole, kindergarten
szkoła podstawowaprimary schoolamenity=school + isced:level=1 / nazwaszkoła podstawowa, szkoła
liceum/technikumsecondary schoolamenity=school + liceum/technikum / isced 2–3liceum, technikum, szkoła średnia
sklep spożywczygroceryshop=convenience|greengrocer|butcher|deli|general|grocery|kiosksklep spożywczy, sklep
marketsupermarketshop=supermarket|hypermarket|wholesalesupermarket, Biedronka, Lidl, market
piekarniabakeryshop=bakerypiekarnia, bakery
aptekapharmacyamenity=pharmacyapteka, pharmacy
pocztapost officeamenity=post_officepoczta, urząd pocztowy
Paczkomat/InPostparcel lockeramenity=parcel_locker, brand=InPostInPost, Paczkomat
stacja paliwfuel stationamenity=fuelOrlen, stacja paliw, Circle K, Shell, BP
przychodnia POZprimary clinicamenity=clinic / healthcare=clinicprzychodnia, ośrodek zdrowia, POZ
lekarzdoctoramenity=doctors / healthcare=doctorlekarz, gabinet lekarski
dentystadentistamenity=dentistdentysta, stomatolog
szpital/SORhospital / ERamenity=hospitalszpital, SOR, hospital
boisko/Orlikpitch / Orlikleisure=pitchOrlik, boisko
pływalniaswimming poolleisure=swimming_pool (pomiń access=private)pływalnia, basen
hala sportowasports hallleisure=sports_hall|sports_centrehala sportowa
siłowniagymleisure=fitness_centre / amenity=gymsiłownia, fitness, gym
plac zabawplaygroundleisure=playgroundplac zabaw, playground
parkparkleisure=park|gardenpark, skwer
bibliotekalibraryamenity=librarybiblioteka, library
dom kulturycommunity centreamenity=community_centre|arts_centredom kultury, GOK
kinocinemaamenity=cinemakino, cinema
kościółchurchamenity=place_of_worshipkościół, parafia, church
przystanekbus stophighway=bus_stop / amenity=bus_stationprzystanek autobusowy, bus stop
stacja kolejowa / przystanek PKPrailway station / haltrailway=station oraz railway=haltstacja kolejowa, przystanek kolejowy, [railway=station], [railway=halt]
OSPfire stationamenity=fire_stationOSP, straż pożarna, remiza
policjapoliceamenity=police (nie straż miejska)policja, komisariat
bankomatATMamenity=atmbankomat, ATM

Mapowanie musi brać pod uwagę tagi OSM, nie tylko nazwę (np. sklep to konkretne shop=*, nie każdy hit na słowo „sklep”). Halty kolejowe i stacje to dwie klasy.

extratags (nie są włączone)

Styl importu geoloc nie ma włączonych extratags. Parametr extratags=1 nie zwraca słownika tagów OSM. Do tagów (isced:level, access, healthcare, brand, wikidata…) użyj Overpass. Preferowane publiczne instancje, w tej kolejności: https://overpass.openstreetmap.fr/api/interpreter, potem overpass-api.de, overpass.kumi.systems, overpass.private.coffee. Odpowiedź HTTP 200 z nie-datowym timestamp_osm_base (np. z overpass.osm.ch) należy odrzucić — to bywa pusta / zła baza, nie sukces.

Przykładowe zapytania i wyniki

Punkt testowy: działka przy ul. Familijnej 16a, Skrzeszew (gmina Wieliszew), centroid ok. lon=20.88074, lat=52.46412. Pomiary z 14.11.2026, token w URL zastąpiony placeholderem. Odległości liczone haversine od centroidu, nie „kolejnością z /search”.

1. Przystanek kolejowy w viewbox (znajduje Chotomów)

GET https://geoloc.imetroll.com/search?q=przystanek+kolejowy&format=json&limit=20&namedetails=0&accept-language=pl&viewbox=20.75,52.56,21.01,52.37&bounded=1&countrycodes=pl&token=YOUR_TOKEN

Wynik (skrót): halt Chotomów, ok. 5,4 km (5391 m). To samo daje q=[railway=halt]. Samo q=[railway=station] albo q=stacja kolejowa zwraca tylko stacje, bez haltów — Chotomowa wtedy nie ma.

2. „near” + bounded — pułapka

GET https://geoloc.imetroll.com/search?q=stacja+kolejowa+near+Skrzeszew&format=json&bounded=1&viewbox=20.75,52.56,21.01,52.37&countrycodes=pl&token=YOUR_TOKEN

Wynik: 0 trafień. Nie oznacza to braku stacji w okolicy. Użyj przepisu z warstw i haversine, osobno station + halt.

3. Najbliższe stacje i halty (po przeliczeniu odległości, do 10 km)

  1. Chotomów (halt) — 5,4 km
  2. Legionowo Przystanek (halt) — 6,3 km
  3. Legionowo Piaski (station) — 7,1 km
  4. Michałów-Reginów (halt) — 7,2 km
  5. Wieliszew (station) — 7,5 km
  6. dalej m.in. Legionowo, Wieliszew Centrum, Janówek, Zegrze Południowe, Pomiechówek

Gdyby brać tylko „stacja kolejowa”, lista pominęłaby Chotomów i inne halty.

4. Inne typowe POI przy tym samym punkcie

Nazwy i odległości pochodzą z połączenia geoloc + lokalny Nominatim + Overpass; sam geoloc nie gwarantuje, że pierwszy element tablicy jest najbliższy.

geoloc a lokalny Nominatim :8110

geoloc.imetroll.comLokalny Nominatim (127.0.0.1:8110)
OprogramowanieNominatim 5.1.0 (bramka)Nominatim 5.1 (kontener mediagis, PBF Polski)
Special phrasestak (nazwy PL i operatory)nie
extratagsnie włączoneinny styl importu — i tak tagi do klasyfikacji bierz z Overpass, jeśli potrzeba pełnych tagów
Tokenwymagany (YOUR_TOKEN)usługa lokalna, bez publicznego tokenu
Zastosowaniewspólna bramka (Parcel, komponenty Delphi, inne aplikacje)uzupełnienie / fallback na serwerze aplikacji

W praktyce dobre wyniki daje złożenie: najpierw geoloc (frazy), potem lokalny Nominatim, na końcu Overpass po tagach, z deduplikacją po współrzędnych i wyborem najbliższego.

Wikipedia / Wikidata

Wikipedia i Wikidata nie są źródłem wyszukiwania najbliższego POI — nie zastąpią tagów OSM ani warstw odległości. Ewentualne uzupełnienie nazwy lub opisu ma sens tylko wtedy, gdy obiekt jest już znaleziony i ma z Overpassa tag wikidata / wikipedia. Nie dodawaj żywego API Wikipedii do ścieżki wyszukiwania.

Licencja i cytowanie

Dane mapowe: © OpenStreetMap contributors, licencja ODbL. W aplikacji musi być widoczne zastrzeżenie „© OpenStreetMap contributors”. Nominatim jest oprogramowaniem open source; bramka geoloc.imetroll.com jest prowadzona przez IMETROLL Laboratory of Technology.

Publiczny nominatim.openstreetmap.org ma własne, ostrzejsze zasady (m.in. 1 zap/s, bez autouzupełniania) — ta dokumentacja dotyczy wyłącznie geoloc.imetroll.com.