Droga krajowa nr 94 to jedna z kluczowych arterii komunikacyjnych południowej Polski, łącząca m.in. aglomerację śląsko-zagłębiowską — poprzez Olkusz — z Krakowem. Codziennie korzystają z niej tysiące kierowców, jednak czas dojazdu potrafi diametralnie różnić się w zależności od godziny, dnia tygodnia czy pogody. Postanowiłem sprawdzić, jak wygląda to w rzeczywistości, budując system, który na bieżąco monitoruje ruch drogowy i warunki panujące na trasie.
Popularne aplikacje nawigacyjne dobrze pokazują aktualną sytuację na drodze, ale zazwyczaj nie pozwalają analizować danych historycznych ani sprawdzać, jak na czas przejazdu wpływają warunki pogodowe czy konkretne godziny dnia. Dlatego stworzyłem własny system analityczny, który przy użyciu Grafany nie tylko pokazuje „co dzieje się teraz", ale również pozwala wyciągać wnioski na podstawie zgromadzonych danych.
Ruch na drodze
System monitoruje cztery relacje drogowe:
Trasa krakowska (DK94 i S52):
- Olkusz → Kraków: Rynek w Olkuszu → Dworzec MDA, ul. Bosacka 18 – ok. 45 km (przez: Jerzmanowice, Biały Kościół, Modlnicę i północną obwodnicę)
- Kraków → Olkusz: trasa powrotna tą samą drogą
Trasa katowicka (DK94 i S86):
- Olkusz → Katowice: Rynek w Olkuszu → Galeria Katowicka, ul. 3 Maja 30 – ok. 45 km (przez: Bolesław, Sławków, Dąbrowę Górniczą i Sosnowiec)
- Katowice → Olkusz: trasa powrotna tą samą drogą
W ramach projektu analizie poddawane są następujące metryki związane z ruchem i czasem przejazdu:
| Metryka | Źródło | Opis |
|---|---|---|
| duration_min | HERE: duration | Aktualny czas przejazdu z uwzględnieniem ruchu [min] |
| base_duration_min | HERE: baseDuration | Czas przejazdu w warunkach idealnych [min] |
| length_km | HERE: length | Długość trasy [km] |
| congestion_index | Obliczany: duration/baseDuration | Indeks korków: 1.0 = brak, 1.3 = 30% spowolnienie |
| delay_min | Obliczany: (duration−baseDuration)/60 | Opóźnienie względem warunków idealnych [min] |
Pomiar odbywa się co pięć minut, dzięki czemu możliwe jest obserwowanie zmian niemal w czasie rzeczywistym. Dziennie system zapisuje ponad tysiąc pomiarów ruchu drogowego. Dane o ruchu drogowym pobierane są z HERE Routing API – rozwiązania wykorzystywanego przez branżę transportową, które uwzględnia rzeczywiste natężenie ruchu, korki i utrudnienia na drodze.
Warunki atmosferyczne
Dodatkowo zbierane są również dane pogodowe z siedmiu punktów rozmieszczonych na całej trasie od Katowic aż po Kraków. Pochodzą one z Open-Meteo – API bazującego na modelach meteorologicznych europejskich i światowych służb pogodowych. Wszystkie pomiary trafiają do bazy InfluxDB, zoptymalizowanej pod dane oparte na szeregach czasowych. Pomiary wykonywane są w następujących lokalizacjach:
| Lokalizacja | Współrzędne | Trasa | Pozycja na trasie |
|---|---|---|---|
| Katowice | 50.2594, 19.0180 | Katowicka | Punkt docelowy |
| Dąbrowa Górnicza | 50.3254, 19.1872 | Katowicka | ~2/3 trasy |
| Sławków | 50.2977, 19.3881 | Katowicka | ~1/3 trasy |
| Olkusz (Rynek) | 50.2793, 19.5601 | Wspólny | Punkt startowy obu tras |
| Jerzmanowice | 50.2203, 19.7354 | Krakowska | ~1/3 trasy |
| Wielka Wieś | 50.1403, 19.8629 | Krakowska | ~2/3 trasy |
| Kraków | 50.0678, 19.9493 | Krakowska | Punkt docelowy |
Indeks warunków drogowych
Jednym z bardziej ambitnych elementów projektu było stworzenie wskaźnika oceniającego jakość warunków drogowych. System analizuje następujące składniki:
| Składnik | Waga | Źródło | Uzasadnienie |
|---|---|---|---|
| Deszcz | 20% | rain (mm/h) | Mokra nawierzchnia, aquaplaning |
| Śnieg | 20% | snowfall (cm/h) | Śliskość, zasypanie — ostrzejsza skala niż deszcz |
| Widoczność | 20% | visibility (m) | Mgła, śnieżyca (tylko meteorologiczna) |
| Oświetlenie | 15% | is_day (0/1) | Kompensacja ciemności nocnej |
| Temperatura | 15% | temperature_2m (°C) | Gołoledź (0–4°C), oblodzenie (<0°C) |
| Wiatr | 10% | wind_speed_10m (km/h) | Boczny wiatr na otwartych odcinkach |
Na ich podstawie wyliczany jest syntetyczny wskaźnik „road index" w skali od 0 do 100, gdzie 100 oznacza warunki idealne, a 0 bardzo niebezpieczne. Co istotne, system rozróżnia np. wpływ deszczu i śniegu – ten drugi jest traktowany znacznie bardziej restrykcyjnie, ponieważ nawet niewielkie opady śniegu potrafią znacząco pogorszyć bezpieczeństwo jazdy. Uwzględniona została również noc, ponieważ dobra widoczność meteorologiczna nie oznacza automatycznie komfortowych warunków jazdy po zmroku. API pogodowe dynamicznie określa moment wschodu i zachodu słońca, dzięki czemu system automatycznie dostosowuje ocenę do pory roku.
Wzór
road_index = deszcz × 0.20 + śnieg × 0.20 + widoczność × 0.20 + wiatr × 0.10 + temperatura × 0.15 + oświetlenie × 0.15To dopiero początek
System buduje bazę pomiarów, która z każdym dniem staje się coraz bardziej wartościowa. Do tematu wrócę za kilka miesięcy, gdy uda się zgromadzić odpowiednio dużą próbkę danych.