Skip to content

Commit a9324c7

Browse files
authored
feat: consider leg mode for traversals (#263)
1 parent 9074122 commit a9324c7

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

core/src/main/java/org/eqasim/core/tools/ExportLinkTraversals.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)