← Baza wiedzy

Jak powstaje mapa: od bazy UKE do markera

Każdy punkt na mapie stacjebazowe.pl to nie szacunek ani model, lecz wpis z oficjalnego rejestru państwowego, który przeszedł przez kilkuetapowy proces przetwarzania. Poniżej opisujemy ten proces krok po kroku — uczciwie, łącznie z jego ograniczeniami.

Jedno źródło: rejestr pozwoleń radiowych UKE

Cała mapa opiera się na danych Urzędu Komunikacji Elektronicznej. UKE wydaje operatorom pozwolenia radiowe i publikuje ich wykaz w Biuletynie Informacji Publicznej. Każde pozwolenie zawiera m.in. współrzędne geograficzne stacji, pasmo, system (GSM/UMTS/LTE/5G NR), podmiot użytkujący i numer decyzji. Nie korzystamy z żadnych danych pozyskanych od operatorów ani z pomiarów w terenie — wyłącznie z tego, co UKE udostępnia publicznie.

W praktyce pobieramy dwa zestawy plików z BIP UKE i łączymy je w jedną całość:

Te dwa źródła czasem się różnią: jedno może zawierać stację, której nie ma w drugim, albo mieć dokładniejsze współrzędne. Dlatego nie wybieramy jednego z nich — scalamy je rekord po rekordzie, a gdy współrzędne w jednym są puste lub błędne, uzupełniamy je z drugiego. To, jak czytać poszczególne pola tych wykazów, opisujemy szczegółowo w artykule Jak czytać dane UKE.

Cykl aktualizacji

Synchronizacja jest automatyczna i uruchamiana regularnie. Skrypt najpierw sprawdza daty publikacji wykazów w BIP UKE i porównuje je z datami zapamiętanymi przy poprzednim przebiegu. Jeśli nic się nie zmieniło, mapa nie jest przebudowywana — nie marnujemy zasobów na identyczne dane. Jeśli UKE opublikowało nowszą wersję choć jednego z wykazów, uruchamia się pełne przetwarzanie i mapa zostaje wgrana w nowej wersji. Dzięki temu opóźnienie między publikacją przez UKE a widocznością na mapie wynosi z reguły nie więcej niż dobę. Data ostatniej skutecznej aktualizacji jest zawsze widoczna w stopce mapy (na telefonie — w menu).

Co dzieje się z danymi przed pojawieniem się na mapie

Surowe wykazy UKE to dziesiątki tysięcy wierszy, w których jedna fizyczna stacja występuje wielokrotnie — osobno dla każdego pasma, sektora i decyzji. Gdybyśmy stawiali marker na każdym wierszu, mapa byłaby nieczytelna. Dlatego dane przechodzą przez następujące etapy:

EtapCo się dzieje
1. PobranieSkrypt w Pythonie ściąga pliki obu wykazów z BIP UKE.
2. UjednolicenieRóżne formaty kolumn z obu źródeł sprowadzane są do wspólnego schematu; nazwy operatorów normalizowane do jednej formy.
3. WspółrzędnePozycje zapisane w stopniach, minutach i sekundach (DMS) przeliczane są na stopnie dziesiętne i zaokrąglane do 6 miejsc po przecinku.
4. GrupowanieWpisy o tej samej lub bardzo bliskiej lokalizacji łączone są w jeden obiekt — jedną stację z listą pasm i technologii.
5. OperatorKażdej stacji przypisywany jest operator na podstawie podmiotu z pozwolenia i numeru decyzji.
6. SiatkaStacje dzielone są na komórki geograficzne i zapisywane do osobnych plików.

Grupowanie to najbardziej nietrywialny krok. Dwa rekordy o identycznych współrzędnych to oczywiście ta sama lokalizacja, ale w danych UKE współrzędne tej samej stacji bywają zapisane z drobnymi różnicami. Dlatego liczymy też rzeczywistą odległość geograficzną między punktami i łączymy te, które leżą bardzo blisko siebie, traktując je jako jeden maszt. Operatorzy w PL to Orange Polska, T-Mobile Polska, Play (P4) i Plus (Polkomtel) — to po nich, a nie po anonimowych identyfikatorach, rozpoznajesz właściciela na mapie.

Podział na siatkę i renderowanie

Gotowe stacje nie trafiają do jednego wielkiego pliku. Dzielimy je na siatkę geograficzną, w której każda komórka odpowiada wycinkowi mapy. Dla każdej komórki powstaje osobny, skompresowany plik JSON. Gdy przesuwasz lub przybliżasz mapę, przeglądarka pobiera tylko te pliki, które odpowiadają aktualnie widocznemu obszarowi — a nie dane całej Polski naraz. To dlatego mapa pozostaje szybka mimo ogromnej liczby stacji.

Po stronie przeglądarki renderingiem zajmuje się biblioteka Leaflet, a podkład (ulice, miejscowości) pochodzi z kafelków CARTO Voyager, opartych na danych OpenStreetMap. Cała aplikacja jest statyczna — nie ma własnego serwera ani bazy danych odpytywanej na żywo. Wszystko, co widzisz, składa się w Twojej przeglądarce z gotowych plików. Jak poruszać się po interfejsie, opisuje przewodnik w sekcji Pomoc.

Jak czytać markery i wykresy kołowe

Pojedynczy marker to jedna lokalizacja, w której stoi maszt. Po kliknięciu zobaczysz listę pasm i technologii działających w tym punkcie. Ponieważ w jednym miejscu często nadaje kilku operatorów naraz (np. na wspólnej wieży), marker może reprezentować więcej niż jedną sieć. W takich przypadkach kolorowy wykres kołowy pokazuje udział poszczególnych operatorów w danym punkcie — każdy wycinek to inna sieć. Przy mocnym oddaleniu sąsiednie stacje skupiają się w grona (klastry) z liczbą stacji w środku; przybliżenie rozbija je z powrotem na pojedyncze markery.

Czego ta mapa NIE pokazuje

Rzetelność wymaga jasnego określenia granic. Mapa świadomie nie przedstawia:

Skąd biorą się rozbieżności

Mapa odwzorowuje rejestr, a rejestr nie jest tożsamy z rzeczywistością w terenie. Najczęstsze źródła różnic to:

Jeśli wiesz o konkretnym błędzie — np. masztu, który stoi, a nie ma go na mapie — daj znać. Każde zgłoszenie pomaga.

Otwartość i niezależność

Projekt jest niezależny i bezpłatny, niepowiązany z żadnym operatorem ani podmiotem komercyjnym z branży telekomunikacyjnej. Nie promujemy żadnej tezy o wpływie fal radiowych na zdrowie — pokazujemy wyłącznie obiektywne dane techniczne z oficjalnego źródła. Korzystamy z publicznych danych UKE i otwartych narzędzi (Leaflet, OpenStreetMap), a metodykę opisujemy jawnie właśnie po to, by każdy mógł zweryfikować, jak punkt na mapie ma się do źródła. Więcej o założeniach przeczytasz na stronie O projekcie.

Zobacz też