2121import org .apache .logging .log4j .Logger ;
2222import org .eqasim .core .analysis .DistanceUnit ;
2323import org .eqasim .core .analysis .PersonAnalysisFilter ;
24+ import org .eqasim .core .analysis .legs .LegItem ;
25+ import org .eqasim .core .analysis .legs .LegReaderFromPopulation ;
26+ import org .eqasim .core .analysis .legs .LegWriter ;
2427import org .eqasim .core .analysis .pt .PublicTransportLegItem ;
2528import org .eqasim .core .analysis .pt .PublicTransportLegReaderFromPopulation ;
2629import org .eqasim .core .analysis .pt .PublicTransportLegWriter ;
@@ -247,12 +250,14 @@ RecordedTravelTime provideRecordedTravelTime() {
247250 // We initialize the TripReaderFromPopulation here as we might need it just below
248251 TripReaderFromPopulation tripReader = new TripReaderFromPopulation (Arrays .asList ("car,pt" .split ("," )), injector .getInstance (PersonAnalysisFilter .class ), Optional .empty (), Optional .empty ());
249252 PublicTransportLegReaderFromPopulation ptLegReader = new PublicTransportLegReaderFromPopulation (injector .getInstance (TransitSchedule .class ), injector .getInstance (PersonAnalysisFilter .class ));
253+ LegReaderFromPopulation legReader = new LegReaderFromPopulation (Arrays .asList ("car" , "pt" ), injector .getInstance (PersonAnalysisFilter .class ), Optional .empty (), Optional .empty ());
250254 OutputDirectoryHierarchy outputDirectoryHierarchy = injector .getInstance (OutputDirectoryHierarchy .class );
251255
252256 cmd .getOption (CMD_WRITE_INPUT_CSV ).ifPresent (s -> {
253257 if (Boolean .parseBoolean (s )) {
254258 writeTripsCsv (population , outputDirectoryHierarchy .getOutputFilename ("input_trips.csv" ), tripReader );
255259 writePtLegsCsv (population , outputDirectoryHierarchy .getOutputFilename ("input_pt_legs.csv" ), ptLegReader );
260+ writeLegsCsv (population , outputDirectoryHierarchy .getOutputFilename ("input_legs.csv" ), legReader );
256261 }
257262 });
258263
@@ -269,6 +274,7 @@ RecordedTravelTime provideRecordedTravelTime() {
269274 if (Boolean .parseBoolean (s )) {
270275 writeTripsCsv (population , outputDirectoryHierarchy .getOutputFilename ("output_trips.csv" ), tripReader );
271276 writePtLegsCsv (population , outputDirectoryHierarchy .getOutputFilename ("output_pt_legs.csv" ), ptLegReader );
277+ writeLegsCsv (population , outputDirectoryHierarchy .getOutputFilename ("output_legs.csv" ), legReader );
272278 }
273279 });
274280 if (cmd .hasOption (CMD_SIMULATE_AFTER )) {
@@ -320,4 +326,13 @@ private static void writePtLegsCsv(Population population, String filePath, Publi
320326 throw new RuntimeException (e );
321327 }
322328 }
329+
330+ private static void writeLegsCsv (Population population , String filePath , LegReaderFromPopulation legsReader ) {
331+ Collection <LegItem > legs = legsReader .readLegs (population );
332+ try {
333+ new LegWriter (legs , DistanceUnit .meter , DistanceUnit .meter ).write (filePath );
334+ } catch (IOException e ) {
335+ throw new RuntimeException (e );
336+ }
337+ }
323338}
0 commit comments