@@ -88,6 +88,7 @@ private static class TraversalExporter implements VehicleEntersTrafficEventHandl
8888 private final IdMap <Person , LinkEnterEvent > enterEvents = new IdMap <>(Person .class );
8989 private final Map <Id <Person >, Integer > tripIndex = new HashMap <>();
9090 private final Map <Id <Person >, Integer > legIndex = new HashMap <>();
91+ private final Map <Id <Vehicle >, String > legMode = new HashMap <>();
9192 private final Set <String > modes ;
9293
9394 TraversalExporter (BufferedWriter writer , ScenarioExtent extent , Network network , Set <String > modes ) {
@@ -98,7 +99,7 @@ private static class TraversalExporter implements VehicleEntersTrafficEventHandl
9899
99100 try {
100101 writer .write (String .join (";" , Arrays .asList ( //
101- "person_id" , "vehicle_id" , "link_id" , "enter_time" , "leave_time" , "trip_index" , "leg_index" ))
102+ "person_id" , "vehicle_id" , "link_id" , "enter_time" , "leave_time" , "trip_index" , "leg_index" , "leg_mode" ))
102103 + "\n " );
103104 } catch (IOException e ) {
104105 throw new RuntimeException (e );
@@ -108,13 +109,15 @@ private static class TraversalExporter implements VehicleEntersTrafficEventHandl
108109 @ Override
109110 public void handleEvent (VehicleEntersTrafficEvent event ) {
110111 if (checkMode (event .getNetworkMode ())) {
112+ legMode .put (event .getVehicleId (), event .getNetworkMode ());
111113 drivers .put (event .getVehicleId (), event .getPersonId ());
112114 }
113115 }
114116
115117 @ Override
116118 public void handleEvent (VehicleLeavesTrafficEvent event ) {
117119 if (drivers .remove (event .getVehicleId ()) != null ) {
120+ legMode .remove (event .getVehicleId ());
118121 writeTraversal (event .getPersonId (), enterEvents .remove (event .getPersonId ()), null );
119122 }
120123 }
@@ -167,6 +170,7 @@ private void writeTraversal(Id<Person> personId, LinkEnterEvent enterEvent, Link
167170
168171 int localTripIndex = tripIndex .getOrDefault (personId , 0 );
169172 int localLegIndex = legIndex .getOrDefault (personId , 0 );
173+ String localLegMode = legMode .get (personId );
170174
171175 try {
172176 writer .write (String .join (";" , new String [] { //
@@ -176,7 +180,8 @@ private void writeTraversal(Id<Person> personId, LinkEnterEvent enterEvent, Link
176180 String .valueOf (enterTime ), //
177181 String .valueOf (leaveTime ), //
178182 String .valueOf (localTripIndex ), //
179- String .valueOf (localLegIndex ) //
183+ String .valueOf (localLegIndex ), //
184+ String .valueOf (localLegMode ) //
180185 }) + "\n " );
181186 } catch (IOException e ) {
182187 throw new RuntimeException (e );
0 commit comments