Vyhledávač spojení v pražské MHD čeká v blízké budoucnosti změna. Souvisí jednak s tím, že aplikaci PID Lítačka přebírá nová dodavatelská firma, ale i s tím, jak do ní ROPID postupně nasazuje nový vyhledávač spojení, kterému přezdívá „vyhledávač nové generace“.
„Nový engine používá novou datovou platformu, takže může nabízet spoustu služeb, které jsme na té staré už nedokázali,“ vysvětluje v rozhovoru pro Lupu vedoucí odboru technického rozvoje a projektů ROPID Zbyněk Jiráček.
„V létě se třeba dozvím, jestli je spoj klimatizovaný. Můžu se dívat na polohu spoje na mapě. U metra vidím detailnější informace o tom, jak se pohybuju, můžu si vybrat, jestli chci po eskalátoru, po schodech, nebo výtahem,“ dodává s tím, že aplikace brzy nabídne také doporučení nejlepšího vagonu metra k výstupu či přestupu v cílové stanici.
Jak vyhledávač vytváří projekci aktuálního zpoždění vozů MHD? Bude je umět jednou předpodvídat? Co nového čeká odjezdové panely a jak se bude měnit PID Lítačka? A jak probíhá sčítání pasažérů tramvají či autobusů? Rozhovor si můžete poslechnout ve formě podcastu na svých oblíbených podcastových službách nebo přímo zde:
Nabízíme vám také přepis části podcastového rozhovoru do textu. Podporovatelé Lupa.cz mají k dispozici kompletní transkript.
Ještě před několika lety nebyla digitalizace v rámci Dopravního podniku a ROPIDu velkým tématem. Vedly se například spory o to, jestli data o tom, kde se momentálně autobusy, tramvaje a metra nacházejí a jaké mají zpoždění, je vůbec možné zveřejňovat. Kdy jste do tohoto prostředí přišel a začal jste rovnou bojovat za to, aby tyto údaje byly přístupné a byly digitální?
Do ROPIDu jsem přišel před necelými 10 lety, ale tehdy jsem byl jenom na běžné marketingové pozici a měl jsem na starosti weby a aplikace. Aplikace Lítačka tehdy ještě neexistovala. K tomu tématu jsem se dostal úplně původně od svého studia na Matfyzu, kde jsem se zabýval algoritmy na vyhledávání tras a na predikce zpoždění a tak podobně. Tím jsem se dostal do kontaktu s ROPIDem a na základě toho začala moje spolupráce. Dostal jsem tohle téma na starosti a vzal jsem i jako svůj dlouhodobý úkol, řekněme, zvýšit otevřenost dat o veřejné dopravě. Akorát to celé trvalo hodně dlouho, začali jsme daty o jízdních řádech, která tehdy sice existovala, ale byla uzavřená v aplikaci IDOS a v dalších aplikacích, které vyvíjel stejný dodavatel. Nejdřív jsme tedy zajistili, aby existovala data o jízdních řádech, a poskytli jsme je Googlu, Seznamu a dalším. Zabralo to, řekněme, dva tři roky. Pak jsme se začali zaměřovat na data o polohách spojů v reálném čase. Částečně jsme je už měli u soukromých dopravců nebo vlaků, jejich dispečerské systémy je dlouho předtím uměly, ale chyběla nám data o autobusech a tramvajích Dopravního podniku.
Pokud vím, tak data o jízdních řádech už na začátku v určité digitální podobě existovala, ale byla to různá PDFka, která nebyla strojově čitelná. Na celostátní úrovni si pamatuji velké boje s firmou CHAPS, která měla sběr dat na starosti a odmítala je zpřístupnit. Odehrávalo se něco podobného i na pražské úrovni?
Je vlastně hezké na to takhle vzpomínat, protože už je to docela dlouho (smích). Ale když jsem v roce 2011 psal bakalářku a potřeboval jsem data o jízdních řádech, řešil jsem to tím, že jsem si udělal bota, který projel 80 tisíc stránek s jízdním řádem, aby si je sestavil. Ta data opravdu neexistovala. První digitální data z celostátních systémů vzešla až časem nějakým, řekněme, nařízením, ale jejich kvalita dodneška není příliš vysoká. Jízdní řády tam sice jsou, ale nejsou zas tak kvalitní a my jsme se snažili, abychom za PID poskytovali data na mnohem vyšší úrovni. Třeba takový Seznam, který má službu na vyhledávání v jízdních řádech, velice rychle převzal data od nás, protože jsou mnohem konkrétnější a kvalitnější než ta, která získá od CHAPSu a ze státního úložiště.
To znamená, že data pořád nejsou v dobrém formátu? Nebo jak si mám představit to, že nejsou dost kvalitní?
Formát je dobrý, ale hodně informací v datech nenaleznu. Základní věc, která v nich není, jsou třeba identifikátory zastávek, které by pomohly je párovat třeba s nějakými dalšími daty. Myslím, že tam nejsou ani souřadnice zastávek a spousta dalších věcí. Prostě to je takové nutné minimum, aby se z dat dal jízdní řád postavit, ale spousta zajímavých údajů, které by cestující také ocenil, tam není. Nejsou tam, a to už je horší, také některé krátkodobější výluky. Když je třeba výluka na dva dny, tak se do celostátního systému nepropisuje, protože to zákon nevyžaduje. Ale my se snažíme, aby v datech, která poskytujeme a která zobrazujeme uživatelům, všechny tyhle výluky byly. Protože ve chvíli, kdy něco jede jinak, než má, tu informaci nejvíc potřebuju vědět. A je, řekněme, trapné, když mám digitální systém, který neví o tom, že něco jede jinak, a musím si to přečíst na papíru na zastávce.
A jak ta chybějící data řešíte? Mluvil jste třeba o souřadnicích zastávek. Nedají se vytáhnout například z Open Street Maps a zkombinovat s daty, která máte?
Myslím si, že dá, ale my tuto úlohu příliš neřešíme, protože ta data o zastávkách máme svoje a používáme je. Je to spíš otázka na konzumenty státních dat. Vím, že v Seznamu si s tím nějak poradili, nějak si to propojili a dokážou na svých mapách jízdní řády zobrazovat, ale v datech jako takových to nebylo.
Co ta data o poloze? Už je dnes tedy máte? Řeší se přes GPS moduly v jednotlivých vozech a podobně?
Sice už je to nějaký čas, ale ten příběh pořád nekončí, měl postupně vývoj. Data soukromých dopravců jsme měli už dříve, ta byla v zásadě v pohodě. Pak jsme nejdřív získali data o polohách autobusů Dopravního podniku, které jsou vybavené GPS, a o rok později se k tomu přidaly i tramvaje. U těch je to technologicky trošku složitější, protože většina tramvají dodneška GPS nedisponuje a jejich poloha se odhaduje pomocí vyhlašování zastávek a průjezdů infračervených majáků. Ty ale nejsou úplně na každé zastávce, má je třeba každá druhá nebo třetí, a z toho se určuje poloha tramvaje. Úplně nakonec jsme o další rok nebo možná o dva později přidali i polohy metra. Ty jsou už trochu navíc, protože metro reálnou polohu tolik nepotřebuje, stejně jezdí každou chvíli, a navíc v 99 procentech na čas. Metro má zase úplně jinou technologii sledování, tam samozřejmě GPS nedává smysl, protože jezdí v tunelu, takže se to děje nějakou transformací, řekněme, kódů kolejových obvodů na nějakou polohu na mapě.
Teď se nacházíme v technologickém stavu, kdy data z metra máme prakticky nejlepší, jaká můžou být, maximálně se dají vylepšit nějaké mimořádnosti a podobně. Rádi bychom ale zlepšili data z povrchu, kde se tramvaje teprve postupně dovybavují GPS a zároveň tam je určitá nová technologie, kterou používá Dopravní podnik – mapování na kolejovou síť. Tramvaj pak ví skoro na centimetry přesně, kde je. Ale za mě největší mezera je přenosová síť. Dopravní podnik totiž používá městskou rádiovou síť, která je určená nejenom pro Dopravní podnik, ale i pro další složky, jako je Městská policie, Technická správa komunikací a další. A ta síť má omezenou propustnost, to znamená, že se přes ni dokáže dostat jen limitovaný počet aktualizací polohy, zjednodušeně řekněme, že známe polohu u každého vozidla třeba jednou za minutu až dvě. To je rozhodně výrazně lepší než nic a je to hodně dobré, ale máme případy a zkušenosti, že se určitě hodí mít aktualizaci častěji, protože se z dat pak dá poznat mnohem víc věcí: třeba že se vozidlo nehýbe a tak podobně. Určitě bychom rádi, kdyby se přenosovou síť podařilo zlepšit. Dopravní podnik na tom pracuje, ale ještě to není dokončené.
A co vlaky? Jsou také součástí ROPIDu, máte také jejich polohu?
Vlaky máme už docela dlouho. Jedním zdrojem je Správa železnic, to jsou víceméně data ze zabezpečovacího zařízení, ale v tomto případě zabezpečovací zařízení může být i výpravčí na stanici, který odmáčkne, že vlak odjel. Takže to je potvrzená poslední stanice nebo bod, který vlak projel. A do toho dopravci musí povinně vybavovat vlaky GPS, takže máme i reálnou polohu a tato data se potom kombinují.
Vypadá to, že dat je konečně k dispozici dost, byť tedy, jak jste říkal, někde se ještě dá zapracovat na tom, aby byla lepší. Takže tohle všechno se kombinuje do PID Lítačky, do vyhledávání spojů a díky tomu pak může aplikace nabízet i přesné předpovědi, kdy tramvaj přijede na zastávku, jaké má zpoždění a podobně.
Přesně tak, na základě polohy se odvozuje aktuální zpoždění, které můžeme zobrazovat uživatelům. Hodí se to zejména v případě nějaké mimořádné události, kdy se interval mezi vozidly prodlouží.
Jak přesná předpověď zpoždění v aplikaci je? Samozřejmě to asi závisí na kvalitě vstupních dat, ale měříte si nějakým způsobem, jak moc se v rámci PID Lítačky trefujete?
V tuhle chvíli pořád neděláme něco, čemu by se dalo říct předpověď zpoždění. V aplikaci máme jen projekci aktuálního zpoždění. PID Lítačka má dva vyhledávací enginy a každý pracuje trošku jinak, ale oba zatím dělají to, že projektují aktuální zpoždění na trasu. Aktuální zpoždění umíme vypočítat poměrně přesně, ale odvodit z toho, jaké bude zpoždění na zastávce, kde uživatel čeká, to je jiná úloha, kterou se teď zabýváme. Není přitom úplně snadná. Ukazuje se, že role náhody je opravdu velká. Pokud má tramvaj přijet za 12 minut, tak když jí něco vleze do cesty, může přijet třeba za 20 minut, anebo naopak může zrychlit a přijet za 10 minut. Čím jsem dál do budoucnosti, tím je predikce méně přesná. Proto zpoždění prezentujeme jako aktuální zpoždění, které uživatel může sledovat. A proto k tomu přidáváme další služby, jako je sledování polohy na mapě, protože třeba pro někoho může být představitelnější, že se může na mapě podívat, kde se vozidlo aktuálně nachází. Tady se projevuje rezerva v datech: když je poloha aktualizovaná jenom jednou za minutu až dvě, nemusí být poloha na mapě úplně přesná. Dopočítat zpoždění v bodě je poměrně jednoduchá úloha, ale vývoj zpoždění v čase je složitější. U tramvají je ještě jedna limitace: tím, že se tramvaj sleduje pomocí vyhlašování zastávek a projíždění majáků, je velký problém, když se někde zastaví, protože pokud není vybavená GPS, což stále velká část není, tak není schopná o sobě říct, kde se nachází.
Mezi zastávkami jakoby zmizí.
Přesně tak, jakoby zmizí mezi zastávkami, ale nedá se deterministicky určit, co to znamená. Jestli se porouchalo vysílání, nebo se někde ztrácejí data a ta tramvaj dál jede, anebo stojí na místě, a tím pádem by mělo naskakovat zpoždění. Tady by se nám velice hodilo, kdybychom data dostávali častěji, přesnost by se v těchto případech určitě zvýšila.
Na první pohled si člověk řekne „jasně, vědí, že tramvaj má v téhle zastávce zpoždění tři minuty, tak to prostě přičtu ke všem budoucím časům na dalších zastávkách a pak mám jasno“, ale evidentně to takhle jednoduché není. Budete to nějakým způsobem řešit? Máte třeba v úmyslu nasadit nějaký AI algoritmus, který se bude snažit zpoždění odhadnout třeba na základě informací o dopravní situaci na trase?
Podobné nápady máme, ale ukazuje se, že problém je mnohem složitější, než na první pohled vypadá. Dat je velká spousta a je potřeba je dobře interpretovat. Myšlenka, že budeme k dopočtu zpoždění používat aktuální dopravní situaci, taky vzala za své, protože aktuální dopravní situace se dneska strašně rychle mění. Ve spolupráci s kolegy z Operátora ICT, kteří pro nás vyvíjí datovou platformu Golemio, jsme dělali nějaké pokusy, simulovali jsme si třeba místa, kde víme, že chronicky dochází ke zpožděním, jako je třeba Uhříněves, a zkoušeli jsme tam různé predikce. Ukazuje se, že to částečně funguje, když prostě detekujeme, že je v místě kolona, a začneme podle toho přičítat zpoždění, tak to začne fungovat, ale situace se vyvíjí tak rychle, že když mám měření staré třeba osm minut, může se za těch osm minut situace výrazně změnit a pak predikce přestává být přesná. Myslím si, že tomu dost dopomáhají služby typu Waze, které dělají to samé a posílají řidiče alternativními cestami. Tím způsobují, že se dopravní situace velice rychle mění.
Ano, ve Waze je na mapě vidět, že když je někde kolona, začínají auta rychle uhýbat z dálnice na jiné cesty a podobně.
A tím se problém rychle vyrovnává, nebo se přesune jinam. U predikce zpoždění je ještě jeden aspekt: musí se k ní přistupovat velice opatrně. Když uživateli slíbím, že mu přijede autobus v 17:00 a on se zpozdí a přijede v 17:03, tak to není příjemné, ale když se seknu opačným směrem a řeknu, že mu to přijede v 17:03, a ono to přijede v 17:00, tak je následek mnohem horší, protože se může velice snadno stát, že tomu člověku spoj ujede. Potenciál přínosu je velice malý a jediná situace, kde má smysl predikci použít, jsou případy, kde jsme si dostatečně jistí, že zpoždění opravdu bude. Takových případů je ve skutečnosti hrozně málo. Proto jsme přešli k víc „pokusovému“ modelu, kdy třeba na naší mapě mapa.pid.cz, kde si můžete aktuálně online zobrazit všechny polohy spojů, vykreslujeme úseky, kde zpoždění je. Než bychom se snažili podávat kompletní informaci s nějakou predikcí, tak prostě sdělíme „tady se vozidlo nachází, tady je úsek, kde teď detekujeme zpoždění 15 minut“ a pak je na uživateli, aby třeba i ze své historické zkušenosti, pokud třeba to místo zná, usoudil, jestli to radši obejde pěšky, nebo to riskne a tím úsekem projede. Jdeme spíš postupně, nejdřív podáváme informace, kterým opravdu věříme. Umělá inteligence je skvělá, umí spoustu věcí, ale příliš moc nevysvětlí, jak dospěla k výsledku, takže ona by něco vypočetla, ale co s tím výsledkem? Je dostatečně přesný, abychom ho zveřejnili?
Rozumím, takže je lepší zůstat u upozornění, že dopravní prostředek má takové a takové zpoždění a cestující s touto informací může naložit podle své zkušenosti, jak třeba autobusy v tuto denní hodinu běžně jezdí a podobně.
Přesně tak. Jde spíš o doprovodné varování, že ta informace nemusí být přesná, a pokud ten člověk má třeba nějaký alternativní způsob dopravy, může ho použít.
V PID Lítačce funguje dvoustupňové hledání těch spojů. Jedno je nazváno „klasické“ a ukáže přestup někde na zastávce a podobně, ale pak funguje i rozšířené vyhledávání, kde jsou výsledky kombinované třeba i s chůzí. Vyhledávač mi řekne, že je například rychlejší nebo výhodnější někde jít pěšky než čekat na další tramvaj nebo metro. Máte zkušenosti s tím, jak lidé tyto dva módy používají? Jak moc se pokročilé vyhledávání ujalo? Používají ho lidé víc než klasický vyhledávač?
V PID Lítačce existují vedle sebe dva odlišné enginy vyhledávání spojení, jsou to dva oddělené algoritmy, které fungují i na trochu odlišné platformě, i když původní data jsou stejná. Rozšířenému vyhledávači někdy říkáme vyhledávač nové generace, protože funguje opravdu dost jinak a snaží se počítat s reálnými časy. Je to jeho základní přednost, ale zároveň to řadu věcí komplikuje. Zároveň má nové prvky, jsou tam plné pěší přesuny mezi libovolnými body, nejenom ty předdefinované, které umí klasický vyhledávač. Jsou tam také prostředky sdílené mobility, jako jsou kola nebo carsharing, umí kombinovat i auto s parkováním a tak podobně. Cílem je pojmout mobilitu víc dohromady. Z rozhraní to nemusí být úplně patrné, může to vypadat, že jsme jen přidali chůzi a kolo, ale vyhledávač funguje na úplně jiném principu. Proto jsme jej schválně chtěli nasazovat postupně. Neudělá třeba to, že by mi našel spojení, který už je předem „prohrané“. Tím myslím případ, kdy mám jet vlakem, který je o 20 minut zpožděný, a pak přestoupit na autobus. IDOS nebo náš klasický vyhledávač takové spojení klidně zobrazí a vůbec jim nevadí, že mi tam reálně chybí 15 minut na přestup. Nový vyhledávač s tím umí nějakým způsobem pracovat a má i spoustu výhod z hlediska pěších přesunů. Když zadám zastávku, kde zrovna nic nejede, navrhne, ať se přesunu tady o 400 metrů vedle na jinou a jedu z ní. Klasický vyhledávač tohle neumí a prostě řekne, že spojení nebylo nalezeno. Zná také strukturu stanic metra, takže dokáže lépe odhadovat přestupní časy. A je tam spousta dalších věcí navíc.
Co se týče adaptace uživatelů, tak zatím není u rozšířeného vyhledávání příliš vysoká. Neznám teď konkrétní čísla, ale lidi jsou hodně konzervativní a používají hlavně ten klasický. Myslím, že to není ani tak o enginu, ale o tom, že rozšířený vyhledávač má jiné rozhraní a výsledky vyhledávání vypadají o dost jinak než v klasickém vyhledávači. Když používám rozšířený vyhledávač, i mně chybí, že v něm nemám na první pohled tak dobrý přehled o trase. Uživatel si hned musí všimnout, že na kartě klasického vyhledávač vidí rovnou celou trasu se všemi časy – třeba jeďte béčkem na Smíchovské nádraží a odtamtud vlakem do zastávky Praha – Velká Chuchle. Zatímco na kartě rozšířeného vyhledávač vidí jenom béčko, E7 a nějaký čas, kdy mám vyrazit. Na první pohled nevidím ani čas, kdy jede to metro, což tam uživatelům taky chybí. Myslím, že rozšířený vyhledávač dává dobré výsledky, ale trošku ho v tuhle chvíli sráží prezentace spojení. Chceme se na to zaměřit, rádi bychom, aby výstupy byly srovnatelné, aby si je uživatelé mohli víc porovnat. Naším cílem je postupně přejít na nový engine rozšířeného vyhledávače, ale samozřejmě za postupného ladění, abychom uživatelům nezhoršili to, na co jsou dneska zvyklí.
Moje uživatelská zkušenost je, že si většinou nejdřív rozkliknu výsledek v pokročilém vyhledávači. A v okamžiku, kdy je tam víc přestupů než dva, automaticky tohle spojení ignoruji. Víc přestupů mi nepřijde jako výhodná varianta. V klasickém rozhraní jsou spoje opravdu jednodušší, přestupů je tam většinou méně. To je čistě můj osobní postřeh. Ale je pravda, že mě pokročilý vyhledávač občas svým řešením překvapí a asi také chodím víc pěšky, protože pěší přesuny jsou někdy vlastně úplně logické a je fajn, že se člověk kousek projde a využije spojení, na které by sám nepomyslel.
To mi na novém vyhledávači přijde skvělé. Myslím, že dopravní síť docela dobře znám, ale občas jsem sám překvapen, že vymyslí něco, co by mě dříve nenapadlo. Bývají to nevelké vzdálenosti, ale člověka by nikdy nenapadlo ten přesun realizovat. Přitom je to třeba 400 metrů a najednou tím získám novou možnost, kterou jsem předtím neměl. Zároveň tím, že počítá se spoji podle aktuálních poloh, může mi zobrazit spojení, které bych normálně neměl k dispozici. Můžu třeba skočit na vlak, který měl jet před 10 minutami. Klasický vyhledávač mi ho nenabídne, protože hledá podle jízdního řádu, ale ten rozšířený hledá s aktuální polohou, vidí, že vlak se teprve blíží do stanice, a tak mi řekne „teď můžeš skočit na vlak, který je o 10 minut zpožděný, můžeš s ním dojet do cílové stanice a budeš tam mnohem dřív“.
Pochopil jsem správně, že aplikaci PID Lítačka, a případně i ten vyhledávací engine čekají v nějaké blízké budoucnosti nějaké změny?
Ano, čekají. Jedním důvodem je, že do vyhledávání spojení postupně integrujeme nový engine, což chceme udělat tak, abychom žádným způsobem nezhoršili uživatelský zážitek. Ještě jsem zapomněl zmínit, že nový engine používá novou datovou platformu, takže může nabízet spoustu služeb, které jsme na té staré už nedokázali. Jsou tam například informace navíc, v létě se třeba dozvím, jestli je spoj klimatizovaný. Můžu se dívat na polohu spoje na mapě. U metra vidím detailnější informace o tom, jak se pohybuju, můžu si vybrat, jestli chci po eskalátoru, po schodech, nebo výtahem. V budoucnu by tam mělo být i to, co už uživatelé z některých aplikací znají, tedy doporučení nejlepšího vagonu metra k tomu, abych vystoupil a měl to pak v cílové stanici co nejblíž.
Na to jsem se chtěl zeptat. Vím, že jste někde na sociálních sítích řešil, že jste tyhle informace chtěli protlačit do map Googlu, ale že to nějak nešlo. Takže už to funguje?
Jako první to měl k dispozici Seznam, který si to vyřešil po svém. Ono není zas tak těžké si těch 60 stanic obejít a namapovat si to. My jsme to chtěli mít správně v datech a pak ta data použít do naší aplikace. Chtěli jsme použít standard Googlu, který je vlastně jediný, který na to existuje. Tak jsme to v něm vyrobili a pak jsme měli docela velký problém Google přesvědčit, aby data ve svém standardu akceptoval a zobrazil je na mapě. Až asi po roce to najednou začalo fungovat. Do Lítačky to musíme teprve integrovat.
Docela si ujíždím na tom, že si vždycky řeknu, kde mám jít na začátek nebo na konec soupravy, abych při přestupu neztrácel čas přecházením. Těším se, až to budu mít v aplikaci.
Když se vrátím k původní otázce, jak se aplikace bude měnit, tak jedna změna je vyvolaná přechodem na nový engine, což by uživatelům mělo přinést nové funkce, které jsme nad starým enginem nedokázali vytvořit. Druhá věc, která aplikaci mění, je to, že bylo potřeba vyměnit subdodavatele, který ji vyvíjí. Jde o to, že prostě skončila nějaká smlouva a novou soutěž vyhrál jiný dodavatel, který aplikaci musí převzít. Převzít takový velký kus softwaru samozřejmě chvíli trvá a oni ji prakticky celou musí přepsat i z hlediska toho, že se změnily technologie. Čeká je poměrně dost práce, kterou uživatelé neuvidí, ale samozřejmě toho využijeme k tomu, abychom napravili některé procesy, které nejsou pro uživatele úplně intuitivní. Máme naplánována vylepšení zejména v procesu nákupu jízdenek, ale i ve vyhledávání spojení. Jde o drobná uživatelská vylepšení, aby třeba obrazovky byly čitelnější a srozumitelnější. Kromě zlepšováků typu nejlepší vagon v metru se uživatelé mohou těšit i na lepší proces nákupu a aktivace jízdenek.
V souvislosti s aktivací se hodně debatovalo o odkladu platnosti aktivované jízdenky. Původně to byly dvě minuty, loni se snížil na minutu. Budou tam nějaké další změny? Bude se lhůta zkracovat, nebo ta minuta už je tady nejnižší čas, který je možný?
Z hlediska vývoje aplikace je to úprava jedné konstanty v kódu, ale z hlediska všeho ostatního to zabralo několik let řešení. Za náš odbor jsme vždycky bojovali o to, aby ta technologická lhůta byla co nejkratší, protože nám záleží na dobru uživatelů a víme, že to uživatele rozčiluje. Ostatně nám to pak osolili v recenzích. Když se někdo diví, proč má PID Lítačka 2,8 hvězdičky, když je to dobrá aplikace, říkám „tak se podívejte na komentáře“. Polovina z nich je: proč je tam pitomá ochranná lhůta před aktivací jízdenky? Ty dvě minuty si nevymyslela aplikace, jde prostě o pravidla, která jsou v tarifu, ten tarif je posvěcený vedením města, vedením kraje a je odladěný s přepravní kontrolou. Zabralo opravdu velké množství času všechny dotčené přesvědčit o tom, že když zkrátíme ochrannou dobu z dvou minut na jednu minutu, neobjeví se najednou horda lidí, kteří to začnou ve velkém zneužívat. Nakonec se to podařilo podle mě i díky mediálnímu nátlaku. Čas od času se objevil někdo, komu se to stalo, dostal za to pokutu, a pak si někde veřejně postěžoval a vyvolalo to někdy až velkou mediální bouři. V tu chvíli si podle mě zejména političtí zástupci uvědomili, že to opravdu není moc uživatelský přívětivé a podařilo se to zkrátit na minutu. Jestli se ten čas bude ještě nějakým způsobem hýbat, těžko říct. Jsem rád, že se podařila ta minuta, teď dám chvíli pokoj, ale samozřejmě jsem původně navrhoval 30 vteřin.
Přemýšlím, jestli jsem se s takovou ochrannou lhůtou potkal někde v zahraničí… V Londýně se jízdenky kupují přímo platební kartou a žádná ochranná lhůta tam není, ale je fakt, že tam mají v metru turnikety. Ale je zajímavé debatovat o tom, jestli je ochranná lhůta potřeba, nebo není.
Ty systémy jsou určitým způsobem neporovnatelné. Jeden z důvodů, který se uvádí, je, že jde i o mentalitu národa. Já takové argumenty nemám moc rád. Je to dvojsečné: když z lidí dělám „sprosté podezřelé“, co od nich potom mám vlastně čekat? Možná máme strašnou potřebu zajistit, aby nikdo nemohl nic obejít, což může být důsledkem nějakých minulých zřízení. Mám radši argument ve smyslu, že když nás pět lidí okrade tím, že nějaký systém obejdou, pořád se to vyplatí, pokud za to získám 200 tisíc spokojenějších uživatelů.
Je to opravdu spíš politická otázka než technická. Necháme na pražských politicích, aby si to zase nějak vyřešili, a uvidíme, co se s ochrannou lhůtou bude dít. Když jsme se dotkli zahraničí: předpokládám, že sledujete, jak dopravní systémy v Evropě nebo i ve světě fungují. Jsou někde v zahraniční datové věci nebo funkce v aplikacích, které byste sem rádi nějakým způsobem přivezli?
Sledujeme to, co mají v zahraničí. Třeba právě to, že Google umí doporučovat nejlepší vagon metra, jsme zjistili tak, že nám Janek Rubeš poslal screenshot z Kyjeva, kde to fungovalo, s lehkým dotazem, jestli to nechceme mít taky. Řekli jsme si, no jo, to chceme, jen pak trvalo dva roky nějakým způsobem to procpat, to už je ale jiná věc. Jinak většinu funkcí, které nabízí zahraniční vyhledávače, nějakým způsobem adaptujeme, anebo je adaptovat nemůžeme, protože aplikace fungují na jiné filozofii. My jsme hodně zvyklí na „IDOSí režim“, jak tomu říkám. Zobrazujeme spojení s konkrétními časy, a to včetně metra. Když si člověk porovná výsledky, které mu dá PID Lítačka a které mu dá Google, je ten formát trošičku jiný. Lítačka zobrazuje jednotlivá spojení, každé metro jedno po druhém, zatímco jiné aplikace, jako třeba právě Google, fungují víc na modelu vyhledávání tras než spojení. To znamená, že než aby hledaly chronologicky všechny časy, kdy můžu jet, navrhnou mi tři trasy, jedna je metrem, druhá tramvají a třetí pěšky s nějakým přestupem, a až když si zvolím trasu, dozvím se konkrétní časy, kdy to jede. Na začátku prostě dostanu informaci „jeď áčkem, jede to každé tři minuty a nejbližší jede v 16:14“ a tím to hasne. Zatímco režim Lítačky je hodně orientován na jednotlivá spojení. Je to hodně dané tím, že na to jsou u nás lidé zvyklí z IDOSu, který byl a stále je nejznámější a nejpoužívanější aplikací.
Zároveň máme poměrně dobrá data. V řadě zahraničních měst a systémů u linek s intervalem 10 a méně minut, v jižních zemích i 30 a méně minut, konkrétní časy jízdního řádu vůbec neexistují. Je tam napsáno, že to jezdí každý den v intervalu X a přesný čas neexistuje. V tu chvíli by náš model, který funguje v IDOSu, nešel použít, protože se nedá vypsat žádný konkrétní čas, kdy má třeba autobus přijet, protože to není nikde definováno. Bereme jako samozřejmost, že u nás se jízdní řády plánují na minuty, ale když přijedou turisti zejména z jihu, strašně se diví, proč máme vypsaný každý čas odjezdu, a ještě více se diví, že to tak opravdu často přijede (smích).
Když se vrátím k Londýnu, opravdu se mi líbil systém, že člověk si nemusel pořizovat žádnou aplikaci ani kartu nebo jízdenku a mohl rovnou platit platební kartou. Funguje tam denní limit, který platby automaticky zastropuje. Je to vlastně strašně jednoduché a člověk nemusí jako turista vůbec uvažovat o tom, že si musí někde něco pořídit a podobně. Ale to se dotýkáme spíš plateb a kupování jízdenek než vyhledávání v jízdních řádech. V tomhle ohledu jsem radši hledal v Googlu než v londýnských aplikacích.
Londýn je hodně průkopnický, jak v ticketovacím systému, kdy byli vlastně první, kdo systém Pay as You Go představili. Teď už je to běžnější model, i třeba Ostrava a z velké části Brno v tomhle systému jedou. Londýn byl zároveň průkopnický i v tom, že velice, velice propagovali model otevřených dat, a v tom jsme se u nich dost inspirovali. Londýn šel cestou „Data First“, to znamená „nejdřív dejme dohromady co nejkvalitnější datové podklady a nad nimi potom vzniknou nějaké aplikace“. Měli dokonce filozofii, že oni sami jako Transport for London aplikace přece nemusejí mít, že stačí, když je vytvoří ostatní hráči, včetně třeba Googlu a podobně. Nakonec si samozřejmě aplikaci také udělali, protože je dobrým prostředkem propagace a zároveň uživatel rád sáhne po oficiální aplikaci, protože má jistotu, že ho nikdo nenapálí a že mu třeba někdo jízdenku neprodá s nějakou přirážkou nebo něco takového. Ale líbil se mi ten Data First přístup a vlastně jsme se snažili dělat to stejně. Proto jsme nejdřív dali dohromady data o jízdních řádech i data o polohách spojů a náš nový engine funguje nad datovými výstupy, které jsou zároveň k dispozici veřejnosti. Teď to nemyslím tak, že by veřejnost zkoumala apíčka v JSONu a podobně, ale kdokoliv vyvíjí aplikaci, může ta data použít. Stejně kvalitní datový výstup, jako máme v Lítačce, mají k dispozici i aplikace třetích stran. Počítáme s tím, že když někdo přijede jako turista na tři dny do Prahy, asi ne každému se chce instalovat Lítačku a učit se s novým rozhraním. Je úplně v pohodě, když používá konkurenční aplikaci třeba od Googlu, na kterou je zvyklý, umí s ní a ví, jak na něj reaguje. Chceme, aby ta data ve vysoké kvalitě měli všichni.
Zmínil jste jiná česká města. Existuje nějaká spolupráce mezi jednotlivými dopravními podniky v Česku, třeba co se týká dat a aplikací? Občas čtu někde na sociálních sítích: hele, tady v Ostravě nebo v Plzni už mají tohle, proč to nemáme v Praze? Funguje nějaká spolupráce nebo koordinace?
Dopravní podniky mají svoji asociaci, kde se potkávají organizátoři dopravy, což jsou většinou krajské organizace, a nějakým způsobem se mezi sebou koordinují. Nejvyspělejšími dopravními systémy jsou asi náš PID, pak Jihomoravský kraj a právě ten ostravský. Ale i ostatní postupně budují nějakou značku integrované dopravy. Můj osobní názor, který je možná trochu pesimistický, je, že pro tak malou zemi, jako je Česká republika, je to zbytečně roztříštěné. Máme 11 nebo kolik dopravních systémů, které jsou značně nekompatibilní. Jsme sice schopní se navzájem inspirovat, ale každý si nakonec musí svoje řešení na svůj systém naroubovat sám. Základ je už v tom, že každý dopravní systém má úplně jiný systém tarifů. My máme pásma, jiné systémy jsou takzvaně zónově relační, to znamená, že tam je výpočet jízdného mnohem složitější, záleží na tom, odkud kam jedu. Zároveň mají od různých dodavatelů různé systémy na různé úkony, které nejsou kompatibilní, úplně kompatibilní nejsou ani data… Myslím, že tady strašně chybí role státu, který nechal organizaci dopravy na krajích, což dává smysl, ale postupem času se na to začala nabalovat hromada softwaru. Jednak jsou to služby pro cestující, jako právě aplikace, a teď zase: PID má svoji aplikaci, jižní Morava má svoji aplikaci, Ostrava má svoji aplikaci, Ústecký kraj… Všichni mají svoji a je to vlastně plýtvání veřejnými prostředky, které je důsledkem toho, že nikdy nepřišel žádný zásah, který by se snažil to nějakým způsobem standardizovat. Nejde jen o aplikace, musí existovat software na plánování jízdních řádů nebo dispečerský software, kterým se doprava sleduje. Každý kraj má svůj, některé mají třeba stejný a jsou kompatibilní a některé zase ne. Pak jsou ticketovací systémy na odbavení, na elektronické jízdenky, my máme nějaký, Brno má jiný, Ostrava má jiný, mají různé dodavatele a nejsou žádným způsobem kompatibilní. Všechno je to roztříštěné a každý má samozřejmě rád ten svůj systém a nechce ho vyměnit. Myslím, že nějaká standardizace shora by tady neuškodila, protože by pak systémy mohly být mnohem propojenější.
Možná by stačilo, kdyby se začalo sjednocením struktury dat, zbytek by se pak možná dal vyřešit jednodušeji. Když budou data stejně strukturovaná, budou se sbírat stejným způsobem, třeba by se dala využít standardním způsobem v jedné aplikaci nebo v nějakém klonu té aplikace. Ale nevím, kdo by vlastně měl ten standard udělat, protože, jak říkáte, doprava je v kompetenci krajů, a pokud se nepletu, Ministerstvo dopravy nemá pravomoci v této oblasti nikomu něco nařizovat.
Legislativně se v tom bohužel nevyznám, ale přijde mi, že jediný, kdo v tomhle může nějakým způsobem konat, je stát jako takový, který by to mohl nějakým způsobem sjednotit. Ale teď už se to dostalo tak daleko, že je to těžké. Každý si prostě vybudoval nějaký svůj systém a je náročné jej najednou snažit nahradit nějakým jiným. Myšlenky celostátního tarifu existují, například je tady OneTicket, který vznikl původně kvůli železnici. Liberalizací provozu na dráze se začíná čím dál více stávat, že kromě Českých drah potkáváme i další dopravce, a vznikla potřeba, abych si mohl koupit jízdenku z Prahy do Ostravy a nemusel jsem řešit, s jakým jedu dopravcem. Na základě toho vznikl projekt OneTicket, který má svůj význam v některých regionálních vazbách, ale samozřejmě má problém v tom, že je to tarif, který je nad všemi ostatními nebo spíš vedle všech ostatních, takže bude vždycky méně výhodný. Největší motivace, kterou by mohla být cena, chybí, takže pro uživatele je pořád nejlepší koupit si jízdenku od toho dopravce, se kterým chce jet. OneTicket není tolik využívaný a u železnice to nevadí. Ale pak vznikla i myšlenka – poměrně logická – mít tarif, který je pro celou Českou republiku. Abych nemusel řešit, že teď jedu na jižní Moravu a potřebuju jinou appku, jiný tarif, jinou jízdenku, jsou tam jiná pravidla, ale mít společný tarif – jakoby rozšířit OneTicket na celou republiku. Nevím, jestli je v tomto projektu něco nového, ale od začátku byl vymyšlený jako tarif vedle existujících regionálních tarifů, což zase vede k tomu, že buď bude dražší, a tím pádem nebude atraktivní, a kdyby byl levnější, musel by někdo pravděpodobně kompenzovat krajům ztrátu způsobenou tím, že prodává levnější jízdenky, než prodávají ony. A dotovat to, to se taky nikomu nebude chtít. Takže sjednocení je poměrně složité.
Pojďme zpátky do Prahy. Chtěl jsem se zeptat ještě na jednu věc: na tabule s odjezdy, které se instalují na zastávkách. Ještě nejsou všude, ale už se po Praze často vynořují. Předpokládám, že vychází ze stejných dat jako aplikace. Napadlo mě, že by se ta plocha dala využít i k různým jiným věcem. Máte s těmito panely nějaké další plány?
Odjezdové panely jsou skvělý projekt, který mám opravdu rád, i když je to věc, kde se vlastně není čím chlubit, protože děláme něco, co už jiná města dávno mají. Přesto mám radost, že se to podařilo právě proto, že původně chyběla data, která bychom mohli zobrazit. Zároveň tím, že jsme začínali od začátku, mohli jsme datovou platformu postavit moderním způsobem, to znamená, že zobrazovaná data jsou veřejně přístupná a teoreticky si může vlastně kdokoliv vyrobit svůj panel a dát si ho někam třeba do svého podniku a zobrazovat tam odjezdy veřejné dopravy.
Domů na dveře, abych věděl, kdy mi pojede tramvaj, jasně (smích).
Mám radost, že se to podařilo vyřešit takhle otevřeně. Zároveň se nám podařilo ta zařízení výrazně zlevnit oproti tomu, kolik stávala předtím. Mohli jsme je otevřeně vysoutěžit a tím pádem rozmnožit po celé Praze ve větším počtu. Zároveň není realistické vyzdobit 3 tisíce zastávek v Praze odjezdovými panely, to se opravdu nevyplatí. Naším cílem je osadit vytíženější zastávky, kde se vyskytuje větší množství lidí a je to výrazně pohodlnější, když přímo na zastávce vidím panel, a u těch ostatních si cestující vystačí s virtuální formou, to znamená, že tenhle panýlek budeme mít v PID Lítačce na kartičce Odjezdy. A k vaší otázce, že by se tam dalo zobrazovat vícero věcí, tak už dokončujeme platformu pro informování o mimořádných událostech. Teď se zavádí na našem dispečinku, budeme ji zavádět i na dispečinku Dopravního podniku. V případě, že se stane něco, co je potřeba cestujícím předat, by mělo být možné na ty panely psát textovou zprávu. Rádi bychom kromě informací o odjezdech na tabule psali i informace o mimořádných událostech, výlukách a tak podobně.
To bude taky užitečná záležitost. Taky se nabízí, že by tam mohla být reklama, ale to asi je zase úplně mimo nás, tak doufám, že tam té reklamy zas tak moc nebude (smích).
To bychom radši nedělali. Tím, že to je LED panel, jenom bílé LEDky, tak na tom naštěstí nejdou dělat moc divoké reklamy. A snad to nikoho nenapadne (smích).
Celou dobu mluvíme o datech a o tom, jak se data zobrazují uživatelům, ale předpokládám, že se data o dopravě v Praze používají i interně třeba k analýzám dopravní situace nebo k plánování toho, kam a jak často bude co jezdit a podobně. Je to tak?
To byl další cíl platformy, kterou jsme vytvářeli. Jednak aby byla podkladem pro aplikace, pro vyhledávač a pro prvky v terénu, odjezdové panely, a samozřejmě další cíl je mít data uložená pro analytiky a zpětná vyhodnocení. Myslím, že máme ještě hodně prostoru, kam se můžeme posunout, protože jsme nebyli úplně zvyklí to tolik řídit daty. Zároveň je to zajímavá disciplína v tom, že si člověk myslí, že má data a v tu chvíli má vyhráno, ale ono vůbec nadesignovat správnou metriku, která mi opravdu řekne něco, co mi pomůže, dá trošku práce. Začínáme s daty pracovat víc z toho hlediska, že jsme dělali analýzy třeba na rychlost průjezdu centrem. Známe notorické úseky, kde se člověk postaví a vidí, že tam je kolona. Ale vyhodnotit a kvantifikovat to, jak moc kolona opravdu zdržuje, to je najednou trošku něco jiného. Výsledky nás často překvapí, například někde, kde si myslíme, že to je úplně strašné a jsou tam hrozná zpoždění, se ukáže, že to tak není, jenom tam máme určitý pocit třeba z toho, že se tam opakují výraznější zpoždění, ale nejsou zas tak častá. A pak jsou jiné úseky, které nejsou tak notoricky známé, protože tam třeba nejsou velké problémy, ale ten problém je tam třeba chroničtější a zpoždění jsou potom častější. Kvantifikace v číslech výrazně pomůže to urovnat a uškatulkovat a pomůže potom i při argumentaci. Mít tvrdá data je vždycky lepší než jenom mít nějaký dojem. Úplně nejlepší věc na tom je, že data můžu porovnávat v čase. Když chci zjistit, jestli opatření, které jsem udělal – typu změna preference na semaforu – zlepšilo dopravu, pouhým okem se to pozoruje dost těžko, protože je to zatížené subjektivním pozorováním. V tu chvíli se výrazně vyplatí mít data, protože když měřím úsek třeba po celý týden, tak z toho už opravdu zjistím hodně a můžu porovnávat přímo vliv konkrétního opatření.
Teď mě napadlo – mluvili jsme o Waze, který je postavený na tom, že informace o dopravních komplikacích hlásí přímo řidiči. Zvažovali jste i něco podobného? Třeba že by lidé mohli něco hlásit sami prostřednictvím PID Lítačky a že by se s tím pracovalo, anebo je to příliš nepřesný zdroj informací?
To je zajímavá otázka. Touto cestou jsme se zatím nevydali. Vždycky dojdeme k tomu, že všechno, co nám uživatelé nahlásí, bychom přece dávno měli sami vědět. Bylo by přece vlastně zvláštní, aby nám uživatelé hlásili, že tramvaj má někde nehodu, když bychom to už měli vědět. Aplikace Waze je původně založená na komunitě, která není propojená s žádnou autoritou, která by informace dodávala. U nás to působí divně a vždycky skončíme u toho, že bychom spíš měli vylepšit interní procesy předávání dat mezi složkami našeho systému, aby se k uživateli dostala ověřená informace o tom, že se stala nehoda a teď to tady nepojede, než abychom spoléhali na to, že nám to nahlásí někdo zvenku. Ani si nejsem jistý, jestli něco podobného umožňuje nějaká jiná oficiální aplikace. Asi k tomuhle závěru musel dojít nakonec každý, kdo nějakou provozuje.
Jen mě to napadlo, tak jsem si říkal, že se na to zeptám, ale určitě na tom nápadu netrvám. Mluvili jsme o chystaných změnách v PID Lítačce, ale kdybyste měl neomezené zdroje a neomezená data, co byste ještě v aplikaci rád viděl? Jakou funkci nebo jakou novinku?
To je dobrá otázka. V tuto chvíli nevidím žádný velký třesk, který bychom mohli udělat, ale rozhodně máme hromadu drobnějších vylepšení pro uživatele, které by stálo za to realizovat. Určitě bychom rádi, kdybychom uměli líp pracovat s predikcí zpoždění. Určitě bychom rádi navrhovali co nejrealističtější trasy. Je to věc, která se projeví jenom v tom, že data budou důvěryhodnější a že cestující časem zjistí, že mohou věřit tomu, co aplikace navrhuje. Je za tím skryto asi ještě hodně experimentování a hraní si s daty a zkoumání, co všechno z nich lze vyvodit. Zároveň jsme nikde ve světě moc neviděli, že by tuhle funkci někdo dělal. Vím, že s tím experimentuje Google. Tam je vidět, že když si zobrazím dráhu spoje, tak se zpoždění v predikci trošku mění. Ale popravdě jsem v tom nikdy nenašel žádnou logiku, Google občas přičítá minuty v úseku, kde příliš nerozumím tomu, proč by to měl dělat. A jinde zase zkracuje zpoždění tam, kde to není moc logické. Evidentně se na to snaží nasadit nějaké predikční modely, ale že by dávaly nějaké oslnivé výsledky, tak to moc ne. Každopádně je to funkce, kterou bych rád vyvinul.
Pak nás zajímá informování o mimořádných událostech. Tomu, že se občas někde zastaví provoz, se nedá úplně vyhnout. Technika občas zazlobí. Ale pro uživatele jsou to často nesmírně nepříjemné a stresující zážitky, zejména když někde potřebuje být a ono nejede metro. Jedním z velkých problémů je absence informací. Líbilo by se mi, kdybychom dokázali, aby když se někde něco stane, všem uživatelům, kteří se chystali tím úsekem projet, přišla notifikace „tady je nehoda a tady máte alternativní trasu“. Působí to jednoduše, ale ve skutečnosti to vůbec jednoduché není. Nejde ani tak o techniku jako o to, jak to celé organizačně zajistit. Nejhorší je na tom informační nejistota: když je někde přerušen provoz, tak ani sám dopravce často neví, jestli to už za pět minut pojede, nebo jestli to bude stát ještě hodinu. Zároveň se začnou zavádět odklony nebo náhradní doprava a tak podobně. Pak se stane, že jsou nějaké linky přeplněné, a tím pádem vlastně nevyužitelné. A odhadnout všechny tyhle dopady pro každé opatření, které se může stát, je složité. Snažíme se o to i právě s využitím informací z real-timeového provozu. To jsem tady vlastně nezmínil, ale rádi bychom v budoucnu zaintegrovali i data o obsazenosti spojů, která máme z části vozidel.
Jak se to zjišťuje, ta obsazenost vlastně? Teď mě to právě napadlo, říkal jsem si, v tramvajích a v autobusech jsou kamery, tak by se asi dal analyzovat obraz, kolik je tam lidí… Jak se to dělá ve skutečnosti?
Standardní metoda jsou čidla nad dveřmi, v současné době se používá obyčejná kamera s detekcí obrazu, která je docela dobrá i v tom, že umí detekovat případy, kdy vystupuje hodně lidí a část z nich, kteří stojí u dveří, musí vystoupit ven z tramvaje, nechat ty ostatní vystoupit a pak zase nastoupit zpátky. Čidla na starých technologiích to brala jako výstup a nástup, ale ty novější dokáží až do rozsahu kamery si jakoby držet toho člověka a poznají, že je to ten samý, to znamená, že to není nástup a výstup. Tahle metoda je velice dobrá v tom, že dává přesné výsledky v počtu nástupů, výstupů na každé stanici a je to lepší i než kamery ve vozidlech. Ty typicky nezabírají úplně každý prostor a zároveň velkou část prostoru zabírá více kamer, takže tam je potom problém odlišit, kteří lidé jsou ti stejní, a nakonec se ukazuje, že metoda dveřních sčítačů je velice spolehlivá a dobře použitelná. Jsme teď v začátcích, už postupně získáváme data a provádíme certifikace zařízení. Nestačí nám jenom, že dopravce vybaví autobus sčítačem, ale pošleme četu, která ručně kontroluje nástupy a výstupy a ověřuje, že sčítač počítá správně. Rádi bychom ta data zobrazovali nebo využili v informacích pro cestující, mohla by to být zajímavá informace, kdybychom dokázali varovat, že konkrétní autobus bude možná plný a jiný bude poloprázdný. Cestujícím to může pomoci s výběrem prázdnějšího spoje a nám s tím, že se vybalancuje využití linek.
Zároveň jsou to pak zajímavá data pro plánování tras a intervalů.
Přesně tak. Bez těchto prostředků se průzkumy musí dělat ručně. Vždycky, když byly velké kampaně, že se sčítalo v celé síti, byla k tomu potřeba hromada brigádníků. A lidští sčítači nejsou tak přesní. Když posadíte do tramvaje jednoho člověka, aby sčítal nástupy a výstupy, tak třeba v centru nemá velkou šanci vypočítat, kolik lidí vylezlo a nalezlo. Technika může výrazně pomoct s vyhodnocováním využití.