GeoDesk i OpenStreetMap — agent geograficzny bez internetu
Wyszukiwanie restauracji, stacji, parkingów i punktów POI liczone lokalnie z pliku OSM, bez Overpass API i bez połączenia z siecią.

Zapytania geograficzne to jeden z niewielu przypadków, w których dane offline są nie tylko możliwe, ale wręcz lepsze: OpenStreetMap można pobrać w całości, a zapytania przestrzenne liczą się szybciej lokalnie niż przez publiczne API.
Problem
Overpass API jest świetne do zapytań okazjonalnych. Przy agencie, który odpytuje mapę kilkadziesiąt razy w trakcie jednego zadania, kończy się limitami i czasem odpowiedzi liczonym w sekundach. Do tego dochodzi zależność od łącza — a agent ma działać także w warsztacie bez zasięgu.
Przygotowanie danych
Punktem wyjścia jest wycinek regionu w formacie PBF. Cała Polska to kilkaset megabajtów; pojedyncze województwo znacznie mniej. Konwersja do formatu GeoDesk buduje indeks przestrzenny, dzięki któremu zapytanie „co jest w promieniu kilometra” nie wymaga przeglądania całego zbioru.
Aktualizacja danych to osobny, świadomie rzadki proces. Mapa nie zmienia się z godziny na godzinę, więc odświeżamy ją raz na kilka tygodni.
Od pytania do filtra
Rola modelu językowego jest tu wąska i dobrze określona: zamienia zdanie na filtr OSM. „Gdzie zjem coś ciepłego w promieniu kilometra” staje się zapytaniem o obiekty oznaczone jako restauracja lub bar w zadanym promieniu.
Ten podział ma konkretną zaletę: model nie musi znać geografii. Nie zgaduje odległości ani nie wymyśla adresów — te dane pochodzą z indeksu, więc nie da się ich zhalucynować.
Ograniczenia, o których warto wiedzieć
Dane OSM są tworzone społecznościowo, więc ich kompletność bywa nierówna. W mieście godziny otwarcia ma większość lokali, na wsi prawie żaden. Agent musi to komunikować wprost — „brak danych o godzinach” jest uczciwszą odpowiedzią niż milczące pominięcie obiektu.
Drugie ograniczenie to brak informacji o ruchu i czasach przejazdu. Odległość w linii prostej nie jest odległością drogową, a przy planowaniu trasy różnica bywa dwukrotna. Do tego trzeba osobnego silnika routingu — również działającego lokalnie.
Sortowanie i wzbogacenie
Wyniki surowe z OSM bywają ubogie: nazwa, współrzędne, kilka tagów. Sortujemy je po odległości, ale też po kompletności danych — obiekt z godzinami otwarcia i telefonem jest praktyczniejszy niż punkt z samą nazwą.
Wzbogacenie o dane lokalne to element, którego nie da się kupić: własne notatki o tym, gdzie kupujemy materiał i który tartak przetrze kłodę na wymiar, siedzą w tej samej bazie co punkty z mapy.

Wynik
Zapytanie o punkty w promieniu kilku kilometrów wykonuje się w czasie nieodczuwalnym dla użytkownika, bez limitów i bez łącza. Największym zaskoczeniem był efekt uboczny: agent przestał wymyślać nieistniejące miejsca, bo nie ma już takiej możliwości — lista pochodzi z indeksu, a nie z modelu.

