Ahoj všem,
o sloučení dostupných dat v ČR do jedné použitelné datové sady se snažím už sedm let. Na začátku jsem rozhodně nepočítal s tím, že mi celá věc bude trvat tak dlouho, narazil jsem ale bohužel na řadu problémů. Všechny jsou řešitelné, jen jejich řešení zabere čas a bohužel jsem svého vlastního neměl dost.
Moc mě těší, že se o to snažíte. Možná se společnou prací dostaneme k spolehlivému výsledku dřív než za další roky 🙂
Na začátku jsem se rozhodl, že chci vytvořit datovou sadu, která bude bez pochybností otevřenými daty. Technicky bych tedy mohl všechny problémy vyřešit tím, že budu parsovat soubory IDOSu pro Windows, ale nedosáhl bych tím svého cíle. Znamená to ale výrazné ztížení celé věci.
Pokusím se tu sepsat, co všechno je z mého pohledu ještě potřeba vyřešit:
Sice jsem spor s CHAPSem "vyhrál", takže CIS JŘ je o krok blíž k použitelnosti, v CHAPSu ale umí velmi dobře házet lidem klacky pod nohy a datům se pořád nedá stoprocentně věřit. (Musím o tom napsat článek, další položka na TODO listu...)
Je potřeba buď donutit CHAPS a MD do publikování úplných a nezávadných dat, nebo (asi rozumnější možnost) integrovat jiné zdroje JŘ.
Většina IDS nepublikuje svoje JŘ jako otevřená data, ač je mají v nějakém vlastním informačním systému.
Pro skládání několika překrývajících se zdrojů dat, třeba jízdních řádů od jednotlivých IDS, je třeba mít nějaké sdílené klíče. Takovým klíčem pro JŘ jsou licenční čísla linek (ta šestimístná), GTFS data od IDS je ale často neobsahují. Člověku pak zbývá buď si je vyprosit nebo vydobýt přes InfZ, nebo sepisovat nějaké šílené heuristiky pro porovnávání spojů.
GTFS je hezky jednoduchý a přehledný standard, podporovaný snad veškerým softwarem, ale nehodí se na reprezentaci českých JŘ:
Polohy zastávek jsou povinné, ale my budeme mít při všem štěstí jen 99% pokrytí.
Váže tarifní pásmo k zastávce, ne zastavení spoje, což třeba v Praze nefunguje.
Neobsahuje pořadí zastávek v lince, což u některých linek výrazně ztěžuje generování tabulkového JŘ.
Nepodporuje "zakázané cesty" - skupiny zastávek, mezi kterými nelze daným spojem cestovat (typicky v rámci jednoho města na dálkových linkách).
Nepodporuje textové poznámky k spojům.
Pokud člověku jde jen o hledání spojení, tak některé z těchto věcí jdou obejít několikanásobným nakopírováním každého spoje/zastávky. Já chci ale s daty dělat víc, než jen je poslat do Google Maps.
NeTEx všechno tohle umí, ale je násobně komplikovanější. Zároveň software typicky podporuje jen nějakou jeho podmnožinu, ve které se pak nenachází třeba funkce potřebné k implementaci těch zakázaných cest.
Spousta vyhledávačů neumí pracovat se zastávkami bez polohy (dost možná proto, že v GTFS jsou polohy povinné).
Řečeno stručněji, je potřeba
- shodnout se na rozumném formátu JŘ,
- napsat konvertér z GTFS, JDF, CZPTT,
- přidat podporu do aspoň jednoho routeru,
- obepsat všechny IDS a městské DP s žádostí o data, vč. licenčních čísel,
- všechno to sloučit dohromady.
Osobně jsem začal JrUtil přepisovat na práci v NeTExu, protože právě v něm mají být podle nařízení EU zveřejňované JŘ (což ČR kazí uveřejňováním nekonformních souborů a SR kazí tím, že na celou věc kašle).
Pro veřejné exporty používám vlastní sbírku poloh zastávek od různých IDS, krajů a dopravních podniků. Pokud nějaká zastávka nemá polohu, možná stačí jen aktualizovat zdrojové soubory.