Így javaslom beépíteni a menetrend-érvényességi időszakot a lekérdezésekbe:
Ezután a lekérdezés kér egy dátumot, amit ÉÉÉÉHHNN formátumban kell beírni (pl. 20120131), és így csak az arra a napra érvényes menetrendet kapjuk eredményként (pontosabban arra az időszakra érvényeset, amelyikbe az adott nap esik).
Letölthető a frissített adatbázis, pl. a körúti villamosok menetrendje frissült. Érdemes mindegyik táblát újra importálni, de legalább a Stop_times, a Trips és a Calendar táblákat, valamint a házilag készített block_id -> forgalmi szám táblát is újra kell generálni.
Eddig nem vettem észre, de mostmár mindenképpen érdemes szűkíteni a Calendar tábla start_date vagy end_date mezője alapján is, attól függően, hogy konkrétan melyik napi menetrendre vagyunk kíváncsiak. Ez bonyolítja a lekérdezéseket. :-(
Kíváncsiságból megnéztem az adatbázisban két elverődésre hajlamos buszjárat hétköznapi menetidejét, hogy mennyire ingadozik napközben, illetve hogyan viszonyul a BKV honlapján közzétett menetidőhöz.
15-ös busz: 20 és 32 perc között ingadozik, a honlapon meghirdetett menetidő 22-23 perc
86-os busz: 28 és 43 perc között ingadozik, a honlapon meghirdetett menetidő 32-33 perc
A GTFS szerint ("a városi közlekedés sajátosságaiból adódóan") tehát másfélszeresnél is nagyobb különbségek is lehetnek a menetidőben. Annak nem néztem utána, bár érdekelne, hogy a megállókban és a honlapon az adott megállóra meghirdetett indulási idők figyelembe veszik-e a napszakok közötti menetidő-eltéréseket.
Igen, azért kell betenni a kiindulási végállomást is. Ha pl. a 47-esre csinálok lekérdezést shape_dist_traveled = 0 feltétellel, akkor a két végállomáson kívül a Móriczról indulások is kijönnek oda-vissza, de egy stop_name = "Deák Ferenc tér M" kiegészítéssel megoldódott a probléma.
Hm, érdekes, hogy még a bevárásos éjszakai hálózatnál sem úgy van, ahogy logikus lenne...
A részmenetek meg.. agyrém.
A stop_sequence viszontagságaira viszont van megoldás: shape_dist_traveled. Ahol ez 0, az biztos, hogy induló végállomás (vagy újabb részmenet kezdete).
A 2,56 millió rekordból összesen 382 esetben tér el az érkezési és az indulási idő, csak a fogasnál, a H5 és H6 néhány indulásánál és elvétve néhány metrós indulásnál. Ezeket leszámítva mindkét mező az indulási időt mutatja, kivéve a járatok utolsó megállóját (a végállomást), mert ott mindkét mezőben az érkezési idő van.
Az alábbi listából pl. az látszik, hogy a 42-es a Tulipán utcánál 6 percet, a Határ útnál 5 percet várakozik ebben az időszakban:
Arra figyeljünk, hogy végállomási indulási idők lekérdezésekor mindig tegyük be pl. a trip_headsign vagy a stop_sequence mezőt is, mert különben nem lehet megkülönböztetni az érkezési és indulási időt. Ráadásul a trip_headsign nem mindig azonos a végállomás nevével (tehát nem mindig lehet egy sima "nem egyenlő" feltétellel operálni), valamint a stop_sequence néhány járatnál 10 helyett 1-essel kezdődik (pl. 79-es troli a Keletitől).
A dep. time és az arr. time az adott megállóra érvényes. Ebből látszik például, ha arra szűrsz rá, hogy ezek mikor nem egyenlőek, hogy hol van időkiegyenlítés (nem mind látszik), illetve az éjszakai hálózaton csatlakozás-várás.
JBK-t nem lehet előcsalni belőle, tehát nem látszik, hogy melyik kocsin honnan/hova szerel át.
Hopp, találtam valamit! Most látom, hogy az eredeti lekérdezésben a stop_id mezőt szűkítetted Alacskai úti lakótelepre, a stop_name mező helyett.
Ha így sem megy, akkor próbáld táblánként egyesével fölépíteni a lekérdezést, és mindegyik újabb tábla csatlakoztatása után nézd meg, hogy hoz-e eredményt.
Pedig a nyilazás látszólag jó. Akkor próbáld azt, hogy egyesével törlöd a táblákat, először a nyilak végén lévőket, és mindegyik törlés után próbáld futtatni a lekérdezést. Legkésőbb akkor már kell mutatnia valamit (departure_time), amikor már csak a stop_times marad egyedül a lekérdezésben.