Hvordan vi krympet vores rejseplanlægger, indtil den ikke havde brug for data.

Introduktion af offentlig transports hurtigste, mindste, offline-kapable tripplanlægger 🗺

I en verden af ​​oppustede websteder og dataapper mobile apps, kan det se ud som om de eneste udviklere, der interesserer sig for filkomprimering, er de fiktive dem i Silicon Valley ...

mig: indlæser en 200 ord lang artikel med 500 MB annoncer og javascript

... heldigvis er vores kontor på Transit fuld af kompressionsobsessiver. Ligesom CTO Guillaume og kortguden Anton, som hjalp med at gøre funktioner som transitplaner, kort, stoplister osv. Tilgængelige offline, med flammende hastigheder, i færre MB'er end et par vinstokke.

På Transit ønsker vi, at hver rytter skal have den bedste tilgængelige information til enhver tid. Selv hvis de er offline, da de måske har uregelmæssigt dyre dataplaner , er et sted med upålidelig cellemodtagelse or eller er 10 km dybe ombord på Gringotts Express. Hvilket bringer os til i dag: vi er glade for at kunne annoncere vores nyeste bonkers offline-kup, planlægning af transitrejser.

Banebrydt af vores interne komprimeringskonge Rod vi har formået at bygge den første plan for transitrejse, der fungerer offline, uanset hvilken by du er i.

CTO, kort Gud og vores nye Compression King ™.

Hvordan vi gjorde det (trin 1)

Statiske transitdata (dvs. skemaer, stoplister, rutekort) udgør den første hindring for offlineadgang. Hvorfor? Filerne er kæmpe! Transitbureauer bruger et dataformat kaldet GTFS, hvis filer kan være 100 MB +. Det er en masse data - og bare til tidsplaner, stoplister, rutekort. Derudover er det en masse data, der skal analyseres, hver gang du har brug for at beregne en rejseplan.

Men disse 100 MB filer har masser af afskedigelser. Med den rigtige matematik kan du udvinde mønstre i transitplaner og repræsentere dem på mere effektive måder. Hvorfor gemme en busplan som “12:00, 12:10 AM, 12:20 AM”, hvis du kunne gemme det som “0:00, +10, +10”, hvilket tager færre tegn og dermed mindre plads?

Hvad hvis du kunne finde endnu flere tricks, mere effektive måder at repræsentere data på? Hvor meget plads kunne du spare?

Det viser sig ... meget.

Stopplan langs samme gade: I GTFS kræver “Saint-Laurent” 13 tegn pr. Stop. Med bGTFS er det kun en.

For at skjule disse effektiviteter opbyggede Anton og Guillaume et internt komprimeringsbibliotek kaldet bGTFS, hvor “b” står for binær. Det kan skrumpe din bys transitdatafiler mellem 30X og 200X.

Det er betydeligt mere effektivt end .zip-komprimering og giver dig mulighed for at downloade / gemme / indlæse din bys transitdata på få sekunder.

Det er derfor, Transit føles så forfriskende hurtigt.

Efter at vi har bygget bGTFS, udvidede vi vores repertoire af komprimeringstricks til kort: bOSM er vores måde at komprimere Open Street Map-data på. Det giver os mulighed for at tage alle de relevante ting, vi ønsker (gader, kryds, gangstier, cykelstier) og dumper de oplysninger, vi ikke har (som "hestetilgængelighed" i visse gader ... lol).

Fra OSM-wiki. Men er vi ligeglade med heste? Nabo ....

Med bOSM repræsenterer vi verden i et komprimeret 1024 fliser x 1024 fliseret, som vi har brug for ~ 9 fliser per by. Men hvor et OSM-kort over kloden har brug for ~ 44 GB data, har et bOSM-kort brug for ~ 3,4 GB - hvoraf din by er en lille brøkdel. I Montreal kræver et bOSM-kort kun 10 MB. Meget fint!

Sammen med bGTFS + bOSM kan vi nu gemme alle dine byers data om transit, cykling og vandring i super bittesmå filer lige på din telefon.

Trin 2: gå offline (og gå væk fra skyen ...)

Det er en ting at gemme transitdata på din telefon. Men at foretage beregninger på disse data er en helt anden plade af spaghettier.

Indtil i dag - og indtil vi mødte Rod - var der ingen måde at planlægge en transitrejse uden en dataforbindelse. Tilsluttet data kan du planlægge ture, der integrerede realtidsforstyrrelser og køretøjspositioner. Frakoblet, kunne du ikke engang planlægge en tur baseret på skemaet!

Du bliver enten nødt til at finde din vej med et kort, bede om vejledning, forlade metroen for bedre modtagelse eller bede om, at den genvinder modtagelse midt på turen.

Hvis du var på din daglige pendler, var det ikke en stor ting at miste din "tripplanlægning supermagter". Men hvis du var i en ny by eller på en ukendt rute, kunne vores rejseplanlæggeres dataafhængighed være stressende. Hvordan kunne vi gøre tripplanlæggeren mere konsekvent nyttig?

For at gøre det fuldstændigt offline-kompatibelt startede vi med cykelture og gåture. Med vores små BOSM-filer var det ikke så svært. Offline turplanlægning lanceret til disse ture sidste sommer.

Dernæst måtte vi finde ud af, hvordan man bruger offline gangvejledninger til at finde ud af, hvilke transitoverførsler der var mulige, og hvilke der ikke var. Hvilke busser og tog (og på hvilke tidspunkter) forbinder hinanden? Kombinationerne virkede uendelige - og uendelighed er ikke let for telefoner at analysere.

Hver transitoverførsel ??? For meget data.

I stedet for at have den offline trip-planlægger, der skulle chugge væk i minutter, og finde op til overførsler mellem hvert par transitlinjer, havde vi brug for noget mere effektivt. Noget at skjule de uendelige muligheder. Noget lettere ved beregning. Noget, der kunne spytte planer ud i millisekunder.

Så Rod gjorde, hvad en geni-udvikler ville gøre med verdens mest sexede transitdatakomprimeringsalgoritme:

  • Han tog vores komprimerede bGTFS (transit) og bOSM (kort) data.
  • Han forudberegnede transit + gåoverførsler mellem to stop (inden for en radius på 1 km) og kasserede dem over 20 minutters gang
  • Han lagrede alle disse "mulige overførsler" til hukommelsen i en lille fil.

Nu var vores app ikke længere nødt til at beregne vandrerute for hver etape af din rejse: det var kun nødvendigt at finde vandrerute fra dine start- og slutpunkter til det nærmeste transitstop og stole på forudberegnede overførsler til resten!

20+ minutters gang?!? tak, nej ‍

Ved at gemme ”transit + gå” -overførselstider til hukommelsen kan vi hurtigt sammenligne dem med dine transitplaner. Hvilket betyder, at du starter i dag, kan du få pålidelige transitvejledninger offline, inklusive linie-til-linje-overførsler, som skemaet siger, er mulige.

For eksempel. ”Får metroen mig på min 1:00 AM-bus? Nej ... men du kan kl. 01.20. ”
Før: offline hvad? Efter: trip plan indtil dit hjerte indhold.

God transit handler ikke kun om at få dig fra a-til-b. Det handler om at hjælpe dig med at gøre det effektivt og give dig selvtillid til at komme fra a-til-b - selv under mindre end ideelle forhold. Det handler om at gøre transit mere bredt anvendelig og sikre, at mennesker, der ikke har gode dataplaner, stadig kan få de bedste tilgængelige oplysninger.

Og selvom ingen foretrækker at rejse uden transitdata i realtid ved at gøre flere transitfunktioner tilgængelige offline, sikrer vi, at flere mennesker kan komme dit sted, de har brug for. Selv når deres metro ikke har WiFi. De ramte deres datahætte. Eller en ICBM, der suser rødglødende over atmosfæren, sprænger deres cellesatellit til smedere.

Uanset hvad der sker, vil vores rejseplanlægger nu arbejde 100% af tiden ™ - hvilket sikrer en ensartet oplevelse for alle og for hver tur.

Har du aldrig brugt transit? Vi har dig dækket: gratis på iOS & Android
Brug du altid transit? Opdater appen for at låse din nye offline tripplanlægger op!