Jak liczyć dostępność transportową w QGIS?
Od izochrony z jednego przystanku do odpowiedzi, ilu uczniów ma szkołę w zasięgu transportu publicznego w wakacje, a ilu we wrześniu. Wszystko wyklikane, bez wiersza poleceń.
Materiały do zajęć
Na samym początku instalujecie obie wtyczki i uruchamiacie pobieranie silników. Pobieranie trwa w tle, kiedy opowiadam o metodzie.
Jedno z 15 miast z indeksu nagrań GTFS. Duże sieci (Warszawa, GZM) liczą się najdłużej.
Cztery archiwa z paczki danych: OSM, granice, GUS i rozkłady P50 (rozkład z 16.09 jest potrzebny już w ćwiczeniu 1). Archiwa .7z otworzysz 7-Zipem.
easy-OTP → Setup i Easy-R5 → Setup. Gdyby nie ruszyło, silniki awaryjne ma prowadzący na pendrivie.
Planer podróży, który można zapytać o całe miasto
OpenTripPlanner (OTP) to otwarty, multimodalny silnik wyszukiwania tras. Połączony z mapą OpenStreetMap i rozkładem jazdy GTFS działa jak Google Maps albo jakdojade.pl: znajduje trasę transportem publicznym od drzwi do drzwi, z dojściem, czekaniem i przesiadkami.
W Norwegii, Finlandii i Islandii OTP jest krajowym planerem podróży. Działa też w Portland, Nowym Jorku i Los Angeles. W Polsce na razie tylko w Poznaniu. OTP nie ma interfejsu graficznego do analiz: obsługuje się go zapytaniami, np. ze skryptu.
Jakich danych potrzebuje
GTFS.zip
Rozkład jazdy w standardzie Google: przystanki, linie, kursy i kalendarz. Publikują go przewoźnicy, za darmo. Na zajęciach bierzemy go z gtfs-dashboard.
map.osm.pbf
Sieć ulic i chodników z OpenStreetMap. Po niej liczone jest dojście do przystanku i przesiadki. Wyciągi województw są na Geofabrik, dokładnie przycięte obszary w OSM by the Slice.
Czym różni się od innych wtyczek QGIS
Wtyczki Valhalla, ORS Tools czy QNEAT3 liczą trasy piesze, rowerowe i samochodowe. Izochron transportu publicznego nie dają, bo nie znają rozkładu jazdy. OTP zna: wie, że na tramwaj czeka się 6 minut, a ostatni autobus odjeżdża o 23:10.
Okrąg 500 m wokół przystanku zakłada, że idzie się w linii prostej i że autobus czeka.
Realna droga po ulicach i realny rozkład jazdy. Pieszo i rowerem liczona algorytmem A*, transportem zbiorowym A* z heurystyką Tung-Chew.
Zaczęło się od kilku linijek w R
Pierwsze analizy robiłem w RStudio pakietem otpr: skrypt wysyła zapytanie do serwera OTP, a wynik trafia do QGIS jako warstwa.
Z każdego heksa na kampus: pętla zapytań
Siatka heksagonów, z każdego centroidu jedno zapytanie o trasę na kampus Politechniki Łódzkiej. Z odpowiedzi OTP biorę nie tylko czas, ale też czekanie, dojście do przystanku i liczbę przesiadek. Wada: pętla zapytań po kolei trwała ponad 5 minut.
Powierzchnia czasu podróży: jedna sekunda zamiast 5 minut
OTP umie sam policzyć raster, w którym każda komórka ma czas dojazdu z punktu w minutach, od 1 do 120 (ten limit jest wpisany na sztywno w OTP 1.5). To jedno zapytanie zamiast tysięcy, więc trwa około sekundy. Na takich powierzchniach opiera się cała reszta.
Jeden do wielu, wiele do wielu
Zapytanie z jednego punktu do 2700 celów i zapytanie z 30 punktów do 30 celów to ta sama operacja w różnej skali. Liczba zapytań rośnie bardzo szybko, dlatego bez automatyzacji się nie obejdzie.
Ile Żabek jest w 10 minut pieszo?
To przykład miary dostępności kumulatywnej: dla każdego miejsca liczymy, ile celów da się osiągnąć w zadanym czasie. Algorytm ma dwa kroki:
- Powierzchnia dla każdego sklepu
Dla każdej Żabki OTP liczy pieszą powierzchnię czasu dojścia (raster jak wyżej). Na filmie widać te powierzchnie jedna po drugiej.
- Zliczenie w każdej komórce
Dla każdej komórki siatki sprawdzamy wszystkie powierzchnie i liczymy, w ilu czas dojścia jest ≤ 10 min. Wynik 12 znaczy: z tego miejsca w 10 minut dojdziesz do 12 różnych Żabek.
Pieszo pora dnia nie ma znaczenia, więc wystarczy jeden moment i wiele punktów. W analizie temporalnej (następna sekcja) jest odwrotnie: jeden punkt i wiele momentów. We wtyczce ten algorytm to Run service coverage.
Jak policzyć czas obsługi transportem?
Zwykła izochrona to jeden moment, np. 7:00 rano. Pieszo i rowerem to wystarcza, ale rozkład jazdy zmienia się co minutę: o 7:05 autobus może właśnie odjechać, a o 22:00 jeździć co pół godziny. Dlatego pytamy inaczej: przez ile godzin w ciągu doby z danego miejsca da się dojechać do celu w 30 minut? Tę liczbę godzin nazywam czasem obsługi.
- Powierzchnia co minutę
Od 6:00 do 22:00 co minutę jedna powierzchnia czasu podróży do celu (np. kampusu). To 961 rastrów.
- Stos rastrów
Wszystkie powierzchnie składamy w jeden wirtualny raster: każda warstwa to jedna minuta doby.
- Zliczenie minut
Dla każdej komórki liczymy, w ilu warstwach czas dojazdu jest ≤ 30 min. Wynik w minutach dzielimy przez 60: to czas obsługi w godzinach.
- Klasy obsługi
12–16 h: stała, 6–12 h: regularna, 3–6 h: okresowa, 0–3 h: epizodyczna. Wynik przenosimy na siatkę heksów.
- Nakładka ludności
Dane GUS NSP 2021 z obwodów spisowych przeliczamy na heksy. Wtedy widać nie tylko gdzie, ale też ile osób ma dobrą obsługę.
Pierwsza wersja: 12 kroków ręcznie
W badaniu do artykułu każdy krok był osobno: pozyskanie OSM i GTFS, siatka, start serwera OTP, pętla zapytań w R, wirtualny raster w QGIS, zliczanie skryptem PyQGIS, klasyfikacja, nakładka GUS i mapa. Trzeba było znać R, Pythona i konfigurację OTP.
Wynik: dostępność kampusów w 6 miastach
Warszawa, Poznań, Kraków, Łódź, Wrocław, Gdańsk. Kolej wiąże się z wyższą i stabilniejszą dostępnością, widać wyraźną różnicę między centrum a peryferiami.
Artykuł
Kaczorowski M., Wróblewski W., Spatio-temporal and demographic distribution of public transport accessibility, European Spatial Research and Policy 33(2).
https://doi.org/10.18778/1231-1952.33.2.04
Druga wersja: wtyczka easy-OTP
Najtrudniejsza była technika: Java, serwer, R. Teraz wszystko dzieje się w QGIS. Wtyczka pobiera Javę, OTP i dane, buduje graf, liczy powierzchnie, nakłada ludność z GUS i nadaje styl. Kroki od startu serwera do klasyfikacji robi jeden algorytm, Run temporal accessibility.
Jakie pytania można zadać wtyczce
| Pytanie | Algorytm | Przykład |
|---|---|---|
| Dokąd dojadę o 8:00? | Generate isochrones | Zasięg 15/30/45 min z dworca albo uczelni, kierunek „z” albo „do” punktu. |
| Jak zasięg zmienia się w ciągu dnia? | Generate isochrones over time | Izochrona co godzinę albo co 15 min, animacja w Temporal Controller. |
| Przez ile godzin miejsce jest dobrze obsłużone? | Run temporal accessibility | Czas obsługi transportem dla każdego heksa, 4 klasy. |
| Ilu mieszkańców to dotyczy? | Prepare student layer · Population overlay | Dane GUS NSP 2021 z obwodów spisowych przeniesione na heksy. |
| Co zmienia weekend albo nowa linia? | Compare temporal accessibility | Mapa różnic dwóch scenariuszy. |
| Ile usług mam w zasięgu? | Run service coverage | Liczba aptek albo sklepów w 10 min pieszo, dla każdej komórki. |
| Ile jadę do szpitala z każdego heksa? | Run origin-destination times · Run travel-time matrix | Czas, przesiadki, czekanie; macierz do modelu grawitacyjnego. |
Model nie zna opóźnień ani odwołanych kursów. Wynik bywa zbyt optymistyczny. Dlatego ćwiczenie 2 robimy na danych z nagrań GTFS-RT.
Wymaga Javy 8, powierzchnie mają limit 120 min, duże obszary liczą się długo. Do wielu punktów naraz lepszy jest R5.
Jak zmienia się zasięg z jednego miejsca w ciągu dnia?
Jedna izochrona z tego samego punktu co godzinę, od 6:00 do 22:00, a potem animacja w QGIS. Potrzebne: plik OSM twojego miasta i rozkład P50 z 16.09.2026 z paczki gtfs_p50.7z.
Nazwy algorytmów w polskim QGIS
Instrukcja podaje nazwę angielską i polską. Najprościej wpisać którąś z nich w wyszukiwarkę Przybornika Processing (Processing Toolbox): znajduje algorytm po obu.
- Silnik OTP
easy-OTP → Setup → Download Java 8 JRE and OpenTripPlanner Jar (PL: 1 · Konfiguracja → Pobierz Java 8 JRE i plik Jar OpenTripPlanner), folder np. C:\otp\. Wtyczka zapamięta ścieżki do Javy i jara. Jeśli pobieranie nie działa: skopiuj folder otp/ z pendrive’a prowadzącego.
- Sprawdzenie
Diagnostics → Test OTP server (PL: 2 · Diagnostyka → Test serwera OTP). Wynik „Wszystkie testy zaliczone” znaczy, że Java i jar są gotowe.
- Dane
Z paczek wypakuj <miasto>.osm.pbf i <miasto>_realized_gtfs_2026-09-16_p50.zip. Plik rozkładu skopiuj do osobnego folderu, w którym nie ma innych plików .zip: ten folder wskażesz jako Folder GTFS.
- Podkład mapy
Wtyczka QuickMapServices: Wtyczki → Zarządzaj wtyczkami, wyszukaj QuickMapServices i zainstaluj. Potem Internet → QuickMapServices → OSM → OSM Standard. Bez podkładu trudno trafić w dworzec albo uczelnię.
- Izochrona co godzinę
Analysis → Generate isochrones over time (PL: 3 · Analiza → Generuj izochrony w czasie):
- punkt: przycisk „…” obok pola i klik na mapie (dworzec albo uczelnia);
- plik OSM, Folder GTFS z poprzedniego kroku;
- tryb TRANSIT, kierunek FROM, próg
30; - okno 06:00–22:00, interwał 60 (domyślnie jest 15), data 2026-09-16 (domyślnie jest dzisiejsza);
- Katalog roboczy: nowy pusty folder, np. C:\otp\praca.
Wynik: 17 izochron, każda z polem
time. Pierwszy przebieg buduje graf, to najdłuższy krok (ok. 1–2 min dla Łodzi). Dla Łodzi prowadzący ma na pendrivie gotowy graf (otp_graf_lodz.7z): wypakuj go i wskaż folder otp_praca_lodz jako Katalog roboczy, a budowa się pominie. - Ustawienia czasu warstwy
Właściwości warstwy → Czas: zaznacz Dynamiczna kontrola czasu, Tryb: pojedyncze pole z datą/godziną, pole
time, czas trwania zdarzenia 60 minut. Wtyczka nie ustawia tego sama. - Animacja
Widok → Panele → Sterowanie czasem (Temporal Controller): kliknij ikonę animacji, potem Ustaw na pełny zakres, krok 1 godzina i ▶. W każdej klatce widać jedną izochronę.
- Dla chętnych
Ten sam punkt z interwałem 15 min albo z progami
15,30. Użyj tego samego Katalogu roboczego: graf jest już zbudowany, więc liczy się szybko. Liczba zapytań rośnie z każdym progiem i każdym krokiem czasu.
Do dyskusji
O której zasięg jest największy, a o której najmniejszy? Gdzie rośnie skokowo wzdłuż kolei i tramwaju? Dlaczego wieczorem kurczy się bardziej na peryferiach niż w centrum?
A gdyby policzyć izochronę z każdego miejsca w Łodzi?
OTP liczy jeden punkt naraz. R5 liczy od razu z tysięcy punktów, np. z każdego heksa w mieście, do wszystkich celów. Do tego dla każdej minuty okna odjazdów, np. 7:00–9:00, i podaje percentyle: medianę i wariant ostrożny. Wynik nie zależy od tego, czy trafiliśmy na odjazd o 7:13 czy o 7:15, dlatego dobrze nadaje się do porównań.
| Algorytm | Co liczy |
|---|---|
| Run travel time matrix | N punktów × M celów, percentyle po oknie odjazdów. |
| Run accessibility | Ile celów (szkół, aptek, miejsc pracy) jest w progu czasu z każdego punktu. |
| Run service minutes | Ile minut z okna odjazdów daje dojazd w progu. |
| Run competitive accessibility (2SFCA) | Np. lekarze na 1000 mieszkańców, z konkurencją o miejsca. |
| Summarize accessibility equity | Odsetek mieszkańców z dostępem, Gini, podział na dzielnice. |
| Generate isochrones | Izochrony konturowane w QGIS z siatki czasów. |
| Build scenario · Compare scenarios | Nowa linia, usunięta trasa, inna częstotliwość; mapa różnic. |
Przykład 1: do ilu uczelni dojedziesz w 30 minut z każdego heksa?
Łódź, siatka 500 m, trzy uczelnie: Politechnika, Uniwersytet Łódzki i Uniwersytet Medyczny. Dla każdego heksa liczymy, do ilu z nich dojedziesz transportem publicznym w 30 min (rozkład zrealizowany P50 z 21.08.2026). To ta sama miara co przy Żabkach, tylko z tysięcy punktów naraz.
Przykład 2: ile kosztują opóźnienia?
Ta sama dostępność policzona dwa razy dla tego samego dnia: raz na rozkładzie, raz na rozkładzie zrealizowanym (P50) odtworzonym z nagrań GTFS-RT. Różnica pokazuje, gdzie opóźnienia odbierają mieszkańcom szkoły, apteki, uczelnie i centra handlowe w zasięgu 30 min. Policzone w całości algorytmami Easy-R5.
Przykład 3: skąd najłatwiej dojechać na uczelnię?
Sześć miast, dostępność do uczelni w 30 min zestawiona z liczbą osób w wieku 20–29 lat. Mapa dwuzmienna: kolor mówi jednocześnie, jak dobry jest dojazd i ilu młodych ludzi tam mieszka.
Zobacz na interaktywnych mapach
Najedź na dowolne miejsce i zobacz izochronę. Suwakiem zmieniasz porę dnia, przełącznikiem rozkład albo dane GTFS-RT.
Interaktywna wersja przykładu 2: gdzie w Łodzi opóźnienia psują dostępność do szkół, aptek, uczelni i centrów handlowych.
Interaktywna wersja przykładu 3 na mapie heksagonalnej.
Ustawiasz wymagania (dojazd do celów, przystanki, zieleń, hałas), a mapa pokazuje heksy, które je spełniają.
Jaka jest różnica między wakacjami a rokiem szkolnym na drogach?
Ta sama analiza dla dwóch środ: 26.08.2026 (wakacje) i 16.09.2026 (rok szkolny). Liczymy na rozkładzie zrealizowanym odtworzonym z nagrań GTFS-RT, a nie na planie. Dzięki temu w wyniku są i zmiany rozkładu, i korki, które we wrześniu spowalniają autobusy i tramwaje. Wynik podajemy w liczbie mieszkańców w wieku 10–19 lat, nie tylko w heksach.
P50 · wariant główny
Czasy przejazdu między przystankami z mediany nagranych kursów: tak jechał typowy pojazd tego dnia.
P85 · wariant dodatkowy
Ten sam dzień, odczytany ostrożniej. Dla każdego odcinka między dwoma przystankami bierzemy nagrane przejazdy z danej pory dnia. P50 to czas typowy: połowa przejazdów była szybsza. P85 to czas, którego nie przekroczyło 85% przejazdów, czyli wolny przejazd. Rozkład złożony z takich czasów odpowiada na pytanie „ile czasu zarezerwować”, a nie „ile to zwykle trwa”. To nie jest inny, gorszy dzień, tylko pesymistyczny odczyt tych samych nagrań: wolno na każdym odcinku naraz.
Dane · 10 min
- Silnik R5
Easy-R5 → Setup → Download R5 engine and Java 21 (PL: Konfiguracja → Pobierz silnik R5 i Javę 21). Awaryjnie: folder r5/ z pendrive’a prowadzącego.
- Dwa dni z nagrań
Wtyczki → Easy-R5 → Download transit recordings…:
- City: twoje miasto (Łódź jest na końcu listy, nie myl jej z Łódzką Koleją Aglomeracyjną);
- najpierw Month 2026-08, potem Day 2026-08-26;
- Variant: Realized — median (P50);
- Download into: np. C:\r5\nagrania.
Potem drugi raz: Month 2026-09, Day 2026-09-16, P50. Każdy dzień trafia do osobnego folderu (…\<miasto>\<data>\p50\) i tak ma zostać.
- Kontrola danych
Diagnostics → Check transit data (GTFS): wskaż plik .zip z folderu danego dnia i wpisz tę samą datę (
2026-08-26, potem2026-09-16). Zero błędów oznacza, że można budować; ostrzeżenia są w porządku. - Dwie sieci
Build R5 network (PL: Konfiguracja → Zbuduj sieć R5) dwa razy: ten sam <miasto>.osm.pbf, raz folder z 26.08, raz z 16.09. Pole z folderem GTFS podpowiada ostatnio pobrany dzień, więc przy 26.08 zmień je ręcznie. Po każdej budowie zapisz ścieżkę do network.dat z okna wyników: folder ma losową nazwę, a w analizie musisz wskazać właściwą sieć.
Pilnuj daty
Plik zrealizowany ma w kalendarzu kursy także w innych dniach, więc pomyłki daty nie wykryje ani kontrola danych, ani R5. W każdym kroku data ma się zgadzać z folderem, z którego jest sieć.
Siatka, szkoły, ludność · 10 min
- Siatka heksagonalna
- wczytaj <miasto>_granica.gpkg;
- Create grid (PL: Utwórz siatkę): heksagony, odstęp 500 m, EPSG:2180, zasięg z granicy;
- Extract by location (PL: Wyodrębnij wg położenia): heksy, które przecinają granicę;
- na heksach w kalkulatorze pól dodaj liczbowe pole
hex_id=@row_number; - dopiero teraz Centroids (PL: Centroidy): centroidy odziedziczą
hex_id, więc wszystkie dalsze łączenia zadziałają.
- Szkoły z OSM
- przeciągnij <miasto>.osm.pbf do QGIS (otwiera go wbudowany sterownik OSM, bez dodatkowych wtyczek); w oknie wyboru warstw zaznacz points i multipolygons;
- filtr na points:
"other_tags" LIKE '%"amenity"=>"school"%'; - filtr na multipolygons:
"amenity" = 'school'(tuamenityjest osobną kolumną); - z poligonów zrób Centroids, potem scal obie warstwy: Merge vector layers (PL: Połącz warstwy wektorowe);
- na scalonej warstwie w kalkulatorze pól dodaj liczbowe pole
szkoly=1. Bez niego analiza nie ma czego zliczać.
W Łodzi wychodzi ok. 260 szkół. Jeśli masz kilkadziesiąt, poligony nie przeszły przez filtr.
- Ludność z GUS
- z brec_2021_polska.gpkg (warstwa obwody_spisowe) wytnij swoje miasto: Extract by location z granicą (wczytanie całej Polski chwilę trwa);
- Prepare population layer (PL: Analiza → Przygotuj warstwę ludności): plik ludnosc_nsp_2021.xlsx, arkusz = twoje województwo dokładnie jak w Excelu (np.
Łódzkie), kolumna10-19, kluczOBWOD. Pole wynikowe nazwie siępop10_19; - Population overlay (PL: Analiza → Nałóż ludność na siatkę): siatka = heksy (poligony z
hex_id), pole ludności =pop10_19. Wynik jest w polupopulation. Ostrzeżenia o pustych wartościach to obwody utajnione przez GUS.
Analiza i porównanie · 15 min
- Dwa przebiegi, identyczne parametry
Run accessibility (PL: Analiza → Policz dostępność):
- sieć: network.dat z 26.08, data
2026-08-26; - punkty źródłowe: centroidy heksów, pole identyfikatora
hex_id; - punkty docelowe: szkoły, pola możliwości:
szkoly; - czas odjazdu 07:00, okno 120 min (czyli 7:00–9:00), percentyl
50; - progi czasowe:
30(domyślnie jest15,30,45,60).
Potem drugi raz z siecią i datą 16.09. Wynik jest w polu
acc_szkoly_p50_c30: liczba szkół w zasięgu 30 min. - sieć: network.dat z 26.08, data
- Porównanie
Scenarios → Compare scenarios: A = wynik 26.08, B = wynik 16.09, pole identyfikatora
hex_id, poleacc_szkoly_p50_c30, „wyżej znaczy lepiej” zaznaczone. Narzędzie odmówi porównania, jeśli metoda się różni. To celowe zabezpieczenie. - Mapa
Join attributes by field value (PL: Złącz atrybuty wg wartości pola): warstwa wejściowa = heksy, warstwa łączona = wynik porównania, pole
hex_idw obu. Styl: stopniowany wedługdiff, rampa RdBu, symetrycznie wokół 0. - Kontrola ręczna
Kalkulator pól:
"value_b" - "value_a". Musi wyjść to samo codiff. - Wynik w ludziach
Najpierw dołącz ludność do wyniku każdego przebiegu: Join attributes by field value, wynik Run accessibility ← heksy z ludnością, po
hex_id, polepopulation. Potem Summarize accessibility equity: pole ludnościpopulation, pole dostępnościacc_szkoly_p50_c30, próg1, a dla porównania także10. Zdanie do zapisania: „X% uczniów ma szkołę w 30 min w wakacje, Y% we wrześniu”. Przy progu 1 obie daty dają zwykle prawie to samo; różnicę widać przy progu 10. - Wariant dodatkowy: P85
Pobierz 16.09 w wariancie Realized — conservative (P85), zbuduj trzecią sieć i powtórz Run accessibility. Percentyl zostaw 50: P85 dotyczy danych, nie parametru analizy. Zrób Summarize accessibility equity dla P85 i porównaj odsetek z P50 przy progach 1 i 10: ilu uczniów traci szkoły w zasięgu, kiedy trafią na wolniejszy kurs?
Uwaga: nie każda różnica to efekt wakacji
Dwa dni różnią się też zwykłą zmiennością: pogoda, wypadek, remont. Żeby oddzielić efekt, porównuje się dodatkowo dwa dni z tego samego okresu (para kontrolna). Tak zrobiona jest analiza zmiany tras w Łodzi z 5.10.2026: para główna pokazuje zmianę, para kontrolna, ile różnicy robi sam dzień.
Od pozycji autobusu do mapy dostępności
W ćwiczeniu 2 pobraliście rozkład „jak było naprawdę”. Skąd się wziął? Pojazdy wysyłają swoje pozycje w standardzie GTFS-Realtime. Trzy moje projekty zamieniają je w dane, które da się wczytać do wtyczek, i w mapy, które czyta każdy.
easy-GTFS-RT: nagrywanie i rekonstrukcja
Repozytorium bez kodu aplikacji, same workflowy GitHub Actions. Codziennie dla każdego miasta:
- pozycja co 60 s Nagrywanie
Co minutę: gdzie jest każdy pojazd i jakim kursem jedzie.
- punkt na trasie Dopasowanie
Pozycję rzutujemy na trasę: między którymi przystankami jest pojazd.
- godzina minięcia Interpolacja
Z dwóch pozycji: o której minął przystanek.
- czas odcinka Agregacja
Przejazdy odcinka z tej samej pory dnia: P50 i P85.
- stop_times.txt Przebudowa
Czasy z rozkładu zamieniamy na zmierzone.
- GTFS P50 i P85 Wydanie
Zwykły GTFS na każdy dzień, do OTP i R5.
gtfs-dashboard: katalog nagrań
Statyczna strona, która przegląda wydania easy-GTFS-RT: miasto, miesiąc, dzień. Dla każdego dnia pokrycie godzinowe, liczba dopasowanych obserwacji, wykres średniego opóźnienia w ciągu dnia i pliki do pobrania. Z tego samego indeksu korzysta moduł Download transit recordings w Easy-R5, którego użyliście w ćwiczeniu 2.
mapy-analizy: wyniki dla każdego
Interaktywne mapy z analiz zrobionych tymi samymi wtyczkami. Każda odpowiada na jedno pytanie i działa w przeglądarce, bez QGIS.
Dokąd dojadę? ↗ Izochrona z dowolnego miejsca w 8 miastach. Suwak pory dnia, rozkład albo GTFS-RT.
Ile kosztują opóźnienia? ↗ Ile szkół, aptek, uczelni i centrów handlowych tracą heksy przez opóźnienia, 6 miast.
Jak długo czekać na przystanku? ↗ Mediana odstępu między kolejnymi przyjazdami na przystanku z nagrań GTFS-RT, 4 miasta.
Dostępność w Łódzkiem ↗ Dojazd do 10 kategorii usług w całym województwie i zmiana po uwzględnieniu realizacji.
Gdzie mieszkać w Łodzi? ↗ Ustawiasz wymagania (dojazd, przystanki, zieleń, hałas), mapa pokazuje pasujące heksy.
Schemat linii Łodzi ↗ Schemat linii tramwajowych, autobusowych i nocnych w stylu mapy metra, wygenerowany z GTFS.
Twoja kolej
Wszystko jest otwarte: dane z nagrań, wtyczki i kod analiz. Możesz pobrać dowolny dzień z katalogu i powtórzyć ćwiczenie dla innego miasta albo innej pary dni.
Paczka danych i silniki awaryjne
Dane leżą w wydaniu repozytorium w czterech archiwach: OSM, granice, GUS i rozkłady. Rozkłady są na wypadek, gdyby pobieranie we wtyczce nie zadziałało.
osm_miasta.7z: 15 plików <miasto>.osm.pbf, granica miasta z buforem 1 km. Dla GZM 41 gmin metropolii.
granice_miast.7z: 15 plików <miasto>_granica.gpkg, EPSG:2180, z kodami TERYT gmin.
dane_gus.7z: brec_2021_polska.gpkg (warstwy obwody_spisowe i rejony_statystyczne, cała Polska) i tabele NSP 2021, w tym ludnosc_nsp_2021.xlsx (ludność wg płci i grup wieku, arkusz na województwo).
gtfs_p50.7z: <miasto>/2026-08-26/ i 2026-09-16/, mediana z nagrań GTFS-RT. Awaryjnie, gdyby pobieranie we wtyczce nie zadziałało; P85 jest w gtfs-dashboard.
Na sali, u prowadzącego: otp/ (Java 8 i OTP 1.5.0) i r5/ (Java 21, R5 7.6 i skompilowany runner).
Plan B na sali
Pobieranie silnika nie działa: wypakuj otp.7z albo r5.7z z pendrive’a i wskaż ścieżki w Advanced. Graf OTP dla Łodzi buduje się za długo: na pendrivie jest gotowy (otp_graf_lodz.7z). Pobieranie rozkładu nie działa: weź swoje miasto z gtfs_p50.7z. Komputer za słaby na Warszawę albo GZM: mniejsze miasto albo siatka 1000 m.