PKP – czas podróży

Jak wyglądałaby mapa Polski, gdyby zamiast odległości pomiędzy miastami przedstawić czas podróży koleją? Wiadomo, że trasy są w różnym stanie.

Skupiłem się na PKP Intercity, bo chciałem sprawdzić tylko połączenia pomiędzy większymi miastami. W przypadku przewoźników osobowych duża liczba stacji mogłaby sztucznie wydłużać czas w obszarach gęsto zaludnionych.

Oczywiście nadal korzystam z d3js (bez tej biblioteki nie wyobrażam już sobie wizualizacji 🙂 ). Opcja wykorzystana tym razem to force layout. Idea jest taka: definujemy różne siły (grawitacji, przyciągania, odpychania), które dziłają na obiekty i zamiast samemu określać położenie przedmiotów pozwalamy by te siły “ułożyły” obiekty na płaszczyźnie.

W widoku podstawowym widzimy miasta w ich rzeczywistej pozycji. Odleglość pomiędzy nimi odpowiada odległości w linii prostej. Po przełączeniu odległości zostaną zmodyfikowane tak, by były proporcjonalne do czasu podróży. Wtedy zdefionowane siły “ułożą” graf zgodnie z zadanymi ograniczeniami (przed wszystkim odległości mają być propocjonalne do czasu podróży, w drugiej kolejności miasta starają się być jak najbliżej swoich pierwotnych pozycji).

pkp_mapa_stacje

Co do samych danych to widzimy, że w dobrym stanie jest linia Frankfurt-Rzepin-Poznań-Warszawa (po przełączeniu skraca się). Szczecin-Poznań też jest w dobrym stanie. Kiepsko wypadają natomiast połączenia na południu — tam praktycznie każda podróż ciągnie się niemiłosiernie.

Stacje kolejowe

Wszystkich stacji kolejowych jest 2500, więc trochę czasu zajęło przygotowanie danych do kolejnej wizualizacji, czyli mapy linii kolejowych. Najwięcej problemów było ze ściągnięciem i uporządkowaniem współrzędnych stacji. Dwa źródła okazały się pomocne.

  • Natrafiłem kiedyś na pakiet R o nazwie SmarterPoland. Funkcja getGoogleMapsAddress pobiera z Google’a współrzędne podanej lokalizacji. Jest niestety dość niski limit na liczbę requestów (chyba 1000 z tego co pamiętam — robiłem to parę miesięcy temu), niemniej jednak często stanowi to dobrą podstawę do dalszej pracy.
  • Hitem okazała się Wikipedia. Jest całkiem dużo artykułów poświęconych stacjom kolejowym, a na każdej stronie są zazwyczaj współrzędne geograficzne. Dla stacji X pobierałem więc strony: X, X_(stacja_kolejowa), oraz X_(przystanek_kolejowy). Dało to bardzo dobre rezultaty. Okazało się, że szczególnie te mniejsze stacje były dokładnie opisane. BTW: czy stacja w Cierpigórzu naprawdę tak wygląda?

Po ściągnięcie danych musiałem jeszcze wprowadzić całą masę poprawek i na pewno nadal jest troche nieścisłości.

Do rysowania mapy wykorzystałem d3js z dodatkiem topojson. Tutaj jest fajny tutorial.

pkp_mapa_stacje

Na zachodzie sieć kolejowa jest rozwinięta o wiele gęściej niż na wschodzie. Na wschodzie dominuje Warszawa. Poza liniami dobiegającymi do stolicy jest mało tras.