Kad će tramvaj doć? - google GTFS

Nedavno sam čekao bus koji je zapravo došao ranije nego očekivano, što me iznenadilo jer ZET nije baš poznat po tome da dolazi ranije. Na kraju se ispostavio da je bus toliko kasnio da je zapravo uranio na sljedeći termin. Tad me to podsjetilo na vrijeme kad sam u srednjoj čekao liniju 234, koja je tolko kasnila da se valjda vozčima nije isplaitio opće odvoziti taj termin, već su ga samo preskočili jer to ima smisla (mislim ima smisla za vozače koji ima dužu pauzu).
Sad nakon tih flashback-ova palo mi je na pamet da prkatički postoje 2 rasporeda. Jedan koji su ljudi koji nisu vozači u ZET napravili, kojeg bi vozači trebali slijediti, ali rijetko ga slijede. I onda ima onaj drugi a to je onak koji ovisi o navikama, prometu i ostalim uvijetima. Uglavnom počeo sam razmišljat bi li mogao samo log-at kašnjenje buseva na stanice, i onda gledat patterne u tome (timeseries forcasting).
Npr. možda baš svaki petak vozač linije 234 zapne na jednom semaforu tolko dugo da mu se ne ispalti odvozit tu rutu i taman mu prijatelj iz nezz kojeg busa recimo 207 isto zavši pa idu pričat. Sad ako se događa to svaki petak ja bi htio znati za to, tj. ne bi htio ko debil čekat na stanici dok oni čakulaju. I mislim da ovakav fiktivni scenarij nije tolko daleko od fiktivan, već svakodnevica.
Kak to izvest
Uglavnom prijatelj mi je nedavno radio app za raspored HŽ-a za IOS. Pa mi je spomenu za GTFS google-ov format koji omogućuje npr. ZET-u da na standardan način spcificira koje sve stanice ima, linije, raspored itd... Isto tako meni jako zanimljivo dopušta da vidimo realtime kašnjenja buseva i tramvaja na stanice.
E to je jako epic.
Sad problem s tim je kaj taj realtime se može samo dobit realtime tj. nema arhive. Zato sam odlučio da bih ja mogo narednih par dana/tjedana "lovit" taj stream. Našo sam github ripo koji daje da se lako sprema u db taj stream.
Sad db koji sam odabro je sqllite, zbog toga je bilo jako jednostavno za setupat al kad sam vidio kolko podataka dobivam svakih par min više baš nisam siguran da je sqllite najbolji izbor al ok. Dovoljno loše je za sad.
Gledam sad bazu i tablica stop_time_updates ima preko 232K recorda a radi od 12, a sad je 14:30, kaj je puno.
Al dobro nek on samo recorda.
Kaj planiram dalje
Uglavnom kranji cilj je napraviti kompletan timeseries forcasting, ali pošto je to dosta ambiciozno za nekog amatera kaj se tiče timeseries i ML općenito, mogao bi za početak imati samo distribucijiu dolazaka po stanici. Jer realno mene zanima kad ću bit na nekoj stanici kad će doći tj. kad inače dolazi u ovo vrijeme, na ovu stanicu na ovaj dan. Pa će korisnik tj. ja trebat procjeniti dal da čeka il ne. Ali u budućnosti apsolutno bi htio da ima neke znatno naprednije statistike i predviđanja.
Makar kad pogledam da db file sad već ima 27MB mislim da će bit mali problem radit to sve na tom scale-u; sad znam da ljudi rade to s petabajtima ne s MB tak da vjv će sve bit ok i neko se već pobrinuo da to ne bude teško.