Kako smo smanjili našeg planera putovanja dok nam nisu trebali podaci.

Predstavljamo najbrži i najsitniji planer putovanja putem javnog prijevoza 🗺

U svijetu preplavljenih web stranica i mobilnih aplikacija za prekrivanje podataka, može se činiti da su jedini programeri koji brinu za kompresiju datoteka izmišljeni oni u Silicijskoj dolini ...

ja: učitavam članak od 200 riječi s 500MB oglasa i JavaScript

… Na sreću, naš ured na Transitu pun je opsesija kompresije. Poput CTO-a Guillaume i boga mapa Antona, koji su mu pomogli da značajke poput tranzitnih rasporeda, karata, popisa zaustavljanja itd. Budu dostupne izvanmrežno, uz plamteće brzine, u manje MB-a od nekoliko loza.

Na Transitu želimo da svaki jahač ima najbolje informacije u svakom trenutku. Čak i ako su offline, budući da mogu imati nevjerojatno skupe podatkovne planove , negdje su s nepouzdanim prijemom cell ili su 10 kilometara duboki na Gringotts Expressu. Što nas dovodi do danas: rado objavljujemo naše najnovije bonuse izvan mreže, planiranje tranzitnih putovanja.

Pionir našeg domaćeg kralja kompresije Rod , uspjeli smo izgraditi prvi ikada objavljeni planer putovanja koji radi izvan mreže, bez obzira u kojem gradu ste.

CTO, Map God i naš novi kompresijski kralj ™.

Kako smo to učinili (korak 1)

Statički podaci o tranzitu (tj. Rasporedi, liste zaustavljanja, karte ruta) pružaju prvu prepreku za izvanmrežni pristup. Zašto? Datoteke su OGROMNO! Tranzitne agencije koriste format podataka nazvan GTFS, čije datoteke mogu biti 100MB +. To je puno podataka - i samo za rasporede, liste zaustavljanja, karte ruta. Uz to, puno je podataka za raščlanjivanje svaki put kada vam je potrebno izračunati plan putovanja.

No, te datoteke od 100 MB imaju puno viška. Pravom matematikom možete istrenirati obrasce u rasporedima tranzita i predstavljati ih na učinkovitije načine. Zašto biste raspored autobusa pohranili kao "00:00, 00:10, 12:20 AM" ako biste ga mogli pohraniti kao "0:00, +10, +10", koji zauzima manje znakova, a samim tim i manje prostora?

Što ako biste mogli pronaći još više trikova i učinkovitije načine predstavljanja podataka? Koliko biste prostora mogli uštedjeti?

Ispada ... puno.

Raspored zaustavljanja u istoj ulici: u GTFS-u

Kako bi umanjili te učinkovitosti, Anton i Guillaume izgradili su internu biblioteku za kompresiju nazvanu bGTFS, gdje “b” znači binarni oblik. Moguće je smanjiti datoteke podataka o prijevozu u vašem gradu između 30X i 200X.

Značajno je učinkovitiji od .zip kompresije i omogućuje vam preuzimanje / pohranjivanje / učitavanje podataka o vašem gradskom prijevozu u sekundi.

Zbog toga se Transit tako osvježavajuće brzo osjeća.

Nakon što smo izgradili bGTFS, proširili smo repertoar trikova kompresije na karte: bOSM je naš način kompresije podataka otvorene mape ulica. Omogućuje nam uzimanje svih relevantnih stvari koje želimo (ulice, raskrižja, pješačke staze, biciklističke staze) i odbacuje podatke koje mi nemamo (poput „pristupačnosti konja“ nekih ulica… hahaha).

Sa OSM-ovog wikija. No, brinemo li o konjima? Vrisak ....

S bOSM-om predstavljamo svijet u komprimiranoj mreži od 1024 x 1024 pločica od koje nam je potrebno ~ 9 pločica po gradu. Ali gdje bi OSM-ovoj karti svijeta trebalo oko 44 GB podataka, bOSM-ovoj karti treba svega 3,4 GB - od čega je vaš grad tinejdžerski dio. U Montrealu je za bOSM kartu potrebno samo 10 MB. Vrlo lijepo!

Zajedno s bGTFS + bOSM-om sada možemo pohraniti sve podatke o vašem prijevozu, vožnji biciklom i pješačenju u super malenim datotekama, izravno na vaš telefon.

2. korak: odlazak izvan mreže (i skidanje iz oblaka ...)

Pohranjivanje podataka o prijevozu na vašem telefonu jedna je stvar. Ali izračun tih podataka je sasvim drugi tanjur špageta.

Sve do danas - i dok nismo upoznali Rod - nije bilo načina da planiramo tranzitno putovanje bez podatkovne veze. Spojeni na podatke, možete planirati putovanja koja integriraju poremećaje u stvarnom vremenu i položaje vozila. Prekinuli s veze, niste mogli ni planirati putovanje na temelju rasporeda!

Morat ćete pronaći svoj put s kartom, tražiti upute, napustiti metro za bolji prijem ili moliti za povratak prijema usred vožnje.

Ako ste bili na svakodnevnom putu, gubitak svojih "ovlasti za planiranje putovanja" nije bila velika stvar. Ali ako ste bili u novom gradu ili nepoznatom putu, ovisnost o našem planeru putovanja mogla bi biti stresna. Kako bismo mogli učiniti planer putovanja dosljednije korisnim?

Da bismo ga potpuno kompatibilno povezali s mrežom, počeli smo s biciklima i pješačkim putovanjima. S našim malim bOSM datotekama, nije bilo tako teško. Vanjsko planiranje putovanja pokrenuto je za ta putovanja prošlog ljeta.

Zatim smo trebali otkriti kako koristiti upute za hodanje izvan mreže da bismo otkrili koji su tranzitni prijenosi mogući, a koji nisu. Koji autobusi i vlakovi (i u koje vrijeme) se međusobno povezuju? Kombinacije su izgledale beskonačno - a beskonačnost nije lako analizirati telefone.

Svaki tranzitni transfer ??? Previše podataka.

Umjesto da izvanmrežni planer putovanja hvata minutima i traži transfere između svakog para tranzitnih linija, trebalo nam je nešto učinkovitije. Nešto što bi umanjilo beskonačne mogućnosti. Nešto lakše u računanju. Nešto što bi moglo pljunuti planove u milisekundama.

Dakle, Rod je učinio ono što bi učinio bilo koji genijalni programer sa algoritmom za kompresiju najseksepilnijih podataka na svijetu:

  • Uzeo je naše komprimirane podatke bGTFS (tranzit) i bOSM (karta).
  • Unaprijed je izračunao tranzitne + hodne transfere između bilo koja dva zaustavljanja (u krugu od 1 km) i odbacio one iznad 20-minutne šetnje
  • Pohranio je sve one "moguće prijenose" u memoriju, u malenu datoteku.

Sada naša aplikacija više nije morala izračunavati upute za hodanje za svaku dionicu vašeg putovanja: trebalo je samo pronaći upute za hodanje od vaše početne i završne točke do najbližeg tranzitnog stajališta, a za ostatak se osloniti na unaprijed izračunate transfere!

20+ minuta hoda?!? hvala u, ne ‍

Spremanjem vremena prijenosa "tranzit + hodanje" u memoriju možemo ih brzo usporediti s vašim rasporedom tranzita. Što znači da od danas možete dobiti pouzdane upute za prijevoz u izvanmrežnom vremenu, uključujući prijenose linija prema liniji za koje raspored kaže da su mogući.

Npr "Hoće li me podzemna željeznica nabaviti u 1:00 ujutro? Ne ... ali možete napraviti 01:20. "
Prije: offline što? Nakon: plan putovanja do zadovoljstva vašeg srca.

Dobar tranzit ne radi se samo o tome da biste stigli od "do-b". Radi se o tome da vam pomognete da to učinite efikasno i pružite vam samopouzdanje da stignete od a-do-b - čak i pod manje idealnim okolnostima. Radi se o tome da tranzit postane široko koristan, osiguravajući ljudima koji nemaju dobre planove podataka i dalje mogu dobiti dostupne najbolje informacije.

I dok nitko ne želi putovati bez podataka o tranzitu u stvarnom vremenu, čineći dostupne više značajki prijevoza izvanmrežno, osiguravamo da više ljudi može doći tamo gdje trebaju ići. Čak i kad njihova podzemna željeznica nema WiFi. Pogodili su kapu podataka. Ili ICBM koji zviždajući po atmosferi grli njihov satelitski ćelija u džabe.

Što god se dogodilo, naš planer putovanja sada će raditi 100% vremena ™ - osiguravajući dosljedno iskustvo, za sve i za svaku vožnju.

Nikada niste koristili Transit? Objašnjeni smo: besplatno na iOS i Android
Uvijek koristite Transit? Ažurirajte aplikaciju za otključavanje novog mrežnog planera putovanja!