Otevřená data PID

Otevřená data jsou zpracovávána zejména pro datové analytiky a tvůrce dopravních aplikací. K dispozici jsou pravidelně aktualizované jízdní řády, online informace o polohách spojů, ale i statistické údaje o Pražské integrované dopravě.

Kromě umístění zde jsou datové sady předávány též Institutu plánování a rozvoje, který je po dalším zpracování umisťuje též na pražský portál opendat. Datové sady zpracovává též datová platforma Golemio.

Licence

Data, která lze stáhnout přímo zde z webu, jsou stejně jako celý obsah webu opatřena licencí CC-BY, tedy je lze dále šířit, avšak je nutné uvést autora a případné provedené změny. Data, která lze stáhnout z jiných zdrojů zde odkazovaných, se řídí licencí daného zdroje.

Data umístěná zde jsou poskytována jako “preview” bez záruky. Mohou být bez předchozího varování smazána, přemístěna, nebo může být upraven formát. V datech též mohou chybět některé údaje, které podléhají přísnějším licencím.

Kontakt

Pokud máte zájem některé datové sady systematicky využívat, nebo by se vám hodila jakákoliv jiná podpora, napište nám prosím na opendata@pid.cz.

Datové sady

Datová sada Četnost aktualizace Formát / Odkaz Podrobnosti
Jízdní řády PID ve formátu GTFS
Jízdní řády všech linek PID (MHD + region) na 14 dní dopředu.
denně [GTFS] dokumentace
Aktuální polohy vozů, zpoždění spojů
Informace o polohách a zpožděních všech vozidel na linkách v rámci PID poskytované v reálném čase + odjezdy spojů ze zastávek
online (API) GTFS Realtime nebo Golemio API JSON
Seznam zastávek PID
Všechny zastávkové sloupky, uzly, názvy, pásma a polohy zastávek
denně [XML] [JSON] [XSD], dokumentace
Prodejní místa PID
Místa, kde lze zakoupit jízdenky, předplatní kupóny, nebo vyřídit průkaz PID (automaty, kontaktní místa, stanice)
cca měsíčně [XML] [JSON] [XSD], dokumentace
Číselníky: [XML] [JSON] [XSD]
GeoData
Trasy, linky, zastávky, vstupy do metra a tarifní pásma a v různých formátech (GeoJSON, Shapefile, …)
denně [opendata.praha.eu]
Novinky, výluky a operativní mimořádnosti v provozu real-time [RSS kanály]
Roční statistika PID ročně [opendata.praha.eu]
Další datové sady naleznete na portálu opendata.praha.eu

Dokumentace

Jízdní řády ve formátu GTFS

Soubor obsahuje jízdní řády všech linek PID (metro, tramvaje, autobusy, lanovka, přívozy, vlaky), trasy spojů, garantované návaznosti mezi spoji, data o struktuře stanic metra a informace o tarifu pro výpočet ceny jízdného v Praze. Jízdní řády vlaků jsou však zatím pouze experimentální, mohou obsahovat nepřesnosti v případě výluk! Soubor se generuje každý den cca mezi 4:00 a 4:30.

Data splňují specifikaci GTFS Static. Specifika souboru s jízdními řády PID a soubory a sloupečky nad rámec specifikace jsou vypsány níže. Tato specifika slouží jen pro lepší pochopení a lidskou čitelnost dat, případně poskytují doplnění pro správné použití těchto dat, na samotnou validitu nemají vliv.

agency.txt

  • Vzhledem k jednotnosti tarifu je uveden pouze společný dopravce “PID”. Rozdělení linek mezi smluvní dopravce obsahuje soubor route_sub_agencies.txt.

stops.txt

  • V souboru jsou pouze zastávky, které jsou aktuálně využity, tj. alespoň v některý den platnosti feedu v zastávce zastavují nějaké spoje. Pokud je zastávka (i dočasně) mimo provoz, nebude obsažena.
  • Stanice metra mají dvě zastávky (pro každý směr jednu) sdružené do jedné stanice. stop_id této stanice je ve tvaru Učíslo_uzluSindex. U přestupních stanic metra jsou pak zastávky čtyři, rozdělené do dvou stanic, viz níže.
  • Zastávky a stanice vlaků jsou aktuálně reprezentovány jediným záznamem typu Stop. Výhledově je v plánu u stanic s alespoň se dvěma nástupišti vytvořit záznam typu Station a rozlišit jednotlivá nástupiště. V souboru jsou i některé body, které nejsou stanicemi a jsou využity jako průjezdní body (stop_id začíná písmenem ‘T’).
  • Kromě zastávek a stanic jsou v souboru též intermediate nodes a boarding areas, které nejsou zastávkami (viz specifikace GTFS)

U1072S1,”Můstek – A”,50.08353,14.42456,”P”,,1,,1
U1072S2,”Můstek – B”,50.08341,14.42339,”P”,,1,,1
U1072Z101P,”Můstek – A”,50.08312,14.42496,”P”,,0,U1072S1,1,M1
U1072Z102P,”Můstek – A”,50.08394,14.42415,”P”,,0,U1072S1,1,M2
U1072Z121P,”Můstek – B”,50.08321,14.42279,”P”,,0,U1072S2,1,M3
U1072Z122P,”Můstek – B”,50.08361,14.42398,”P”,,0,U1072S2,1,M4

  • zone_id popisuje pásmové zařazení zastávky (P, 0, B, 1, 2, … ale i např. “B,1”). Může být prázdné pro linky se zvláštním tarifem (např. AE), nebo obsahovat pomlčku pro zastávky/stanice mimo PID. Protože v jedné zastávce mohou být různé linky zařazeny do různých tarifních pásem, může kvůli tomu být zastávka rozštěpena do více “virtuálních” záznamů, které všechny sdílí stejnou pozici v mapě. Toto je potřebné například pro výpočet ceny. Fyzicky je pak na místě pouze jeden sloupek. Níže příklad výstupní zastávky na Černém Mostě.

U897Z1P,”Černý Most”,50.10912,14.57713,“P”,…,V1    <– pro městské linky (MHD)
U897Z1,”Černý Most”,50.10912,14.57713,“0”,…,V1      <– pro příměstské linky v pásmu 0
U897Z21,”Černý Most”,50.10912,14.57713,“B,1”,…,V1 <– pro příměstské linky v pásmu B,1

  • platform_code je kód stanoviště používaný k označení sloupku v rámci skupiny zastávek
  • asw_node_id a asw_stop_id (tzv. číslo uzlu a číslo sloupku v rámci uzlu) dohromady tvoří identifikátor zastávky používaný v některých aplikacích a systémech PID
  • zone_region_type je číselná hodnota nabývající jedné z následujících:
    • 0 nebo nevyplněno – nejde o veřejnou zastávku pro cestující, ale pomocný bod
    • 1 – jde o zastávku na území hl. m. Prahy
    • 2 – jde o zastávku na území Středočeského kraje
    • 3 – jde o zastávku mimo území Prahy a SČ kraje, kde lze ale využít jízdné PID v plném rozsahu
    • 4 – jde o zastávku mimo území Prahy a SČ kraje, kde lze využít jízdenku PID pouze na cestě přes zastávky z kategorií 1 až 3 výše
    • 5 – jde o zastávku, kde nelze využít jízdné PID
  • Jedna zastávka může mít i více záznamů, pokud se v průběhu feedu mění některá z jejích vlastností (například bezbariérovost, nebo poloha)

stop_times.txt

  • U vlakových linek jsou na trase obsaženy též body, které vlaky projíždějí (pro upřesnění trasy) – rozlišeno pomocí pickup_type a drop_off_type dle specifikace.
  • shape_dist_traveled popisující vzdálenost od počátku na trase má vždy svůj protějšek v shapes.txt (vždy existuje v shapes.txt záznam s identickou souřadnicí), aby bylo možné snadno dělit trasu na mezizastávkové úseky.
  • trip_operation_type rozlišuje regulérní trasu (hodnota = 1) od výjezdů, zátahů a přejezdů s cestujícími mimo běžnou trasu linky (hodnota > 1).
    • 1 = regulérní spoj na trase
    • 7 = výjezd mimo pravidelnou trasu
    • 8 = zátah mimo pravidelnou trasu
    • 9 = přejezd na lince mimo pravidelnou trasu
    • 10 = přejezd na jinou linku
    • Vysvětlení: Hodnota se používá pouze u tramvají, protože v ostatních trakcích jsou nájezdy na trasu a zátahy neveřejné a bez cestujících. Běžné spoje a spoje, které vyjíždějí z vozovny na své trase, nebo zatahují do vozovny na své trase, jsou vedeny jako regulérní (operation type = 1). Spoje, které vyjíždějí z vozovny mimo svou trasu, mají operation type = 7 až do první zastávky na trase (nevčetně) a dále operation type = 1. Spoje, které z trasy sjíždějí, mají operation type = 1 až po poslední zastávku na pravidelné trase (nevčetně) a dále operation type = 8.
  • bikes_allowed určuje možnosti přepravy kol na spoji v dané zastávce
    • 0 = nejsou informace o přepravě kol
    • 1 = lze přepravovat kolo
    • 2 = nelze přepravovat kolo
    • 3 = lze převézt kolo, není však možné s kolem v této zastávce nastoupit ani vystoupit
    • 4 = lze převézt kolo nebo s kolem nastoupit, není však možné s kolem vystoupit
    • 5 = lze převézt kolo nebo s kolem vystoupit, není však možné s kolem nastoupit

routes.txt

  • route_short_name odpovídá označení linky pro veřejnost (např. “A”, “22”, “S9”, “P7”).
  • route_long_name odpovídá licenční trase linky (nemusí nutně souhlasit s reálnou trasou například v případě výluky!)
  • is_night informuje, zda jde o noční linku
  • is_regional informuje, zda jde o linku příměstské nebo regionální dopravy, tj. obsluhuje též nebo výhradně území mimo Prahu
  • is_substitute_transport informuje, zda jde o linku náhradní dopravy

trips.txt

  • block_id je konstruováno jako trip_id prvního spoje v sekvenci spojů, které na sebe navazují. Viz níže příklad spoje linky 174, který na Lukách mění číslo a pokračuje dále jako spoj linky 301 do Chýnice. Přes block_id jsou propojeny pouze spoje, kde vozidlo pokračuje dále a cestující tak nemusí přestupovat. Garantované návaznosti s přestupem zachycují transfers.txt.

L174,1111100-1,174_17_180509,”Luka”,0,174_17_180509,L174V6,1,2,1,0
L301,1111100-1,301_2_180509,”Ořech”,0,174_17_180509,L301V1,1,2,1,0

  • Speciálním případem použití block_id jsou výjezdové a zátahové spoje tramvají z/do vozovny, které přepravují cestující. Pokud vozovna není přímo na trase linky, je spoj roztržen v poslední/první zastávce na pravidelné trase linky na dva samostatné tripy propojené přes block_id. Příklad níže ukazuje zátah linky 5 ze Sídliště Barrandov do Vozovny Motol (poslední zastávka na trase je Anděl). Výjezdové a zátahové spoje tramvají jsou již v současnosti vedeny jako jeden trip. Pro odlišení pravidelné a výjezdové/zátahové části trasy slouží sloupeček trip_operation_type ve stop_times.txt.
  • trip_operation_type je nově přesunut do stop_times.txt, neboť může v průběhu spoje nabývat různých hodnot. V trips.txt byl tento sloupeček zrušen.
  • exceptional říká, že jde o neregulérní spoj nebo linku. V současnosti je exceptional = 1 pro výjezdové a zátahové spoje tramvají a pro rekreační linky vlaků, jinak 0.
  • sub_agency_id udává ID dopravce ze souboru route_sub_agencies.txt (sub_agency_id). U linek, které jezdí více dopravců slouží k rozlišení, který dopravce zajišťuje konkrétní spoj.

calendar.txt

  • service_id obsahuje řetězec sedmi nul a jedniček, které pro každý den v týdnu udávají, kdy spoj jede pro vyšší lidskou čitelnost
  • Platnost je vždy minimálně 14 dní ode dne vygenerování, vlaky se generují na celý grafikon.

transfers.txt

  • Soubor obsahuje garantované přestupy mezi spoji. Garantovaný přestup je takový, kde je navazující spoj povinen vyčkat příjezdu návazného spoje. Typicky je to omezeno limitem, do kdy musí návazný spoj přijet, aby se nevyčkávalo příliš dlouho. Tento limit je uveden ve sloupci max_waiting_time.

route_sub_agencies.txt

  • Soubor obsahuje informace o tom, který dopravce (firma) provozuje kterou linku.
  • Sloupečky:
    • route_id je ID linky z routes.txt
    • route_licence_number je číslo linky v celostátním informačním systému (CIS) ČR [nepovinný sloupec]
    • sub_agency_id je interní ID dopravce
    • sub_agency_name je jméno dopravce provozujícího danou linku
  • Pokud se na provozu jedné linky podílí více dopravců, obsahuje soubor více záznamů se shodným route_id

route_stops.txt

  • Soubor obsahuje typickou trasou pro danou linku a směr
  • Prozatím silně experimentální

23. 11. 2023
  • Přidán sloupeček zone_region_type do stops.txt
20. 3. 2023
  • Přidán soupeček max_waiting_time do transfers.txt
14. 10. 2022
  • Přidán sloupeček sub_agency_id do trips.txt
31. 8. 2021
  • Přidány sloupečky asw_node_id a asw_stop_id do stops.txt
25. 6. 2021
  • Přidán sloupeček bikes_allowed do stop_times.txt
  • Zrušen sloupeček trip_operation_type v trips.txt
13. 5. 2021
  • Přesun sloupečku trip_operation_type z trips.txt do stop_times.txt
20. 4. 2021
  • Přidán soubor route_stops.txt (prozatím neobsahuje relevantní údaje)
4. 3. 2021
  • Přidání informací o typu linky do routes.txt: is_regional a is_substitute_transport
15. 12. 2019
  • Úprava načítání vlaků
    • Nově je v GTFS celý grafikon (do následujícího prosince).
    • Vlakové stanice a zastávky jsou prozatím reprezentovány vždy jednou zastávkou ve stops.txt.
    • Ve stops.txt se nachází i pomocné body, které nejsou zastávkami a stanicemi, ve stop_times.txt se u vlaků vyskytují též záznamy, kdy vlak ve stanici nestaví (pro korekci trasy a času – odlišeno pomocí pickup_type a drop_off_type).
    • trip_short_name u vlakových spojů odpovídá veřejnému označení vlaku (např. “R 670”).
    • headsign u vlakových spojů odpovídá skutečné stanici, kam vlak jede (i mimo PID).
29. 10. 2019
  • Přidány soubory pathways.txt a levels.txt, které popisují strukturu vybraných stanic metra (stanice jsou postupně doplňovány)
  • Ve stops.txt se mohou vyskytovat též záznamy typu Intermediate node a Boarding area
24. 6. 2019
  • Do stops.txt přidán sloupeček level_id (prozatím bez využití, do budoucna pro zapojení rozšíření Pathways & Levels)
6. 1. 2019
  • Do stops.txt přidány vstupy do metra
29. 11. 2018
  • Přidán soubor route_sub_agencies.txt, který obsahuje původní informace o dopravcích v systému
20. 11. 2018
  • Sloučeni dopravci do společného záznamu “PID”. Díky tomu mohly být též sloučeny linky provozované více dopravci do jednoho záznamu. Zároveň byl zrušen sloupeček original_route_id, který obsahoval licenční číslo linky (nyní by bylo nejednoznačné)
  • Do routes.txt přidán sloupeček is_night, podle kterého je možné rozpoznat noční linku
  • Do trips.txt přidán sloupeček trip_operation_type (viz dokumentace výše)
  • Noční spoje vztažené k předchozímu provoznímu dni mají časy odjezdu až do 30:00, nemají vlastní kalendář jako dříve.
11. 5. 2018
  • Upraven formát trip_id, aby byl stabilní mezi feedy (stejný spoj by nově měl mít další den stejné ID). Nově se trip_id skládá ze tří částí – číslo linky, číslo spoje (přidělované postupně) a datum prvního výskytu
  • Upraven formát stop_id – pokud se zastávka v průběhu platnosti feedu mění (např. přejmenovává, nebo mění pásmo), je přidán záznam, jehož ID obsahuje navíc datum začátku platnosti tohoto nového záznamu
  • block_id se nevyplňuje, pokud ze spoje/na spoj není žádný přejezd a spoj by tak byl v bloku jediný
  • Upraveny barvy linek dle grafického manuálu PID

 

Seznam zastávek PID

Soubory se seznamem zastávek poskytují podrobnější informace o zastávkových sloupcích, které se nevejdou do feedu GTFS, který navíc neumožňuje strukturování dat. K dispozici je ve formátech XML a JSON, které jsou obsahem odpovídající. K XML formátu existuje XML schema, které formát popisuje. Níže jsou stručně popsány jednotlivé entity.

Skupiny <group>
Skupina definuje všechny zastávky ve stejném uzlu, které mají stejný název. Unikátním identifikátorem skupiny je trojice (name, districtCode, isTrain), nebo dvojice (idosName, isTrain), nebo název uniqueName.

  • name je společný název zastávek ve skupině. Pozor, může existovat více skupin se stejným názvem, viz příklad níže.
  • districtCode je “SPZ” kód okresu, ve kterém zastávka leží.
  • isTrain je true, pokud jde o vlakovou stanici. Výchozí hodnota je false.
  • idosName je název používaný v aplikacích (IDOS aj.)
  • fullName je plný název zastávek s rozepsanými zkratkami (“rozc.” -> “rozcestí” apod.)
  • uniqueName je název zastávek, který je unikátní v rámci celého souboru. Vychází z idosName, kde v případě kolize vlakové a nevlakové stanice přidá k názvu vlakové text “(vlak)”.
  • node je číslo uzlu, do kterého zastávky patří. Pozor, toto číslo není unikátním identifikátorem názvu zastávky, protože jeden uzel může obsahovat více zastávek různého názvu. Příkladem je uzel 237, který sdružuje zastávky Karlovo náměstí, Palackého náměstí, Moráň a Novoměstská radnice. Všechny tyto skupiny zastávek mají stejné číslo uzlu.
  • avgLat, avgLon, jtskX, jtskY je GPS/JTSK pozice agregovaná ze všech sloupků.
  • municipality je název města/obce, na jejímž území zastávka leží.

Příklad 1: Skupiny zastávek s názvem “Chrášťany” různého typu v různých okresech (pouze vybrané atributy)

<group name=”Chrášťany” districtCode=”RA” isTrain=”true” idosName=”Chrášťany” uniqueName=”Chrášťany” node=”9520″ avgLat=”50.1428″ avgLon=”13.6631536″ municipality=”Chrášťany”>

<group name=”Chrášťany” districtCode=”BN” idosName=”Chrášťany (BN)” uniqueName=”Chrášťany (BN)” node=”4471″ avgLat=”49.7927″ avgLon=”14.5866871″ municipality=”Chrášťany”>

<group name=”Chrášťany” districtCode=”KO” idosName=”Chrášťany (KO)” uniqueName=”Chrášťany (KO)” node=”2410″ avgLat=”50.06581″ avgLon=”14.9295769″ municipality=”Chrášťany”>

<group name=”Chrášťany” districtCode=”PZ” idosName=”Chrášťany (PZ)” uniqueName=”Chrášťany (PZ)” node=”1190″ avgLat=”50.0447922″ avgLon=”14.2591076″ municipality=”Chrášťany”>

Příklad 2: Skupiny zastávek v uzlu 237 (pouze vybrané atributy)

<group name=”Karlovo náměstí” node=”237″ avgLat=”50.07532″ avgLon=”14.4185734″>

<group name=”Moráň” node=”237″ avgLat=”50.0740242″ avgLon=”14.41873″>

<group name=”Novoměstská radnice” node=”237″ avgLat=”50.0774574″ avgLon=”14.4195213″>

<group name=”Palackého náměstí” node=”237″ avgLat=”50.07274″ avgLon=”14.4144449″>

Zastávky (sloupky) <stop>
Každá skupina zastávek stejného názvu obsahuje zastávkové sloupky.

  • id je interní identifikátor zastávky číslo uzlu / číslo sloupku. Tento identifikátor je unikátní v rámci celého souboru a neměnný mezi aktualizacemi souboru. Číslo uzlu odpovídá hodnotě node skupiny zastávek.
  • platform je kód stanoviště používaný k označení sloupku v rámci skupiny zastávek například na odjezdových tabulích
  • altIdosName je název, který může obsahovat upřesnění, jehož účelem je bližší identifikace konkrétního sloupku, viz příklad níže

<group name=”Anděl” districtCode=”AB” idosCategory=”301003″ idosName=”Anděl” uniqueName=”Anděl” node=”1040″>
<stop id=”1040/1″ platform=”A” altIdosName=”Anděl (ul. Plzeňská)” lat=”50.07193″ lon=”14.40363″ />
<stop id=”1040/2″ platform=”B” altIdosName=”Anděl (ul. Plzeňská)” lat=”50.0719528″ lon=”14.4028063″ />
<stop id=”1040/3″ platform=”C” altIdosName=”Anděl (ul. Nádražní)” lat=”50.071804″ lon=”14.4042273″ />
<stop id=”1040/4″ platform=”D” altIdosName=”Anděl (ul. Nádražní)” lat=”50.0709763″ lon=”14.40455″ />
<stop id=”1040/11″ platform=”K” altIdosName=”Anděl” lat=”50.0717354″ lon=”14.4019508″ />
<stop id=”1040/12″ platform=”L” altIdosName=”Anděl (ul. Stroupežnického)” lat=”50.0715″ lon=”14.4029284″ />
<stop id=”1040/14″ platform=”N” altIdosName=”Anděl (ul. Stroupežnického)” lat=”50.0715179″ lon=”14.4026489″ />
<stop id=”1040/101″ platform=”M1″ altIdosName=”Anděl” lat=”50.06953″ lon=”14.4035711″ />
<stop id=”1040/102″ platform=”M2″ altIdosName=”Anděl” lat=”50.070488″ lon=”14.4048777″ />
</group>

Projíždějící linky <line>
Každá zastávka obsahuje seznam linek, které v ní zastavují

  • id je číselný identifikátor linky.
  • name je označení linky používané ve vztahu k cestujícím
  • type je typ dopravního prostředku (možné hodnoty viz XSD)
  • isNight je true, pokud jde o noční linku
  • direction je nejčastější konečná pro spoje odjíždějící z dané zastávky
  • direction2 je alternativní konečná, pokud jsou spoje pásmované (nemusí být vyplněno)

 

Prodejní místa PID

Soubory se seznamem prodejních míst obsahují detailní popis všech evidovaných míst, kde se pořizuje jízdné PID, což zahrnuje

  • Automaty na jízdenky
  • Předprodejní místa v metru
  • Infocentra
  • Pokladny v železničních stanicích
  • Kanceláře dopravců

Soubor je k dispozici ve formátu XML a JSON. K XML formátu existuje XML schema, které formát popisuje. Pro zobrazení dat uživatelům se hodí využít číselníky s texty.

Prodejní místa <point>

  • id jednoznačný identifikátor prodejního místa. Zůstává stejný i mezi aktualizacemi souboru, lze ho tedy využít například pro rozdílové aktualizace.
  • services je bitové pole příznaků jednotlivých služeb, které místo poskytuje. Jednotlivé služby jsou uvedeny v číselníku.
  • payMethods je bitové pole příznaků způsobů placení. Konkrétní hodnoty jsou uvedeny v číselníku.