HSLdevcom / digitransit-ui

Digitransit UI ("Reittiopas.fi")
https://www.reittiopas.fi/
Other
240 stars 132 forks source link

[regression] Time(zone?) problems in digitransit-ui #908

Open kalon33 opened 7 years ago

kalon33 commented 7 years ago

Since approximatively two weeks, I have timing problems in digitransit-ui using master. Indeed, Before when I choosed to leave (or arrive) at 12:00 I had solutions arriving at that time. Now, they are proposed as if I choosed "14:00" as the time, and indeed, if I set time as "10:00", I get solutions for 12:00.

I used to comment timezone arguments in config file and that used to work, but it doesn't seem to work anymore.

Could you fix this?

kalon33 commented 7 years ago

Still occurs with latest master to date.

kalon33 commented 7 years ago

@hannesj @samuliheljo do you have an idea on this problem? I now get only one hour drift, since DST is off.

hannesj commented 7 years ago

@kalon33 Do you have the timezoneData in the format specified in https://github.com/HSLdevcom/digitransit-ui/blob/master/app/config.default.js#L60-L62

The format definition is the moment-tz packed format (http://momentjs.com/timezone/docs/#/data-utilities/)

kalon33 commented 7 years ago

@hannesj I just did it using data from https://github.com/moment/moment-timezone/blob/develop/data/packed/latest.json#L322 (previously I commented out timezoneData), but unfortunately that didn't change anything.

kalon33 commented 7 years ago

@hannesj any other idea on this? I still have this problem, and don't know why. "Near you" departures are working OK, without that drift.

kalon33 commented 7 years ago

I did a full diff between my branch and upstream, and I see nothing special.

kalon33 commented 7 years ago

@samuliheljo As you saw both my OTP and Digitransit configs, do you have an idea on this?

samuliheljo commented 7 years ago

Sorry, not at the moment. Unfortunately, I don't currently have that much time allocated for digitransit development and my time is mostly spent in other matters.

kalon33 commented 7 years ago

@samuliheljo I understand. Thanks anyway.

I put my diffs with upstream here, if of any use:

https://github.com/HSLdevcom/OpenTripPlanner/compare/master...kalon33:1.x.x_hsl_enhanced_paris

https://github.com/HSLdevcom/digitransit-ui/compare/master...kalon33:digitransit-ui-paris

@hannesj is that useful to find this problem origin?

tuukka commented 7 years ago

@kalon33 You can check the HTTP requests and responses to see where it goes wrong. Sounds like somewhere a time is given as local time but interpreted as UTC or vice versa.

kalon33 commented 7 years ago

@tuukka what I don't understand is that this thing happened all of a sudden and I have another instance with nearly identical OTP and digitransit-ui confs and that it works properly. Is there a particular place where this thing would be set?

Using firefox console, here is what I got, requesting a trip at 11:25 today using this query:

{"query":"query Routes($preferred_0:InputPreferred!) {viewer {...F7}} fragment F0 on BikeRentalStation {lat,lon,stationId,id} fragment F1 on Leg {mode,rentedBike,legGeometry {points},transitLeg,route {shortName,agency {name,id},id},from {lat,lon,name,vertexType,bikeRentalStation {id,...F0},stop {gtfsId,code,platformCode,id}},to {lat,lon,name,vertexType,bikeRentalStation {id,...F0},stop {gtfsId,code,platformCode,id}},intermediateStops {gtfsId,lat,lon,name,code,platformCode,id}} fragment F2 on Leg {agency {name,url,fareUrl,id}} fragment F3 on Itinerary {walkDistance,duration,startTime,endTime,fares {type,currency,cents},legs {mode,from {lat,lon,name,vertexType,bikeRentalStation {id,...F0},stop {gtfsId,code,platformCode,id}},to {lat,lon,name,vertexType,bikeRentalStation {id,...F0},stop {gtfsId,code,platformCode,id}},legGeometry {length,points},intermediateStops {gtfsId,lat,lon,name,code,platformCode,id},realTime,transitLeg,rentedBike,startTime,endTime,mode,distance,duration,route {shortName,gtfsId,id},trip {gtfsId,tripHeadsign,pattern {code,id},id},...F2}} fragment F4 on Itinerary {walkDistance,startTime,endTime,legs {realTime,transitLeg,startTime,endTime,mode,distance,duration,rentedBike,route {mode,shortName,agency {name,id},id},from {name}}} fragment F5 on Itinerary {endTime,startTime,...F4} fragment F6 on Plan {date} fragment F7 on QueryType {_plan2tX3Eg:plan(fromPlace:\"3 Rue Blaise Pascal, Chilly-Mazarin::48.705208299999995,2.2985851\",toPlace:\"Institut Curie, Paris, France::48.842645,2.34352\",numItineraries:5,date:\"2017-02-12\",time:\"11:25:39\",walkReluctance:2,walkBoardCost:600,minTransferTime:180,walkSpeed:1.2,maxWalkDistance:10000,wheelchair:false,disableRemainingWeightHeuristic:false,arriveBy:false,preferred:$preferred_0) {itineraries {legs {transitLeg,legGeometry {points},...F1},...F3,...F5},...F6}}","variables":{"preferred_0":{"agencies":""}}}

I get this reply:

{"data":{"viewer":{"_plan2tX3Eg":{"itineraries":[{"legs":[{"transitLeg":false,"legGeometry":{"points":"sughH__MXFBHjCZF??x@@pBBnCCJH?FBDFBJLL@MDBLFP@n@Fp@DlBN\Ch@@ZHXL","length":25},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.705208299999995,"lon":2.2985851,"name":"3 Rue Blaise Pascal, Chilly-Mazarin","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"to":{"lat":48.702076,"lon":2.296614,"name":"Chemin Blanc","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:9952","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo5OTUy"}},"intermediateStops":[],"realTime":false,"startTime":1486898890000,"endTime":1486899299000,"distance":465.62399999999997,"duration":409.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"}bghHypMyk@aEgh@cFmoS{gD","length":4},"mode":"BUS","rentedBike":false,"route":{"shortName":"DM151","agency":{"name":"TRANSPORTS DANIEL MEYER","id":"QWdlbmN5OjQwNw=="},"id":"Um91dGU6MzowNTUxNTUwMDE6RE0xNTE=","gtfsId":"3:055155001:DM151","mode":"BUS"},"from":{"lat":48.702076,"lon":2.296614,"name":"Chemin Blanc","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:9952","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo5OTUy"}},"to":{"lat":48.82087,"lon":2.325745,"name":"Porte d'Orléans","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:413","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo0MTM="}},"intermediateStops":[{"gtfsId":"3:StopPoint:46:8880","lat":48.70924,"lon":2.297587,"name":"Le Petit Chilly","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo4ODgw"},{"gtfsId":"3:StopPoint:46:8882","lat":48.715847,"lon":2.298723,"name":"Les Champarts","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo4ODgy"}],"realTime":false,"startTime":1486899300000,"endTime":1486900320000,"distance":13383.951592857922,"duration":1020.0,"trip":{"gtfsId":"3:81263834-1326573","tripHeadsign":"Paris - Porte d'Orléans","pattern":{"code":"3:055155001:DM151:1:03","id":"UGF0dGVybjozOjA1NTE1NTAwMTpETTE1MToxOjAz"},"id":"VHJpcDozOjgxMjYzODM0LTEzMjY1NzM="},"agency":{"name":"TRANSPORTS DANIEL MEYER","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQwNw=="}},{"transitLeg":false,"legGeometry":{"points":"ki~hHyfeMe@B?DO@K@i@F??W@AFOZ@DQ@BJBLALCLEHEDG@G?GCEGOXEJQCoBY","length":26},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.82087,"lon":2.325745,"name":"Porte d'Orléans","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:413","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo0MTM="}},"to":{"lat":48.82282,"lon":2.325091,"name":"Porte d'Orléans (Général Leclerc)","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59624","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYyNA=="}},"intermediateStops":[],"realTime":false,"startTime":1486900320000,"endTime":1486900539000,"distance":259.829,"duration":219.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"su~hHybeMw_@}IyXkU","length":3},"mode":"SUBWAY","rentedBike":false,"route":{"shortName":"4","agency":{"name":"METRO","id":"QWdlbmN5OjQzOQ=="},"id":"Um91dGU6MzoxMDAxMTAwMDQ6NA==","gtfsId":"3:100110004:4","mode":"SUBWAY"},"from":{"lat":48.82282,"lon":2.325091,"name":"Porte d'Orléans (Général Leclerc)","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59624","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYyNA=="}},"to":{"lat":48.832194,"lon":2.330425,"name":"Mouton-Duvernet","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59260","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTI2MA=="}},"intermediateStops":[{"gtfsId":"3:StopPoint:59631","lat":48.828069,"lon":2.326846,"name":"Alésia","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYzMQ=="}],"realTime":false,"startTime":1486900860000,"endTime":1486900980000,"distance":1125.8597226853258,"duration":120.0,"trip":{"gtfsId":"3:79549898-186566","tripHeadsign":"Porte de Clignancourt","pattern":{"code":"3:100110004:4:1:03","id":"UGF0dGVybjozOjEwMDExMDAwNDo0OjE6MDM="},"id":"VHJpcDozOjc5NTQ5ODk4LTE4NjU2Ng=="},"agency":{"name":"METRO","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQzOQ=="}},{"transitLeg":false,"legGeometry":{"points":"up`iHodfM??Ja@IIIE","length":5},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.832194,"lon":2.330425,"name":"Mouton-Duvernet","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59260","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTI2MA=="}},"to":{"lat":48.832257,"lon":2.330902,"name":"DENFERT-ROCHEREAU - DAGUERRE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764637","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM3"}},"intermediateStops":[],"realTime":false,"startTime":1486900980000,"endTime":1486901005000,"distance":27.259999999999998,"duration":25.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"qpiHcgfM}NmLcN}MuKkG{OaG_ImD","length":6},"mode":"BUS","rentedBike":false,"route":{"shortName":"38","agency":{"name":"RATP","id":"QWdlbmN5OjQ0Mg=="},"id":"Um91dGU6MzoxMDAxMDAwMzg6Mzg=","gtfsId":"3:100100038:38","mode":"BUS"},"from":{"lat":48.832257,"lon":2.330902,"name":"DENFERT-ROCHEREAU - DAGUERRE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764637","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM3"}},"to":{"lat":48.843555,"lon":2.338948,"name":"AUGUSTE COMTE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764640","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjQw"}},"intermediateStops":[{"gtfsId":"3:StopPoint:59:3764628","lat":48.834801,"lon":2.333053,"name":"DENFERT-ROCHEREAU - ARAGO","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjI4"},{"gtfsId":"3:StopPoint:59:3764626","lat":48.837228,"lon":2.335449,"name":"HOPITAL SAINT-VINCENT DE PAUL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjI2"},{"gtfsId":"3:StopPoint:59:3764638","lat":48.839259,"lon":2.336783,"name":"OBSERVATOIRE - PORT ROYAL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM4"},{"gtfsId":"3:StopPoint:59:3764639","lat":48.841955,"lon":2.338076,"name":"VAL DE GRACE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM5"}],"realTime":false,"startTime":1486901400000,"endTime":1486901640000,"distance":1394.994210656525,"duration":240.0,"trip":{"gtfsId":"3:81477652-1392421","tripHeadsign":"Gare du Nord","pattern":{"code":"3:100100038:38:1:02","id":"UGF0dGVybjozOjEwMDEwMDAzODozODoxOjAy"},"id":"VHJpcDozOjgxNDc3NjUyLTEzOTI0MjE="},"agency":{"name":"RATP","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQ0Mg=="}},{"transitLeg":false,"legGeometry":{"points":"mwbiHgxgMGE_A_@F_@DYn@eGx@iEx@yEBs@HsB","length":10},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.843555,"lon":2.338948,"name":"AUGUSTE COMTE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764640","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjQw"}},"to":{"lat":48.842645,"lon":2.34352,"name":"Institut Curie, Paris, France","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"intermediateStops":[],"realTime":false,"startTime":1486901641000,"endTime":1486902014000,"distance":431.40200000000004,"duration":373.0,"trip":null,"agency":null}],"walkDistance":1184.3516666572623,"duration":3124,"startTime":1486898890000,"endTime":1486902014000,"fares":null},{"legs":[{"transitLeg":false,"legGeometry":{"points":"sughH__MXFBHjCZF??x@@pBBnCCJH?FBDFBJLL@MDBLFP@n@Fp@DlBN\\Ch@@ZHXL","length":25},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.705208299999995,"lon":2.2985851,"name":"3 Rue Blaise Pascal, Chilly-Mazarin","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"to":{"lat":48.702076,"lon":2.296614,"name":"Chemin Blanc","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:9952","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo5OTUy"}},"intermediateStops":[],"realTime":false,"startTime":1486898830000,"endTime":1486899239000,"distance":465.62399999999997,"duration":409.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"}bghHyp_Myk@aEgh@cFmoS{gD","length":4},"mode":"BUS","rentedBike":false,"route":{"shortName":"DM151","agency":{"name":"TRANSPORTS DANIEL MEYER","id":"QWdlbmN5OjQwNw=="},"id":"Um91dGU6MzowNTUxNTUwMDE6RE0xNTE=","gtfsId":"3:055155001:DM151","mode":"BUS"},"from":{"lat":48.702076,"lon":2.296614,"name":"Chemin Blanc","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:9952","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo5OTUy"}},"to":{"lat":48.82087,"lon":2.325745,"name":"Porte d'Orléans","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:413","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo0MTM="}},"intermediateStops":[{"gtfsId":"3:StopPoint:46:8880","lat":48.70924,"lon":2.297587,"name":"Le Petit Chilly","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo4ODgw"},{"gtfsId":"3:StopPoint:46:8882","lat":48.715847,"lon":2.298723,"name":"Les Champarts","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo4ODgy"}],"realTime":false,"startTime":1486899240000,"endTime":1486900260000,"distance":13383.951592857922,"duration":1020.0,"trip":{"gtfsId":"3:81263832-1326571","tripHeadsign":"Paris - Porte d'Orléans","pattern":{"code":"3:055155001:DM151:1:03","id":"UGF0dGVybjozOjA1NTE1NTAwMTpETTE1MToxOjAz"},"id":"VHJpcDozOjgxMjYzODMyLTEzMjY1NzE="},"agency":{"name":"TRANSPORTS DANIEL MEYER","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQwNw=="}},{"transitLeg":false,"legGeometry":{"points":"ki~hHyfeMe@B?DO@K@i@F??W@AFOZ_@DQ@BJBLALCLEHEDG@G?GCEGOXEJQCoBY","length":26},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.82087,"lon":2.325745,"name":"Porte d'Orléans","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:413","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo0MTM="}},"to":{"lat":48.82282,"lon":2.325091,"name":"Porte d'Orléans (Général Leclerc)","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59624","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYyNA=="}},"intermediateStops":[],"realTime":false,"startTime":1486900260000,"endTime":1486900479000,"distance":259.829,"duration":219.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"su~hHybeMw_@}IyXkU","length":3},"mode":"SUBWAY","rentedBike":false,"route":{"shortName":"4","agency":{"name":"METRO","id":"QWdlbmN5OjQzOQ=="},"id":"Um91dGU6MzoxMDAxMTAwMDQ6NA==","gtfsId":"3:100110004:4","mode":"SUBWAY"},"from":{"lat":48.82282,"lon":2.325091,"name":"Porte d'Orléans (Général Leclerc)","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59624","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYyNA=="}},"to":{"lat":48.832194,"lon":2.330425,"name":"Mouton-Duvernet","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59260","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTI2MA=="}},"intermediateStops":[{"gtfsId":"3:StopPoint:59631","lat":48.828069,"lon":2.326846,"name":"Alésia","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYzMQ=="}],"realTime":false,"startTime":1486900920000,"endTime":1486901100000,"distance":1125.8597226853258,"duration":180.0,"trip":{"gtfsId":"3:79549876-186544","tripHeadsign":"Porte de Clignancourt","pattern":{"code":"3:100110004:4:1:03","id":"UGF0dGVybjozOjEwMDExMDAwNDo0OjE6MDM="},"id":"VHJpcDozOjc5NTQ5ODc2LTE4NjU0NA=="},"agency":{"name":"METRO","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQzOQ=="}},{"transitLeg":false,"legGeometry":{"points":"upiHodfM??Ja@IIIE","length":5},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.832194,"lon":2.330425,"name":"Mouton-Duvernet","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59260","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTI2MA=="}},"to":{"lat":48.832257,"lon":2.330902,"name":"DENFERT-ROCHEREAU - DAGUERRE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764637","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM3"}},"intermediateStops":[],"realTime":false,"startTime":1486901100000,"endTime":1486901125000,"distance":27.259999999999998,"duration":25.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"qpiHcgfM}NmLcN}MuKkG{OaG_ImD","length":6},"mode":"BUS","rentedBike":false,"route":{"shortName":"38","agency":{"name":"RATP","id":"QWdlbmN5OjQ0Mg=="},"id":"Um91dGU6MzoxMDAxMDAwMzg6Mzg=","gtfsId":"3:100100038:38","mode":"BUS"},"from":{"lat":48.832257,"lon":2.330902,"name":"DENFERT-ROCHEREAU - DAGUERRE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764637","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM3"}},"to":{"lat":48.843555,"lon":2.338948,"name":"AUGUSTE COMTE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764640","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjQw"}},"intermediateStops":[{"gtfsId":"3:StopPoint:59:3764628","lat":48.834801,"lon":2.333053,"name":"DENFERT-ROCHEREAU - ARAGO","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjI4"},{"gtfsId":"3:StopPoint:59:3764626","lat":48.837228,"lon":2.335449,"name":"HOPITAL SAINT-VINCENT DE PAUL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjI2"},{"gtfsId":"3:StopPoint:59:3764638","lat":48.839259,"lon":2.336783,"name":"OBSERVATOIRE - PORT ROYAL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM4"},{"gtfsId":"3:StopPoint:59:3764639","lat":48.841955,"lon":2.338076,"name":"VAL DE GRACE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM5"}],"realTime":false,"startTime":1486901460000,"endTime":1486901760000,"distance":1394.994210656525,"duration":300.0,"trip":{"gtfsId":"3:81478032-1392774","tripHeadsign":"Gare du Nord","pattern":{"code":"3:100100038:38:1:01","id":"UGF0dGVybjozOjEwMDEwMDAzODozODoxOjAx"},"id":"VHJpcDozOjgxNDc4MDMyLTEzOTI3NzQ="},"agency":{"name":"RATP","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQ0Mg=="}},{"transitLeg":false,"legGeometry":{"points":"mwbiHgxgMGE_A_@F_@DYn@eGx@iEx@yEBs@HsB","length":10},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.843555,"lon":2.338948,"name":"AUGUSTE COMTE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764640","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjQw"}},"to":{"lat":48.842645,"lon":2.34352,"name":"Institut Curie, Paris, France","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"intermediateStops":[],"realTime":false,"startTime":1486901761000,"endTime":1486902134000,"distance":431.40200000000004,"duration":373.0,"trip":null,"agency":null}],"walkDistance":1184.3516666572623,"duration":3304,"startTime":1486898830000,"endTime":1486902134000,"fares":null},{"legs":[{"transitLeg":false,"legGeometry":{"points":"sughHMXFBHjCZF??x@@pBBnCCJH?FBDFBJLL@MDBLFP@n@Fp@DlBN\\Ch@@ZHXLHD","length":26},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.705208299999995,"lon":2.2985851,"name":"3 Rue Blaise Pascal, Chilly-Mazarin","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"to":{"lat":48.702031,"lon":2.296546,"name":"Gare de Longjumeau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:50790","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MDc5MA=="}},"intermediateStops":[],"realTime":false,"startTime":1486899664000,"endTime":1486900079000,"distance":471.90799999999996,"duration":415.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"ubghHkp_Mwh@qDcq@~Gek@{@}R~u@gBtOh@lVaMbGvK~b@vWl_@","length":10},"mode":"BUS","rentedBike":false,"route":{"shortName":"107","agency":{"name":"CEAT","id":"QWdlbmN5OjE4"},"id":"Um91dGU6MzowMTAwMTAwMDc6MTA3","gtfsId":"3:010010007:107","mode":"BUS"},"from":{"lat":48.702031,"lon":2.296546,"name":"Gare de Longjumeau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:50790","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MDc5MA=="}},"to":{"lat":48.723558,"lon":2.258912,"name":"Gare de Massy Palaiseau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:53660","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MzY2MA=="}},"intermediateStops":[{"gtfsId":"3:StopPoint:49:53200","lat":48.708719,"lon":2.297438,"name":"Petit Chilly","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MzIwMA=="},{"gtfsId":"3:StopPoint:49:63650","lat":48.716736,"lon":2.295992,"name":"Rue des Fleurs","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo2MzY1MA=="},{"gtfsId":"3:StopPoint:49:64390","lat":48.723806,"lon":2.286381,"name":"La Bonde","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo2NDM5MA=="},{"gtfsId":"3:StopPoint:49:50470","lat":48.726993,"lon":2.277588,"name":"Centre Cial de Massy","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MDQ3MA=="},{"gtfsId":"3:StopPoint:49:49990","lat":48.727513,"lon":2.274911,"name":"8 Mai 1945","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo0OTk5MA=="},{"gtfsId":"3:StopPoint:49:60460","lat":48.727304,"lon":2.271161,"name":"La Tuilerie","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo2MDQ2MA=="},{"gtfsId":"3:StopPoint:49:49980","lat":48.729551,"lon":2.269867,"name":"Mairie de Massy","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo0OTk4MA=="},{"gtfsId":"3:StopPoint:49:49970","lat":48.727516,"lon":2.264109,"name":"Chemin des Femmes","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo0OTk3MA=="}],"realTime":false,"startTime":1486900080000,"endTime":1486901100000,"distance":5245.608779200677,"duration":1020.0,"trip":{"gtfsId":"3:81254875-1324409","tripHeadsign":"Gare de Massy Palaiseau","pattern":{"code":"3:010010007:107:0:01","id":"UGF0dGVybjozOjAxMDAxMDAwNzoxMDc6MDowMQ=="},"id":"VHJpcDozOjgxMjU0ODc1LTEzMjQ0MDk="},"agency":{"name":"CEAT","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjE4"}},{"transitLeg":false,"legGeometry":{"points":"cikhHmexLCEGFABQKO^k@y@K`@A?QFY[EJ","length":12},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.723558,"lon":2.258912,"name":"Gare de Massy Palaiseau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:53660","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MzY2MA=="}},"to":{"lat":48.724309,"lon":2.258966,"name":"GARE DE MASSY PALAISEAU RER B","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775879:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc5OjgxMDpC"}},"intermediateStops":[],"realTime":false,"startTime":1486901100000,"endTime":1486901214000,"distance":133.958,"duration":114.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"{mkhHoexLo~DseGei@gSesBor@a~FudDoqAfe@{b@oYub@uP","length":8},"mode":"RAIL","rentedBike":false,"route":{"shortName":"B","agency":{"name":"RER","id":"QWdlbmN5Ojc0MQ=="},"id":"Um91dGU6Mzo4MTA6Qg==","gtfsId":"3:810:B","mode":"RAIL"},"from":{"lat":48.724309,"lon":2.258966,"name":"GARE DE MASSY PALAISEAU RER B","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775879:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc5OjgxMDpC"}},"to":{"lat":48.845743,"lon":2.339928,"name":"LUXEMBOURG","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775861:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYxOjgxMDpC"}},"intermediateStops":[{"gtfsId":"3:StopPoint:8775875:810:B","lat":48.754947,"lon":2.300987,"name":"GARE D'ANTONY","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc1OjgxMDpC"},{"gtfsId":"3:StopPoint:8775874:810:B","lat":48.761694,"lon":2.304227,"name":"GARE DE LA CROIX DE BERNY FRESNES","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc0OjgxMDpC"},{"gtfsId":"3:StopPoint:8775869:810:B","lat":48.780284,"lon":2.312464,"name":"GARE DE BOURG LA REINE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODY5OjgxMDpC"},{"gtfsId":"3:StopPoint:8775864:810:B","lat":48.82109,"lon":2.338978,"name":"CITE UNIVERSITAIRE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODY0OjgxMDpC"},{"gtfsId":"3:StopPoint:8775863:810:B","lat":48.834293,"lon":2.332852,"name":"DENFERT ROCHEREAU","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYzOjgxMDpC"},{"gtfsId":"3:StopPoint:8775862:810:B","lat":48.840034,"lon":2.337096,"name":"PORT ROYAL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYyOjgxMDpC"}],"realTime":false,"startTime":1486901700000,"endTime":1486902960000,"distance":15382.33700052743,"duration":1260.0,"trip":{"gtfsId":"3:81510968-1412560","tripHeadsign":"EPOL - Aéroport Charles-de-Gaulle 2 TGV","pattern":{"code":"3:810:B:0:68","id":"UGF0dGVybjozOjgxMDpCOjA6Njg="},"id":"VHJpcDozOjgxNTEwOTY4LTE0MTI1NjA="},"agency":{"name":"RER","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5Ojc0MQ=="}},{"transitLeg":false,"legGeometry":{"points":"ydciHu_hMdHdD\\NNHNFF_@DYn@eGx@iEx@yE`Bs@HsB","length":12},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.845743,"lon":2.339928,"name":"LUXEMBOURG","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775861:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYxOjgxMDpC"}},"to":{"lat":48.842645,"lon":2.34352,"name":"Institut Curie, Paris, France","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"intermediateStops":[],"realTime":false,"startTime":1486902961000,"endTime":1486903476000,"distance":600.229,"duration":515.0,"trip":null,"agency":null}],"walkDistance":1206.330833323962,"duration":3812,"startTime":1486899664000,"endTime":1486903476000,"fares":null},{"legs":[{"transitLeg":false,"legGeometry":{"points":"sughHMXFBHjCZF??x@@pBBnCCJH?FBDFBJLL@MDBLFP@n@Fp@DlBN\\Ch@@ZHXLHD","length":26},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.705208299999995,"lon":2.2985851,"name":"3 Rue Blaise Pascal, Chilly-Mazarin","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"to":{"lat":48.702031,"lon":2.296546,"name":"Gare de Longjumeau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:50790","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MDc5MA=="}},"intermediateStops":[],"realTime":false,"startTime":1486899664000,"endTime":1486900079000,"distance":471.90799999999996,"duration":415.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"ubghHkp_Mwh@qDcq@~Gek@{@}R~u@gBtOh@lVaMbGvK~b@vWl_@","length":10},"mode":"BUS","rentedBike":false,"route":{"shortName":"107","agency":{"name":"CEAT","id":"QWdlbmN5OjE4"},"id":"Um91dGU6MzowMTAwMTAwMDc6MTA3","gtfsId":"3:010010007:107","mode":"BUS"},"from":{"lat":48.702031,"lon":2.296546,"name":"Gare de Longjumeau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:50790","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MDc5MA=="}},"to":{"lat":48.723558,"lon":2.258912,"name":"Gare de Massy Palaiseau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:53660","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MzY2MA=="}},"intermediateStops":[{"gtfsId":"3:StopPoint:49:53200","lat":48.708719,"lon":2.297438,"name":"Petit Chilly","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MzIwMA=="},{"gtfsId":"3:StopPoint:49:63650","lat":48.716736,"lon":2.295992,"name":"Rue des Fleurs","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo2MzY1MA=="},{"gtfsId":"3:StopPoint:49:64390","lat":48.723806,"lon":2.286381,"name":"La Bonde","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo2NDM5MA=="},{"gtfsId":"3:StopPoint:49:50470","lat":48.726993,"lon":2.277588,"name":"Centre Cial de Massy","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MDQ3MA=="},{"gtfsId":"3:StopPoint:49:49990","lat":48.727513,"lon":2.274911,"name":"8 Mai 1945","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo0OTk5MA=="},{"gtfsId":"3:StopPoint:49:60460","lat":48.727304,"lon":2.271161,"name":"La Tuilerie","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo2MDQ2MA=="},{"gtfsId":"3:StopPoint:49:49980","lat":48.729551,"lon":2.269867,"name":"Mairie de Massy","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo0OTk4MA=="},{"gtfsId":"3:StopPoint:49:49970","lat":48.727516,"lon":2.264109,"name":"Chemin des Femmes","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo0OTk3MA=="}],"realTime":false,"startTime":1486900080000,"endTime":1486901100000,"distance":5245.608779200677,"duration":1020.0,"trip":{"gtfsId":"3:81254889-1324423","tripHeadsign":"Gare de Massy Palaiseau","pattern":{"code":"3:010010007:107:0:01","id":"UGF0dGVybjozOjAxMDAxMDAwNzoxMDc6MDowMQ=="},"id":"VHJpcDozOjgxMjU0ODg5LTEzMjQ0MjM="},"agency":{"name":"CEAT","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjE4"}},{"transitLeg":false,"legGeometry":{"points":"cikhHmexLCEGFABQKO^k@y@K`@A?QFY[EJ","length":12},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.723558,"lon":2.258912,"name":"Gare de Massy Palaiseau","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:49:53660","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0OTo1MzY2MA=="}},"to":{"lat":48.724309,"lon":2.258966,"name":"GARE DE MASSY PALAISEAU RER B","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775879:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc5OjgxMDpC"}},"intermediateStops":[],"realTime":false,"startTime":1486901100000,"endTime":1486901214000,"distance":133.958,"duration":114.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"{mkhHoexLo~DseGei@gSesBor@a~FudDoqAfe@{b@oYub@uP","length":8},"mode":"RAIL","rentedBike":false,"route":{"shortName":"B","agency":{"name":"RER","id":"QWdlbmN5Ojc0MQ=="},"id":"Um91dGU6Mzo4MTA6Qg==","gtfsId":"3:810:B","mode":"RAIL"},"from":{"lat":48.724309,"lon":2.258966,"name":"GARE DE MASSY PALAISEAU RER B","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775879:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc5OjgxMDpC"}},"to":{"lat":48.845743,"lon":2.339928,"name":"LUXEMBOURG","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775861:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYxOjgxMDpC"}},"intermediateStops":[{"gtfsId":"3:StopPoint:8775875:810:B","lat":48.754947,"lon":2.300987,"name":"GARE D'ANTONY","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc1OjgxMDpC"},{"gtfsId":"3:StopPoint:8775874:810:B","lat":48.761694,"lon":2.304227,"name":"GARE DE LA CROIX DE BERNY FRESNES","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODc0OjgxMDpC"},{"gtfsId":"3:StopPoint:8775869:810:B","lat":48.780284,"lon":2.312464,"name":"GARE DE BOURG LA REINE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODY5OjgxMDpC"},{"gtfsId":"3:StopPoint:8775864:810:B","lat":48.82109,"lon":2.338978,"name":"CITE UNIVERSITAIRE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODY0OjgxMDpC"},{"gtfsId":"3:StopPoint:8775863:810:B","lat":48.834293,"lon":2.332852,"name":"DENFERT ROCHEREAU","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYzOjgxMDpC"},{"gtfsId":"3:StopPoint:8775862:810:B","lat":48.840034,"lon":2.337096,"name":"PORT ROYAL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYyOjgxMDpC"}],"realTime":false,"startTime":1486901700000,"endTime":1486902960000,"distance":15382.33700052743,"duration":1260.0,"trip":{"gtfsId":"3:81511046-1412629","tripHeadsign":"EPOL - Aéroport Charles-de-Gaulle 2 TGV","pattern":{"code":"3:810:B:0:68","id":"UGF0dGVybjozOjgxMDpCOjA6Njg="},"id":"VHJpcDozOjgxNTExMDQ2LTE0MTI2Mjk="},"agency":{"name":"RER","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5Ojc0MQ=="}},{"transitLeg":false,"legGeometry":{"points":"ydciHu_hMdHdD\\NNHNFF_@DYn@eGx@iEx@yE`Bs@HsB","length":12},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.845743,"lon":2.339928,"name":"LUXEMBOURG","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:8775861:810:B","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo4Nzc1ODYxOjgxMDpC"}},"to":{"lat":48.842645,"lon":2.34352,"name":"Institut Curie, Paris, France","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"intermediateStops":[],"realTime":false,"startTime":1486902961000,"endTime":1486903476000,"distance":600.229,"duration":515.0,"trip":null,"agency":null}],"walkDistance":1206.330833323962,"duration":3812,"startTime":1486899664000,"endTime":1486903476000,"fares":null},{"legs":[{"transitLeg":false,"legGeometry":{"points":"sughH__MXFBHjCZF??x@@pBBnCCJH?FBDFBJLL@MDBLFP@n@Fp@DlBN\\Ch@@ZHXL","length":25},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.705208299999995,"lon":2.2985851,"name":"3 Rue Blaise Pascal, Chilly-Mazarin","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"to":{"lat":48.702076,"lon":2.296614,"name":"Chemin Blanc","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:9952","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo5OTUy"}},"intermediateStops":[],"realTime":false,"startTime":1486902430000,"endTime":1486902839000,"distance":465.62399999999997,"duration":409.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"}bghHyp_Myk@aEgh@cFmoS{gD","length":4},"mode":"BUS","rentedBike":false,"route":{"shortName":"DM151","agency":{"name":"TRANSPORTS DANIEL MEYER","id":"QWdlbmN5OjQwNw=="},"id":"Um91dGU6MzowNTUxNTUwMDE6RE0xNTE=","gtfsId":"3:055155001:DM151","mode":"BUS"},"from":{"lat":48.702076,"lon":2.296614,"name":"Chemin Blanc","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:9952","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo5OTUy"}},"to":{"lat":48.82087,"lon":2.325745,"name":"Porte d'Orléans","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:413","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo0MTM="}},"intermediateStops":[{"gtfsId":"3:StopPoint:46:8880","lat":48.70924,"lon":2.297587,"name":"Le Petit Chilly","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo4ODgw"},{"gtfsId":"3:StopPoint:46:8882","lat":48.715847,"lon":2.298723,"name":"Les Champarts","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo4ODgy"}],"realTime":false,"startTime":1486902840000,"endTime":1486903860000,"distance":13383.951592857922,"duration":1020.0,"trip":{"gtfsId":"3:81263836-1326575","tripHeadsign":"Paris - Porte d'Orléans","pattern":{"code":"3:055155001:DM151:1:03","id":"UGF0dGVybjozOjA1NTE1NTAwMTpETTE1MToxOjAz"},"id":"VHJpcDozOjgxMjYzODM2LTEzMjY1NzU="},"agency":{"name":"TRANSPORTS DANIEL MEYER","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQwNw=="}},{"transitLeg":false,"legGeometry":{"points":"ki~hHyfeMe@B?DO@K@i@F??W@AFOZ_@DQ@BJBLALCLEHEDG@G?GCEGOXEJQCoBY","length":26},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.82087,"lon":2.325745,"name":"Porte d'Orléans","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:46:413","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo0Njo0MTM="}},"to":{"lat":48.82282,"lon":2.325091,"name":"Porte d'Orléans (Général Leclerc)","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59624","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYyNA=="}},"intermediateStops":[],"realTime":false,"startTime":1486903860000,"endTime":1486904079000,"distance":259.829,"duration":219.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"su~hHybeMw_@}IyXkU","length":3},"mode":"SUBWAY","rentedBike":false,"route":{"shortName":"4","agency":{"name":"METRO","id":"QWdlbmN5OjQzOQ=="},"id":"Um91dGU6MzoxMDAxMTAwMDQ6NA==","gtfsId":"3:100110004:4","mode":"SUBWAY"},"from":{"lat":48.82282,"lon":2.325091,"name":"Porte d'Orléans (Général Leclerc)","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59624","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYyNA=="}},"to":{"lat":48.832194,"lon":2.330425,"name":"Mouton-Duvernet","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59260","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTI2MA=="}},"intermediateStops":[{"gtfsId":"3:StopPoint:59631","lat":48.828069,"lon":2.326846,"name":"Alésia","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTYzMQ=="}],"realTime":false,"startTime":1486904400000,"endTime":1486904520000,"distance":1125.8597226853258,"duration":120.0,"trip":{"gtfsId":"3:79549920-186588","tripHeadsign":"Porte de Clignancourt","pattern":{"code":"3:100110004:4:1:03","id":"UGF0dGVybjozOjEwMDExMDAwNDo0OjE6MDM="},"id":"VHJpcDozOjc5NTQ5OTIwLTE4NjU4OA=="},"agency":{"name":"METRO","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQzOQ=="}},{"transitLeg":false,"legGeometry":{"points":"upiHodfM??Ja@IIIE","length":5},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.832194,"lon":2.330425,"name":"Mouton-Duvernet","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59260","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTI2MA=="}},"to":{"lat":48.832257,"lon":2.330902,"name":"DENFERT-ROCHEREAU - DAGUERRE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764637","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM3"}},"intermediateStops":[],"realTime":false,"startTime":1486904520000,"endTime":1486904545000,"distance":27.259999999999998,"duration":25.0,"trip":null,"agency":null},{"transitLeg":true,"legGeometry":{"points":"qpiHcgfM}NmLcN}MuKkG{OaG_ImD","length":6},"mode":"BUS","rentedBike":false,"route":{"shortName":"38","agency":{"name":"RATP","id":"QWdlbmN5OjQ0Mg=="},"id":"Um91dGU6MzoxMDAxMDAwMzg6Mzg=","gtfsId":"3:100100038:38","mode":"BUS"},"from":{"lat":48.832257,"lon":2.330902,"name":"DENFERT-ROCHEREAU - DAGUERRE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764637","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM3"}},"to":{"lat":48.843555,"lon":2.338948,"name":"AUGUSTE COMTE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764640","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjQw"}},"intermediateStops":[{"gtfsId":"3:StopPoint:59:3764628","lat":48.834801,"lon":2.333053,"name":"DENFERT-ROCHEREAU - ARAGO","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjI4"},{"gtfsId":"3:StopPoint:59:3764626","lat":48.837228,"lon":2.335449,"name":"HOPITAL SAINT-VINCENT DE PAUL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjI2"},{"gtfsId":"3:StopPoint:59:3764638","lat":48.839259,"lon":2.336783,"name":"OBSERVATOIRE - PORT ROYAL","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM4"},{"gtfsId":"3:StopPoint:59:3764639","lat":48.841955,"lon":2.338076,"name":"VAL DE GRACE","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjM5"}],"realTime":false,"startTime":1486904940000,"endTime":1486905180000,"distance":1394.994210656525,"duration":240.0,"trip":{"gtfsId":"3:81477662-1392431","tripHeadsign":"Gare du Nord","pattern":{"code":"3:100100038:38:1:02","id":"UGF0dGVybjozOjEwMDEwMDAzODozODoxOjAy"},"id":"VHJpcDozOjgxNDc3NjYyLTEzOTI0MzE="},"agency":{"name":"RATP","url":"http://www.vianavigo.com","fareUrl":null,"id":"QWdlbmN5OjQ0Mg=="}},{"transitLeg":false,"legGeometry":{"points":"mwbiHgxgMGE_A_@F_@DYn@eGx@iEx@yEBs@HsB","length":10},"mode":"WALK","rentedBike":false,"route":null,"from":{"lat":48.843555,"lon":2.338948,"name":"AUGUSTE COMTE","vertexType":"TRANSIT","bikeRentalStation":null,"stop":{"gtfsId":"3:StopPoint:59:3764640","code":null,"platformCode":null,"id":"U3RvcDozOlN0b3BQb2ludDo1OTozNzY0NjQw"}},"to":{"lat":48.842645,"lon":2.34352,"name":"Institut Curie, Paris, France","vertexType":"NORMAL","bikeRentalStation":null,"stop":null},"intermediateStops":[],"realTime":false,"startTime":1486905181000,"endTime":1486905554000,"distance":431.40200000000004,"duration":373.0,"trip":null,"agency":null}],"walkDistance":1184.3516666572623,"duration":3124,"startTime":1486902430000,"endTime":1486905554000,"fares":null}],"date":1486898739000}}}}`

An idea?

tuukka commented 7 years ago

In the request, you can see time:"11:25:39" i.e. local time. In the response you can see "date":1486898739000 which corresponds to 11:25:39 local time as well. (EDIT) which corresponds to 12:25:39 local time:

$ TZ='Europe/Paris' date --date='@1486898739' -Iseconds
2017-02-12T12:25:39+0100

Similarily for the first itinerary: "startTime":1486898890000 corresponds to 12:28:10 local time (a completely reasonable 2,5 minute wait before departure). If it shows as 13:28:10, then Moment.js is not converting the timestamp to local time correctly.

At beta.reittiopas.fi it works the same way except the timezone is Europe/Helsinki, and Moment.js is converting to local time correctly. (EDIT) the request "time" and response "date" refer to the same time in the Europe/Helsinki timezone. Your OTP is probably not running in your Europe/Paris timezone?

kalon33 commented 7 years ago

@tuukka but it shouldn't return a startTime 12:28:10 for the first itinerary when I ask for leaving at 11:25 (and buses are available at this time)...

kalon33 commented 7 years ago

@tuukka Here is what I got:

bug digitransit

and here is what I should have, that I got when I ask to leave one hour before...

bug_digitransit_2

tuukka commented 7 years ago

@kalon33 thanks for pointing out the contradiction in what I wrote. Please see my edits and check your OTP timezone. We set ours here (java $JAVA_OPTS -Duser.timezone=Europe/Helsinki): https://github.com/HSLdevcom/OpenTripPlanner/blob/master/run.sh#L42

kalon33 commented 7 years ago

@tuukka I changed it to Europe/Paris, restarted OTP, but still, the same problem. How timezone is compared between digitransit-ui and OTP? I don't get that problem neither when using the web interface included in OTP (at http://paris.acolytesanonymes.org), nor when digitransit-ui displays next departures ar near stops.

kalon33 commented 7 years ago

@tuukka Is there a place where digitransit "tells" OTP that it has a time drift with it? Is there a way to just ignore timezones (as my setup works in only one timezone, the same for OTP and Digitransit, that should fix the problem)?

tuukka commented 7 years ago

It seems the problem is not in the direction from OTP to Digitransit UI, as the times in the responses are communicated as timestamps. (However, that also means there's no way to ignore timezones.) The problem is in the plan request as the time is local time there, and OTP has to use the same local time as Digitransit UI or problems ensue. The run.sh above is where Digitransit "tells" OTP which timezone is local time. I don't know why the setting there doesn't have an effect on your system. Do you use Docker and do you use our Dockerfile?

kalon33 commented 7 years ago

@tuukka No, I cloned git repository to a directory, built OTP with

mvn clean package -DskipTests

then I built graph (./otp --build ./pdx/paris/ --graphs ./pdx/graphs/) and launched it using ./otp --server --graphs ./pdx/ --router paris --securePort 7997 --port 7996 (with the following command line in ./otp: java -Xmx6G -Xverify:none -Duser.timezone=Europe/Paris -jar dirname $0/target/otp-1.1.0-SNAPSHOT-shaded.jar "$@" )

OTP is then accessible through an apache proxy.

If there's an easy to set up alternative to run multiple OTP instances (on multiple ports) on the same machine without messing the rest of my server services, and that would fix my problem, I'm ready to try it.

I've another OTP instance running on the same server with the same config, and there I don't have any timezone problem...

tuukka commented 7 years ago

You should test running our Docker container:

docker run -p 7996:8080 -e ROUTER_NAME=hsl -e ROUTER_DATA_CONTAINER_URL=https://api.digitransit.fi/routing-data/v1/ hsldevcom/opentripplanner

You can replace hslwith your own router name and https://api.digitransit.fi/routing-data/v1/ with your own URL to a directory where you have put router-hsl.zip that contains all your data files (OSM, GTFS, build-config.json, router-config.jsonetc.)

kalon33 commented 7 years ago

That works but I really don't know why, do you? Is there a way to reload a Docker container without rebuilding OTP graph?

kalon33 commented 7 years ago

OTP debug output in console is now showing one hour more than when the request was done. Example done at 22:23 CEST (Paris Time):

23:23:33.577 INFO (GraphQL.java:60) Executing request. operation name: null. Request: query NearestRoutesContainer($filterByModes_0:[Mode]!,$filterByPlaceTypes_1:[FilterPlaceType]!,$startTime_2:Long!) {viewer {...F5}} fragment F0 on DepartureRow {_stoptimes4wU578:stoptimes(startTime:$startTime_2,timeRange:7200,numberOfDepartures:2) {serviceDay,realtimeDeparture},id} fragment F1 on DepartureRow {pattern {route {gtfsId,shortName,longName,mode,color,alerts {id,effectiveStartDate,effectiveEndDate},agency {name,id},id},code,id},_stoptimes4wU578:stoptimes(startTime:$startTime_2,timeRange:7200,numberOfDepartures:2) {realtimeState,realtimeDeparture,scheduledDeparture,realtimeArrival,scheduledArrival,realtime,serviceDay,stopHeadsign,stop {code,platformCode,id},trip {gtfsId,id}},id} fragment F2 on BikeRentalStation {name,stationId,bikesAvailable,spacesAvailable,id} fragment F3 on placeAtDistance {distance,place {id,typename,...F1,...F2},id} fragment F4 on placeAtDistanceConnection {edges {node {distance,place {id,typename,...F0},id,...F3},cursor},pageInfo {hasNextPage,hasPreviousPage}} fragment F5 on QueryType {_nearestv3sCm:nearest(lat:48.6949911625,lon:2.29839228125,maxDistance:10000,maxResults:50,first:50,filterByModes:$filterByModes_0,filterByPlaceTypes:$filterByPlaceTypes_1) {...F4}}

kalon33 commented 7 years ago

@tuukka @hannesj Sorry for the out of topic question, but unfortunately we don't have a mailing list for this... How do you make use of HSL SIRI Lite VM feed in OTP and Digitransit (like http://api.digitransit.fi/realtime/vehicle-positions/v1/siriaccess/vm/json) ? I will have some SIRI lite only real time data sources and I don't know how to deal with that...

@tuukka Thanks a lot for your help BTW, that fixed my problem (I now use the Docker container) but I can't find out how!

tuukka commented 7 years ago

@kalon33 You need to convert SIRI to GTFS-realtime. Our code to convert SIRI VM to GTFS-realtime Trip Updates: https://github.com/HSLdevcom/siri2gtfsrt

Regarding timezones and Docker: My guess is your server timezone configuration is incompatible with Java, whereas our Docker image is compatible with Java. (Why do you see times one hour bigger? The Docker image is configured to use Europe/Helsinki timezone which is one hour ahead of Paris.)

kalon33 commented 7 years ago

@tuukka thanks a lot! Is your code able to work without reference to trip_ids in SIRI feed (which I think is MonitoredVehicleJourney)? My data source only references line, position, current and next stops, and direction (inbound or outbound) and I have to make a SIRI lite feed with that...

I found this OTP branch https://github.com/rutebanken/opentripplanner/tree/rutebanken_siri_realtime_support that has embedded SIRI support without the need of other code, but unfortunately it doesn't support SIRI-lite right now... Maybe is it of some interest to you too?

tuukka commented 7 years ago

No need for trip id's directly, but we have the scheduled departure time which we use to find the trip id. Without a reference to the trip in the static timetable, all times will show twice: once for the static trip, once for the realtime trip. In a way, the realtime trip needs to cancel the static trip.

kalon33 commented 7 years ago

@tuukka Is the "delay" value for a given vehicle in the SIRI-lite feed enough for siri2gtfsrt to calculate the scheduled departure and find the trip_id? Or should I calculate it myself, and provide it in the feed using a specific variable?

tuukka commented 7 years ago

True, in theory the delay is enough (especially if it's the delay at a specific stop). In practise, siri2gtfsrt takes the scheduled departure time from origin from the SIRI feed and passes it on to OTP, which has "fuzzy" trip matching as an option based on route, direction and scheduled departure time.

kalon33 commented 7 years ago

@tuukka What is the corresponding variable name in SIRI? I will modify my feed to include it then (based on calculation). Do you plan to contribute to the SIRI module rutebanken did to integrate your feed or will you keep siri2gtfsrt (I don't know your links with them)? Their module seems pretty well designed to integrate feeds in OTP and match trip_id when missing from the feed. Thanks for your help :)

Thanks :)

tuukka commented 7 years ago

start_time = vehicle['MonitoredVehicleJourney']['FramedVehicleJourneyRef']['DatedVehicleJourneyRef']

We have not had plans to move SIRI support into OTP and I didn't know Rutebanken had a branch.

By the way, you have 11 issues open here. On the other hand, you said all your bugs were fixed. Could you check if some of your open issues are bugs that have been fixed?

kalon33 commented 7 years ago

@tuukka thanks for your help. An important part of them are feature requests, for the remaining ones, I'm currently closing them.

kalon33 commented 7 years ago

@tuukka 6 remaining, all feature requests. I'm sorry but I didn't completely understood: should I pull full date and time in DatedVehicleJourneyRef ? In HSL feed for example: {"ValidUntilTime":1487278883000,"RecordedAtTime":1487278853000,"MonitoredVehicleJourney":{"LineRef":{"value":"4611"},"DirectionRef":{"value":"1"},"FramedVehicleJourneyRef":{"DataFrameRef":{"value":"2017-02-16"},"DatedVehicleJourneyRef":"2257"},"OperatorRef":{"value":"HSL"},"Monitored":true,"VehicleLocation":{"Longitude":24.94753,"Latitude":60.17197},"Delay":146,"MonitoredCall":{"StopPointRef":"1111142"},"VehicleRef":{"value":"1002"}}}

It seems that "DatedVehicleJourneyRef" contains trip_id anf not time, is it? "DataFrameRef" contains date and not time... Where should I put time in the feed? Thanks again for your help.

tuukka commented 7 years ago

2257 there is 22:57. I don't know if we're using SIRI correctly or not. http://data.foli.fi/siri/vm has the info in originaimeddeparturetime as a timestamp.

kalon33 commented 7 years ago

@tuukka I'm sorry, I have to reopen this one. I restarted the Docker container to rebuild the graph yesterday evening, and the one hour offset is back. What is really puzzling me is that I also migrated my other OTP instance on the same server to the same Docker container, using similar Digitransit config... and that it doesn't have this problem.

hannesj commented 7 years ago

@kalon33 This seems to be an issue with OpenTripPlanner and not with digitransit-ui, as it is handling the dates correctly.

kalon33 commented 7 years ago

@hannesj Do you have an idea of how I may fix that?

hannesj commented 7 years ago

We fixed it by always specifying the timezone we want the input times to be in the local timezone of the server by using -Duser.timezone=Europe/Helsinki

kalon33 commented 7 years ago

@hannesj I know, but using the Docker container from hsldevcom I still have the same problem (only in one of my two OTP instances, which are running using the same Docker container code in two separate containers, on the same server). When I tested two days ago, that was working, and the only things I changed since is that I updated my GTFS files and limited RAM usage...

kalon33 commented 7 years ago

@tuukka it's OT, but does siri2gtfsrt supports SIRI lite ET (Estimated-Timetable) feeds? What about SIRI lite GM feeds?

I fixed my timezone problem passing -Duser.timezone option both in run.sh and as argument when launching docker command, I still haven't found why that changes something to only pass it as docker argument.

tuukka commented 7 years ago

@kalon33 I didn't know you could pass timezone as an argument to docker. How did you do it, and what does it look like when it works?

There's no support for SIRI ET or SIRI GM. If you need those, you may be better of with the Rutebanken branch or OneBusAway.

kalon33 commented 7 years ago

@tuukka I may have not explained it well, I pass timezone option to java through docker command line using both -e and altering run.sh (I made my own OTP docker container using existing one as a basis). It seems that passing proper timezone when building graph fixes it. What do you mean by "what does it look like when it works"? Do you want to see the logs or the interface?

Does OneBusAway allow to use it with OTP?

I looked at the Rutebanken branch, but it seems they doesn't support SIRI-lite yet unfortunately...

The feed I'm trying to use is like that (I added multiple dots at the end to figure that it is bigger than that): {"siri":{"serviceDelivery":{"responseTimestamp":"2017-03-06T07:21:52Z","producerRef":"IVTR_RELAIS","status":"true","estimatedTimetableDelivery":[{"lineRef":{"value":"C01739"},"directionRef":{"value":""},"datedVehicleJourneyRef":{"value":"SNCF-ACCES:VehicleJourney::131035_20170306:LOC"},"vehicleMode":["RAIL"],"routeRef":{},"publishedLineName":[{"value":"J"}],"directionName":[],"originRef":{},"originName":[],"originShortName":[],"destinationDisplayAtOrigin":[],"via":[],"destinationRef":{"value":"STIF:StopPoint:Q:41140:"},"destinationName":[{"value":"GARE DE BOISSY L AILLERIE"}],"destinationShortName":[],"originDisplayAtDestination":[],"operatorRef":{"value":"SNCF-ACCES:Operator::SNCF:"},"productCategoryRef":{},"vehicleJourneyName":[],"journeyNote":[],"firstOrLastJourney":"UNSPECIFIED","additionalVehicleJourneyRef":[],"estimatedCalls":{"estimatedCall":[{"stopPointRef":{"value":"STIF:StopPoint:Q:41167:"},"expectedArrivalTime":"2017-03-06T08:17:00.000Z","expectedDepartureTime":"2017-03-06T08:17:00.000Z","aimedArrivalTime":"2017-03-06T08:17:00.000Z","aimedDepartureTime":"2017-03-06T08:17:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41161:"},"expectedArrivalTime":"2017-03-06T08:12:00.000Z","expectedDepartureTime":"2017-03-06T08:12:00.000Z","aimedArrivalTime":"2017-03-06T08:12:00.000Z","aimedDepartureTime":"2017-03-06T08:12:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41168:"},"expectedArrivalTime":"2017-03-06T08:20:00.000Z","expectedDepartureTime":"2017-03-06T08:20:00.000Z","aimedArrivalTime":"2017-03-06T08:20:00.000Z","aimedDepartureTime":"2017-03-06T08:20:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41169:"},"expectedArrivalTime":"2017-03-06T08:23:00.000Z","expectedDepartureTime":"2017-03-06T08:23:00.000Z","aimedArrivalTime":"2017-03-06T08:23:00.000Z","aimedDepartureTime":"2017-03-06T08:23:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41145:"},"expectedArrivalTime":"2017-03-06T08:32:00.000Z","expectedDepartureTime":"2017-03-06T08:32:00.000Z","aimedArrivalTime":"2017-03-06T08:32:00.000Z","aimedDepartureTime":"2017-03-06T08:32:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41146:"},"expectedArrivalTime":"2017-03-06T08:35:00.000Z","expectedDepartureTime":"2017-03-06T08:35:00.000Z","aimedArrivalTime":"2017-03-06T08:35:00.000Z","aimedDepartureTime":"2017-03-06T08:35:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41170:"},"expectedArrivalTime":"2017-03-06T08:28:00.000Z","expectedDepartureTime":"2017-03-06T08:28:00.000Z","aimedArrivalTime":"2017-03-06T08:28:00.000Z","aimedDepartureTime":"2017-03-06T08:28:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41139:"},"expectedArrivalTime":"2017-03-06T08:43:00.000Z","expectedDepartureTime":"2017-03-06T08:43:00.000Z","aimedArrivalTime":"2017-03-06T08:43:00.000Z","aimedDepartureTime":"2017-03-06T08:43:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]},{"stopPointRef":{"value":"STIF:StopPoint:Q:41140:"},"expectedArrivalTime":"2017-03-06T08:47:00.000Z","aimedArrivalTime":"2017-03-06T08:47:00.000Z","aimedDepartureTime":"2017-03-06T08:47:00.000Z","stopPointName":[],"originDisplay":[],"destinationDisplay":[],"arrivalOperatorRefs":[]}]},"recordedAtTime":"2017-03-06T07:21:14.887Z"}.........

kalon33 commented 7 years ago

@tuukka @hannesj I just found a branch from Rutebanken implementing SIRI-lite ET (and SIRI SX, VM and ET) in OTP ( https://github.com/rutebanken/OpenTripPlanner/tree/rutebanken_siri_realtime_support ). Do you think it would be possible to merge these changes in your OTP fork (It would be useful for me to still rely on your Docker container)? May I generate a PR?

tuukka commented 7 years ago

I think it would be problematic to merge the SIRI branch without discussion with the OpenTripPlanner upstream as there seems to be concensus there against bringing SIRI support inside OTP. You might be able to convert from SIRI to GTFS-RT in OneBusAway.

kalon33 commented 7 years ago

@tuukka I made a new script in siri2gtfsrt to generate proper GTFS-RT feed and used stop-time-updater in OTP router-config.json (based on the one from router-hsl.zip) to use it. Unfortunately, it reads the feed but find no match with existing trips (feed is at http://spiralo.net:5000/STIF , ?debug is of course still working). As I don't have trip_id (but route_id and stop_id are OK), is there a way for me to make them match? Or, at the very least, add use the RT feed without matching? Is there something incorrect in what I did?

I used feedID = 1 in my config file, as the GTFS file (that contain multiple agencies data) is the first one to load (and in the logs I saw that it has the 1 id).

Thanks for your help.

tuukka commented 7 years ago

@kalon33 OTP should print debug information every time it updates the feed. If you don't have trip_id, then you need to set the option "fuzzyTripMatching": true for the stop-time-updater in the OTP router-config. For the fuzzy trip matching to work, I think you need to provide all of route_id, direction_id, start_time and start_date in the TripDescriptor.

kalon33 commented 7 years ago

@tuukka that's thanks to debug info that I know that there's no match at all (I already have "fuzzyTripMatching" set to "true"). Should I also provide the schedule_relationship too? I will try to found in my original feed ( https://ratp.spiralo.net/estimated-timetable2 ) something that resembles to a start_time (as according to your list that the only thing I'm missing) , but for now I don't know what to choose or how to generate something that would do the trick.

----- Mail original -----

De: "Tuukka Hastrup" notifications@github.com À: "HSLdevcom/digitransit-ui" digitransit-ui@noreply.github.com Cc: "Nicolas Derive" kalon33@ubuntu.com, "Mention" mention@noreply.github.com Envoyé: Lundi 20 Mars 2017 12:55:08 Objet: Re: [HSLdevcom/digitransit-ui] [regression] Time(zone?) problems in digitransit-ui (#908)

@kalon33 OTP should print debug information every time it updates the feed. If you don't have trip_id, then you need to set the option "fuzzyTripMatching": true for the stop-time-updater in the OTP router-config. For the fuzzy trip matching to work, I think you need to provide all of route_id, direction_id, start_time and start_date in the TripDescriptor.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .

milohb commented 7 years ago

@kalon33 - Did you manage to resolve the time(zone) problem?

We are facing the same issue on our system (Europe/Berlin)

Regards Michael

vesameskanen commented 6 years ago

Just a quick note: our travis build has started facing the timezone problem. Visual tests images generated using browserstack occasionally display wrong timezone (EST) and the tests fail. Apparently OTP has nothing to do with the problem as the test images are rendered using mock data. So it seems to be some sort of moment timezone related issue.

kalon33 commented 6 years ago

This problem was finally fixed on my side (I don't really know how) for months is now happening again since a few weeks :/ When planning an itinerary to start at 11:00 in DT (local time, CEST for me), it returns itineraries starting at 12:00 CEST. Everything is working perfectly on OTP side as I don't have any problem with OTP internal web interface...

----- Mail original -----

De: "Vesa Meskanen" notifications@github.com À: "HSLdevcom/digitransit-ui" digitransit-ui@noreply.github.com Cc: "Nicolas Derive" kalon33@ubuntu.com, "Mention" mention@noreply.github.com Envoyé: Mardi 6 Mars 2018 08:33:03 Objet: Re: [HSLdevcom/digitransit-ui] [regression] Time(zone?) problems in digitransit-ui (#908)

Just a quick note: our travis build has started facing the timezone problem. Visual tests images generated using browserstack occasionally display wrong timezone (EST) and the tests fail.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub , or mute the thread .

milohb commented 6 years ago

We managed to get correct times in our digitranist instance (docker) by adding the full moment timezone info to our config.xxx.js file:

timezoneData: 'Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5',