MATSIM
Classes | Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.matsim.analysis.TripsAndLegsWriter Class Reference

Classes

interface  CustomLegsWriterExtension
 
interface  CustomTimeWriter
 
interface  CustomTripsWriterExtension
 
class  DefaultTimeWriter
 
class  NoLegsWriterExtension
 
class  NoTripWriterExtension
 
class  SecondsFromMidnightTimeWriter
 

Public Member Functions

 TripsAndLegsWriter (Scenario scenario, CustomTripsWriterExtension tripsWriterExtension, CustomLegsWriterExtension legWriterExtension, AnalysisMainModeIdentifier mainModeIdentifier, CustomTimeWriter customTimeWriter)
 
void write (IdMap< Person, Plan > experiencedPlans, String tripsFilename, String legsFilename)
 

Static Public Attributes

static final String [] TRIPSHEADER_BASE
 
static final String [] LEGSHEADER_BASE
 

Private Member Functions

char getDefaultDelimiter ()
 
Tuple< Iterable<?>, Iterable<?> > getPlanCSVRecords (Plan experiencedPlan, Id< Person > personId)
 
StringBuilder getTripErrorMessage (List< String > tripRecord)
 
List< String > getLegRecord (Leg leg, String personId, String tripId, Activity previousAct, Activity nextAct, TripStructureUtils.Trip trip)
 
String getLegErrorMessage (List< String > record)
 
Coord getCoordFromActivity (Activity activity)
 
Coord getCoordFromLink (Id< Link > linkId)
 

Private Attributes

final String [] TRIPSHEADER
 
final String [] LEGSHEADER
 
final CustomTripsWriterExtension tripsWriterExtension
 
final Scenario scenario
 
final CustomLegsWriterExtension legsWriterExtension
 
final AnalysisMainModeIdentifier mainModeIdentifier
 
final CustomTimeWriter customTimeWriter
 

Static Private Attributes

static final Logger log = LogManager.getLogger(TripsAndLegsWriter.class)
 

Detailed Description

Author
jbischoff / SBB

Definition at line 60 of file TripsAndLegsWriter.java.

Constructor & Destructor Documentation

◆ TripsAndLegsWriter()

org.matsim.analysis.TripsAndLegsWriter.TripsAndLegsWriter ( Scenario  scenario,
CustomTripsWriterExtension  tripsWriterExtension,
CustomLegsWriterExtension  legWriterExtension,
AnalysisMainModeIdentifier  mainModeIdentifier,
CustomTimeWriter  customTimeWriter 
)

Definition at line 81 of file TripsAndLegsWriter.java.

References org.matsim.analysis.TripsAndLegsWriter.customTimeWriter, org.matsim.analysis.TripsAndLegsWriter.CustomLegsWriterExtension.getAdditionalLegHeader(), org.matsim.analysis.TripsAndLegsWriter.CustomTripsWriterExtension.getAdditionalTripHeader(), org.matsim.analysis.TripsAndLegsWriter.mainModeIdentifier, org.matsim.analysis.TripsAndLegsWriter.scenario, and org.matsim.analysis.TripsAndLegsWriter.tripsWriterExtension.

82  {
83  this.scenario = scenario;
85  this.legsWriterExtension = legWriterExtension;
88 
90  LEGSHEADER = ArrayUtils.addAll(LEGSHEADER_BASE, legWriterExtension.getAdditionalLegHeader());
91  }
final CustomLegsWriterExtension legsWriterExtension
final CustomTripsWriterExtension tripsWriterExtension
final AnalysisMainModeIdentifier mainModeIdentifier
Here is the call graph for this function:

Member Function Documentation

◆ getDefaultDelimiter()

char org.matsim.analysis.TripsAndLegsWriter.getDefaultDelimiter ( )
private

◆ write()

void org.matsim.analysis.TripsAndLegsWriter.write ( IdMap< Person, Plan experiencedPlans,
String  tripsFilename,
String  legsFilename 
)

Definition at line 97 of file TripsAndLegsWriter.java.

References org.matsim.api.core.v01.IdMap< T, V >.entrySet(), org.matsim.core.utils.io.IOUtils.getBufferedWriter(), org.matsim.analysis.TripsAndLegsWriter.getDefaultDelimiter(), org.matsim.core.utils.collections.Tuple< A, B >.getFirst(), org.matsim.analysis.TripsAndLegsWriter.getPlanCSVRecords(), and org.matsim.core.utils.collections.Tuple< A, B >.getSecond().

97  {
98  try (CSVPrinter tripsCSVprinter = new CSVPrinter(IOUtils.getBufferedWriter(tripsFilename),
99  CSVFormat.Builder.create().setDelimiter(getDefaultDelimiter()).setHeader(TRIPSHEADER).build());
100  CSVPrinter legsCSVprinter = new CSVPrinter(IOUtils.getBufferedWriter(legsFilename),
101  CSVFormat.Builder.create().setDelimiter(getDefaultDelimiter()).setHeader(LEGSHEADER).build())
102  ) {
103  for (Map.Entry<Id<Person>, Plan> entry : experiencedPlans.entrySet()) {
104  Tuple<Iterable<?>, Iterable<?>> tripsAndLegRecords = getPlanCSVRecords(entry.getValue(), entry.getKey());
105  tripsCSVprinter.printRecords(tripsAndLegRecords.getFirst());
106  legsCSVprinter.printRecords(tripsAndLegRecords.getSecond());
107  }
108  } catch (IOException e) {
109  e.printStackTrace();
110  }
111  }
Tuple< Iterable<?>, Iterable<?> > getPlanCSVRecords(Plan experiencedPlan, Id< Person > personId)
Here is the call graph for this function:

◆ getPlanCSVRecords()

Tuple<Iterable<?>, Iterable<?> > org.matsim.analysis.TripsAndLegsWriter.getPlanCSVRecords ( Plan  experiencedPlan,
Id< Person personId 
)
private

Definition at line 113 of file TripsAndLegsWriter.java.

References org.matsim.core.utils.geometry.CoordUtils.calcEuclideanDistance(), org.matsim.core.scoring.EventsToLegs.ENTER_VEHICLE_TIME_ATTRIBUTE_NAME, org.matsim.analysis.TripsAndLegsWriter.CustomTripsWriterExtension.getAdditionalTripColumns(), org.matsim.analysis.TripsAndLegsWriter.getCoordFromActivity(), org.matsim.analysis.TripsAndLegsWriter.getTripErrorMessage(), org.matsim.core.router.TripStructureUtils.getTrips(), org.matsim.api.core.v01.Coord.getX(), org.matsim.api.core.v01.Coord.getY(), org.matsim.core.router.MainModeIdentifier.identifyMainMode(), org.matsim.core.utils.collections.Tuple< A, B >.toString(), and org.matsim.analysis.TripsAndLegsWriter.CustomTimeWriter.writeTime().

Referenced by org.matsim.analysis.TripsAndLegsWriter.write().

113  {
114  List<List<String>> tripRecords = new ArrayList<>();
115  List<List<String>> legRecords = new ArrayList<>();
116  Tuple<Iterable<?>, Iterable<?>> record = new Tuple<>(tripRecords, legRecords);
117  List<TripStructureUtils.Trip> trips = TripStructureUtils.getTrips(experiencedPlan);
118 
119  for (int i = 0; i < trips.size(); i++) {
120  TripStructureUtils.Trip trip = trips.get(i);
121  List<String> tripRecord = new ArrayList<>();
122  tripRecords.add(tripRecord);
123  tripRecord.add(personId.toString());
124  final String tripNo = Integer.toString(i + 1);
125  tripRecord.add(tripNo); // trip number, numbered starting with 0
126  String tripId = personId + "_" + tripNo;
127  tripRecord.add(tripId);
128  double distance = 0.0;
129  double departureTime = trip.getOriginActivity().getEndTime().orElse(0);
130  double travelTime = trip.getDestinationActivity().getStartTime().orElse(0) - departureTime;
131  //experienced plans have a start time
132 
133  double totalWaitingTime = 0.0;
134  double currentLongestShareDistance = Double.MIN_VALUE;
135  String currentModeWithLongestShare = "";
136  List<String> modes = new ArrayList<>();
137  String lastActivityType = trip.getOriginActivity().getType();
138  String nextActivityType = trip.getDestinationActivity().getType();
139  Id<ActivityFacility> fromFacilityId = trip.getOriginActivity().getFacilityId();
140  Id<ActivityFacility> toFacilityId = trip.getDestinationActivity().getFacilityId();
141  Id<Link> fromLinkId = trip.getOriginActivity().getLinkId();
142  Id<Link> toLinkId = trip.getDestinationActivity().getLinkId();
143  Coord fromCoord = getCoordFromActivity(trip.getOriginActivity());
144  Coord toCoord = getCoordFromActivity(trip.getDestinationActivity());
145  int euclideanDistance = (int) CoordUtils.calcEuclideanDistance(fromCoord, toCoord);
146  String firstPtBoardingStop = null;
147  String lastPtEgressStop = null;
148 
149  String mainMode = "";
150  if (mainModeIdentifier != null) {
151  try {
152  mainMode = mainModeIdentifier.identifyMainMode(trip.getTripElements());
153  if (mainMode == null)
154  mainMode = "";
155  } catch (Exception e) {
156  // leave field empty
157  }
158  }
159 
160  for (Leg leg : trip.getLegsOnly()) {
161  modes.add(leg.getMode());
162  final double legDist = leg.getRoute().getDistance();
163  distance += legDist;
164  Double boardingTime = (Double) leg.getAttributes().getAttribute(EventsToLegs.ENTER_VEHICLE_TIME_ATTRIBUTE_NAME);
165  if (boardingTime != null) {
166  double waitingTime = boardingTime - leg.getDepartureTime().seconds();
167  totalWaitingTime += waitingTime;
168  }
169  if (StringUtils.isBlank(currentModeWithLongestShare) || legDist > currentLongestShareDistance) {
170  currentLongestShareDistance = legDist;
171  currentModeWithLongestShare = leg.getMode();
172 
173  }
174  if (leg.getRoute() instanceof TransitPassengerRoute route) {
175  firstPtBoardingStop = firstPtBoardingStop != null ? firstPtBoardingStop : route.getAccessStopId().toString();
176  lastPtEgressStop = route.getEgressStopId().toString();
177  }
178 
179  }
180 
181  tripRecord.add(customTimeWriter.writeTime(departureTime));
182  tripRecord.add(customTimeWriter.writeTime(travelTime));
183  tripRecord.add(customTimeWriter.writeTime(totalWaitingTime));
184  tripRecord.add(Integer.toString((int) Math.round(distance)));
185  tripRecord.add(Integer.toString(euclideanDistance));
186  tripRecord.add(mainMode);
187  tripRecord.add(currentModeWithLongestShare);
188  tripRecord.add(modes.stream().collect(Collectors.joining("-")));
189  tripRecord.add(lastActivityType);
190  tripRecord.add(nextActivityType);
191  tripRecord.add(String.valueOf(fromFacilityId));
192  tripRecord.add(String.valueOf(fromLinkId));
193  tripRecord.add(Double.toString(fromCoord.getX()));
194  tripRecord.add(Double.toString(fromCoord.getY()));
195 
196  tripRecord.add(String.valueOf(toFacilityId));
197  tripRecord.add(String.valueOf(toLinkId));
198  tripRecord.add(Double.toString(toCoord.getX()));
199  tripRecord.add(Double.toString(toCoord.getY()));
200  tripRecord.add(firstPtBoardingStop != null ? firstPtBoardingStop : "");
201  tripRecord.add(lastPtEgressStop != null ? lastPtEgressStop : "");
202  tripRecord.addAll(tripsWriterExtension.getAdditionalTripColumns(personId, trip));
203 
204  if (TRIPSHEADER.length != tripRecord.size()) {
205  // put the whole error message also into the RuntimeException, so maven shows it on the command line output (log messages are shown incompletely)
206  String errorMessage = getTripErrorMessage(tripRecord).toString();
207  log.error(errorMessage);
208  throw new RuntimeException(errorMessage);
209  }
210 
211  Activity prevAct = null;
212  Leg prevLeg = null;
213  List<PlanElement> allElements = new ArrayList<>();
214  allElements.add(trip.getOriginActivity());
215  allElements.addAll(trip.getTripElements());
216  allElements.add(trip.getDestinationActivity());
217  for (PlanElement pe : allElements) {
218  if (pe instanceof Activity currentAct) {
219  if (prevLeg != null) {
220  List<String> legRecord = getLegRecord(prevLeg, personId.toString(), tripId, prevAct, currentAct, trip);
221  legRecords.add(legRecord);
222  }
223  prevAct = currentAct;
224 
225  } else if (pe instanceof Leg) {
226  prevLeg = (Leg) pe;
227  }
228  }
229  }
230 
231  return record;
232  }
String identifyMainMode(List<? extends PlanElement > tripElements)
List< String > getLegRecord(Leg leg, String personId, String tripId, Activity previousAct, Activity nextAct, TripStructureUtils.Trip trip)
StringBuilder getTripErrorMessage(List< String > tripRecord)
final CustomTripsWriterExtension tripsWriterExtension
final AnalysisMainModeIdentifier mainModeIdentifier
List< String > getAdditionalTripColumns(TripStructureUtils.Trip trip)
Here is the call graph for this function:

◆ getTripErrorMessage()

StringBuilder org.matsim.analysis.TripsAndLegsWriter.getTripErrorMessage ( List< String >  tripRecord)
private

Definition at line 234 of file TripsAndLegsWriter.java.

Referenced by org.matsim.analysis.TripsAndLegsWriter.getPlanCSVRecords().

234  {
235  StringBuilder str = new StringBuilder();
236  str.append("Custom CSV Trip Writer Extension does not provide an identical number of additional values and additional columns. Number of columns is ")
237  .append(TRIPSHEADER.length).append(", and number of values is ").append(tripRecord.size())
238  .append(".\n")
239  .append("TripsWriterExtension class was: ").append(tripsWriterExtension.getClass())
240  .append(". Column name to value pairs supplied were:\n");
241  for (int j = 0; j < Math.max(TRIPSHEADER.length, tripRecord.size()); j++) {
242  String columnNameJ;
243  try {
244  columnNameJ = TRIPSHEADER[j];
245  } catch (ArrayIndexOutOfBoundsException e) {
246  columnNameJ = "!COLUMN MISSING!";
247  }
248  String tripRecordJ;
249  try {
250  tripRecordJ = tripRecord.get(j);
251  } catch (IndexOutOfBoundsException e) {
252  tripRecordJ = "!VALUE MISSING!";
253  }
254  str.append(j + ": " + columnNameJ + ": " + tripRecordJ + "\n");
255  }
256  return str;
257  }
final CustomTripsWriterExtension tripsWriterExtension

◆ getLegRecord()

List<String> org.matsim.analysis.TripsAndLegsWriter.getLegRecord ( Leg  leg,
String  personId,
String  tripId,
Activity  previousAct,
Activity  nextAct,
TripStructureUtils.Trip  trip 
)
private

Definition at line 259 of file TripsAndLegsWriter.java.

References org.matsim.core.scoring.EventsToLegs.ENTER_VEHICLE_TIME_ATTRIBUTE_NAME, org.matsim.analysis.TripsAndLegsWriter.CustomLegsWriterExtension.getAdditionalLegColumns(), org.matsim.utils.objectattributes.attributable.Attributes.getAttribute(), org.matsim.utils.objectattributes.attributable.Attributable.getAttributes(), org.matsim.analysis.TripsAndLegsWriter.getCoordFromActivity(), org.matsim.api.core.v01.population.Leg.getDepartureTime(), org.matsim.api.core.v01.population.Route.getDistance(), org.matsim.api.core.v01.population.Route.getEndLinkId(), org.matsim.analysis.TripsAndLegsWriter.getLegErrorMessage(), org.matsim.api.core.v01.population.Leg.getMode(), org.matsim.vehicles.VehicleType.getNetworkMode(), org.matsim.api.core.v01.population.Leg.getRoute(), org.matsim.api.core.v01.population.Route.getStartLinkId(), org.matsim.api.core.v01.population.Leg.getTravelTime(), org.matsim.vehicles.Vehicles.getVehicles(), org.matsim.api.core.v01.Scenario.getVehicles(), org.matsim.api.core.v01.Coord.getX(), org.matsim.api.core.v01.Coord.getY(), org.matsim.vehicles.VehicleType.hasNetworkMode(), org.matsim.core.utils.misc.OptionalTime.seconds, org.matsim.core.scoring.EventsToLegs.VEHICLE_ID_ATTRIBUTE_NAME, and org.matsim.analysis.TripsAndLegsWriter.CustomTimeWriter.writeTime().

259  {
260  List<String> record = new ArrayList<>();
261  record.add(personId);
262  record.add(tripId);
263  record.add(customTimeWriter.writeTime(leg.getDepartureTime().seconds()));
264  record.add(customTimeWriter.writeTime(leg.getTravelTime().seconds()));
265  Double boardingTime = (Double) leg.getAttributes().getAttribute(EventsToLegs.ENTER_VEHICLE_TIME_ATTRIBUTE_NAME);
266  Id<Vehicle> vehicleId = (Id<Vehicle>) leg.getAttributes().getAttribute(EventsToLegs.VEHICLE_ID_ATTRIBUTE_NAME);
267  double waitingTime = 0.;
268  if (boardingTime != null) {
269  waitingTime = boardingTime - leg.getDepartureTime().seconds();
270  }
271  record.add(customTimeWriter.writeTime(waitingTime));
272  record.add(Integer.toString((int) leg.getRoute().getDistance()));
273  record.add(leg.getMode());
274 
275  if (vehicleId != null && scenario.getVehicles().getVehicles().containsKey(vehicleId)) {
276  VehicleType type = scenario.getVehicles().getVehicles().get(vehicleId).getType();
277  record.add(type.hasNetworkMode() ? type.getNetworkMode() : "");
278  } else {
279  record.add("");
280  }
281 
282  record.add(leg.getRoute().getStartLinkId().toString());
283  Coord startCoord = getCoordFromActivity(previousAct);
284  Coord endCoord = getCoordFromActivity(nextAct);
285  record.add(Double.toString(startCoord.getX()));
286  record.add(Double.toString(startCoord.getY()));
287  record.add(leg.getRoute().getEndLinkId().toString());
288  record.add(Double.toString(endCoord.getX()));
289  record.add(Double.toString(endCoord.getY()));
290  String transitLine = "";
291  String transitRoute = "";
292  String ptAccessStop = "";
293  String ptEgressStop = "";
294  if (leg.getRoute() instanceof TransitPassengerRoute route) {
295  transitLine = route.getLineId().toString();
296  transitRoute = route.getRouteId().toString();
297  ptAccessStop = route.getAccessStopId().toString();
298  ptEgressStop = route.getEgressStopId().toString();
299  }
300  record.add(ptAccessStop);
301  record.add(ptEgressStop);
302  record.add(transitLine);
303  record.add(transitRoute);
304  record.add(vehicleId != null ? vehicleId.toString() : "");
305 
306  record.addAll(legsWriterExtension.getAdditionalLegColumns(trip, leg));
307 
308  if (LEGSHEADER.length != record.size()) {
309  // put the whole error message also into the RuntimeException, so maven shows it on the command line output (log messages are shown incompletely)
310  String errorMessage = getLegErrorMessage(record);
311  log.error(errorMessage);
312  throw new RuntimeException(errorMessage);
313  }
314 
315  return record;
316  }
List< String > getAdditionalLegColumns(TripStructureUtils.Trip experiencedTrip, Leg experiencedLeg)
final CustomLegsWriterExtension legsWriterExtension
String getLegErrorMessage(List< String > record)
Map< Id< Vehicle >, Vehicle > getVehicles()
Here is the call graph for this function:

◆ getLegErrorMessage()

String org.matsim.analysis.TripsAndLegsWriter.getLegErrorMessage ( List< String >  record)
private

Definition at line 318 of file TripsAndLegsWriter.java.

Referenced by org.matsim.analysis.TripsAndLegsWriter.getLegRecord().

318  {
319  StringBuilder str = new StringBuilder();
320  str.append("Custom CSV Leg Writer Extension does not provide an identical number of additional values and additional columns. Number of columns is ")
321  .append(LEGSHEADER.length)
322  .append(", and number of values is ")
323  .append(record.size())
324  .append(".\n")
325  .append("LegsWriterExtension class was: ")
326  .append(legsWriterExtension.getClass())
327  .append(". Column name to value pairs supplied were:\n");
328  for (int j = 0; j < Math.max(LEGSHEADER.length, record.size()); j++) {
329  String columnNameJ;
330  try {
331  columnNameJ = LEGSHEADER[j];
332  } catch (ArrayIndexOutOfBoundsException e) {
333  columnNameJ = "!COLUMN MISSING!";
334  }
335  String recordJ;
336  try {
337  recordJ = record.get(j);
338  } catch (IndexOutOfBoundsException e) {
339  recordJ = "!VALUE MISSING!";
340  }
341  str.append(j).append(": ").append(columnNameJ).append(": ").append(recordJ).append("\n");
342  }
343  return str.toString();
344  }
final CustomLegsWriterExtension legsWriterExtension

◆ getCoordFromActivity()

Coord org.matsim.analysis.TripsAndLegsWriter.getCoordFromActivity ( Activity  activity)
private

Definition at line 346 of file TripsAndLegsWriter.java.

References org.matsim.api.core.v01.Scenario.getActivityFacilities(), org.matsim.api.core.v01.population.Activity.getCoord(), org.matsim.analysis.TripsAndLegsWriter.getCoordFromLink(), org.matsim.facilities.ActivityFacilities.getFacilities(), org.matsim.api.core.v01.population.Activity.getFacilityId(), and org.matsim.api.core.v01.population.Activity.getLinkId().

Referenced by org.matsim.analysis.TripsAndLegsWriter.getLegRecord(), and org.matsim.analysis.TripsAndLegsWriter.getPlanCSVRecords().

346  {
347  if (activity.getCoord() != null) {
348  return activity.getCoord();
349  } else if (activity.getFacilityId() != null && scenario.getActivityFacilities().getFacilities().containsKey(activity.getFacilityId())) {
350  Coord coord = scenario.getActivityFacilities().getFacilities().get(activity.getFacilityId()).getCoord();
351  return coord != null ? coord : getCoordFromLink(activity.getLinkId());
352  } else return getCoordFromLink(activity.getLinkId());
353  }
Map< Id< ActivityFacility >, ? extends ActivityFacility > getFacilities()
Id< ActivityFacility > getFacilityId()
ActivityFacilities getActivityFacilities()
Here is the call graph for this function:

◆ getCoordFromLink()

Coord org.matsim.analysis.TripsAndLegsWriter.getCoordFromLink ( Id< Link linkId)
private

Definition at line 356 of file TripsAndLegsWriter.java.

References org.matsim.api.core.v01.network.Network.getLinks(), and org.matsim.api.core.v01.Scenario.getNetwork().

Referenced by org.matsim.analysis.TripsAndLegsWriter.getCoordFromActivity().

356  {
357  return scenario.getNetwork().getLinks().get(linkId).getToNode().getCoord();
358  }
Map< Id< Link >, ? extends Link > getLinks()
Here is the call graph for this function:

Member Data Documentation

◆ TRIPSHEADER_BASE

final String [] org.matsim.analysis.TripsAndLegsWriter.TRIPSHEADER_BASE
static
Initial value:
= {"person", "trip_number", "trip_id",
"dep_time", "trav_time", "wait_time", "traveled_distance", "euclidean_distance",
"main_mode", "longest_distance_mode", "modes", "start_activity_type",
"end_activity_type", "start_facility_id", "start_link",
"start_x", "start_y", "end_facility_id",
"end_link", "end_x", "end_y", "first_pt_boarding_stop", "last_pt_egress_stop"}

Definition at line 61 of file TripsAndLegsWriter.java.

◆ LEGSHEADER_BASE

final String [] org.matsim.analysis.TripsAndLegsWriter.LEGSHEADER_BASE
static
Initial value:
= {"person", "trip_id",
"dep_time", "trav_time", "wait_time", "distance", "mode", "network_mode", "start_link",
"start_x", "start_y", "end_link", "end_x", "end_y", "access_stop_id", "egress_stop_id", "transit_line", "transit_route", "vehicle_id"}

Definition at line 68 of file TripsAndLegsWriter.java.

◆ log

final Logger org.matsim.analysis.TripsAndLegsWriter.log = LogManager.getLogger(TripsAndLegsWriter.class)
staticprivate

Definition at line 71 of file TripsAndLegsWriter.java.

◆ TRIPSHEADER

final String [] org.matsim.analysis.TripsAndLegsWriter.TRIPSHEADER
private

Definition at line 72 of file TripsAndLegsWriter.java.

◆ LEGSHEADER

final String [] org.matsim.analysis.TripsAndLegsWriter.LEGSHEADER
private

Definition at line 73 of file TripsAndLegsWriter.java.

◆ tripsWriterExtension

final CustomTripsWriterExtension org.matsim.analysis.TripsAndLegsWriter.tripsWriterExtension
private

◆ scenario

final Scenario org.matsim.analysis.TripsAndLegsWriter.scenario
private

◆ legsWriterExtension

final CustomLegsWriterExtension org.matsim.analysis.TripsAndLegsWriter.legsWriterExtension
private

Definition at line 76 of file TripsAndLegsWriter.java.

◆ mainModeIdentifier

final AnalysisMainModeIdentifier org.matsim.analysis.TripsAndLegsWriter.mainModeIdentifier
private

◆ customTimeWriter

final CustomTimeWriter org.matsim.analysis.TripsAndLegsWriter.customTimeWriter
private

The documentation for this class was generated from the following file: