Podhale Transit

Serwis internetowy mojego autorstwa - platforma do przeglądania rozkładów jazdy i wyszukiwania połączeń komunikacją miejską na terenie Podhala. Działa też w Google Maps.

Co mnie doprowadziło do stworzenia Podhale Transit?

01.10.2017

Rozkłady jazdy w Google Maps!

Przygoda z rozkładami jazdy rozpoczęła się na początku 2016 roku. Od dłuższej chwili przyglądałem się rozkładom jazdy i aplikacjom do wyszukiwania połączeń, przede wszystkim (nie, nie jakdojade), mobileMPK. Ułatwienie, jakie dawała młodemu człowiekowi ze smartfonem w planowaniu podróży w nie-do-końca poznanym jeszcze Krakowie jest wręcz nie do opisania. Super, że takie aplikacje powstały.

Któregoś razu odkryłem, jak to wygląda zagranicą. Dużo wtedy podróżowałem po Mapach Google. Jakież było moje zdziwienie, gdy po przybliżeniu mapy na centrum Londynu pokazała się warstwa transportu publicznego, w tym kolorowe linie metra. Po większym przybliżeniu pokazały się stacje kolejowe i metra, a po jeszcze większym... przystanki autobusowe. Po kliknięciu na przystanek lista następnych odjazdów. "Jak to się tu znalazło?" Zacząłem drążyć. I odkryłem... Google Transit .

Każdy przewoźnik może dodać swoje rozkłady do Map Google. A ja odkryłem, że Starostwo w moim powiecie nowotarskim udostępnia skany zezwoleń na przewóz osób w formie PDF. Oczywiście ludziom nie będzie się chciało przeglądać tabel i planować podróży po powiecie. A większość pewnie nawet nie wie, że takie dane są udostępniane publicznie. Zdawałem sobie sprawę, że nie umiałbym napisać aplikacji na wzór mobileMPK lub jakdojade, ale może dałbym radę stworzyć chociaż rozkłady dla Google. Znowu zacząłem drążyć. I okazało się, że trzeba "jedynie" przesłać je w odpowiednim, międzynarodowym formacie zapisu GTFS (General Transit Feed Specification). Oczywiście, że się zainteresowałem. Jest to prosty, tekstowy format, przypominający tabelę, tyle że wartości są oddzielane przecinkami. Skoro tabela, to oczywiście Excel. A że Excela w miarę ogarniam, to pierwsze próby wprowadzenia w ten sposób jakiegokolwiek rozkładu jazdy okazały się sukcesem. Super!, ale trwało to 10 godzin i generowało około tysiąca linijek tekstu (każde zatrzymanie dowolnego kursu to jedna linijka tekstu). Na print screenie obok fragment tabeli zatrzymań pojazdów w Excelu (Źródło: opracowanie własne).

Na tym etapie widziałem dwa problemy. Pierwszy, to ogromna ilość czasu potrzebna, aby dodać kilkadziesiąt rozkładów powiatu nowotarskiego. Nawet, gdy już się wprawiłem, to czas dodawania jednego rozkładu nie był krótszy, niż 6 godzin. Drugim zaś problemem była edycja rozkładów, która sprowadzała się do wygenerowania go od nowa. Sześć godzin...

Kilkaset godzin później...

Oczywiście zrobiłem to. Miałem Excela z prawie czterdziestoma tysiącami linijek. Podczas dodawania nowych połączeń często się zdarzało, że narzędzie weryfikacyjne odrzucało cały rozkład z powodu jednej brakującej linijki, bądź jednej zduplikowanej. Wszystko musiało się zgadzać. W każdym razie udało się - zadowolony napisałem do zespołu Googla z prośbą o przyjęcie mnie do programu Google Transit. I nic...

Czekając na odpowiedź od Google, w wieeeeelkim skrócie mówiąc nauczyłem się pisać proste aplikacje w języku C++. Z wykorzystaniem C++ buildera napisałem pierwszy programik, który częściowo pomagał mi w zarządzaniu tymi rozkładami jazdy. Co prawda czas dodawania rozkładów znacząco się nie skrócił, ale za to możliwa stała się ich sprawna edycja. Ponadto graficzna prezentacja ułatwiła wiele spraw i zredukowała ilość błędów, które popełniałem przy ręcznym dodawaniu połączeń. Ułatwiała też wykrywanie tych, które popełniłem podczas ręcznego uzupełniania Excela.

Nauczmy się programować

Z C++ przerzuciłem się na C#, gdzie również dało się projektować obiektowo (przez część czasu dokładnie widzisz, co projektujesz). Jako nauka C# przepisałem aplikację z C++, z mniejszymi, bądź większymi zmianami. Nie wpłynęło to jednak na funkcjonalność programu.

Podczas oczekiwania na odpowiedź od Google (był chyba maj... 2016) zacząłem aktualizować programik do formatu GTFS. Tym razem tak, aby już faktycznie zmniejszyć czasochłonność w dodawaniu nowych połączeń i aktualizowaniu istniejących. Zarządzanie kalendarzami połączeń zostawiłem w Excelu, a skupiłem się na wydajnym zarządzaniem siatką połączeń. Pozbyłem się tabelek, a dodałem mapę. Zamiast wyszukiwać przystanek z listy, dodałem opcję tworzenia trasy poprzez klikanie przystanków. Proces aktualizacji był cholernie długi. Minęło lato, jesień i zima, ale w końcu aktualizacja była zakończona, a efektywność wzrosła... sześciokrotnie.

Po dziś dzień tak wygląda środowisko, w którym aktualizuję rozkłady jazdy.

Wróćmy jednak do wiosny 2017 roku. Byłem zadowolony z wyników, jakie osiągnąłem i zaprzestałem dalszych aktualizacji, ze względu na to, że pochłaniały tak dużą ilość czasu. Krótko mówiąc, osiągnąłem szczyt efektywności - na tyle niski czas wprowadzania rozkładów, że szkoda go poświęcać więcej na rozbudowę programu o nowe funkcje.

Komunikacja z Google przez ten rok nie szła najlepiej. Dość powiedzieć, że do programu przyjęty zostałem nieco ponad rok po zgłoszeniu takiego zamiaru (w kwietniu 2017), a i od tego czasu upłynęło sporo wody, zanim rozkłady były widoczne w Google Maps. W maju 2017 roku wgrałem pliki do przeanalizowania przez zespół Google. Minął czerwiec, skończyłem studia, obroniłem się, pojechałem na 3-tygodniowe wakacje, znalazłem pracę. Na to konsumujące hobby zrobiło się bardzo mało czasu, a i denerwujące było opóźnianie Google w analizie rozkładów jazdy.

W lecie 2017 roku kombinowałem trochę nad stronami WWW. W sierpniu napisałem prostą stronkę wyświetlającą, które połączenia będą obsługiwane w rozkładach, a które jeszcze planuję dodać. Na tym etapie na celowniku miałem jeszcze powiat tatrzański. Nagle mnie olśniło. Po co czekać na Google Maps. Skoro potrafiłem napisać program, który mi wyświetla i pozwala edytować rozkłady, to czemu mam przynajmniej wyświetlania nie zrobić w przeglądarce. No i spróbowałem. I się udało. Powstał serwis Podhale Transit.