2
2
3
3
import java .io .File ;
4
4
import java .io .IOException ;
5
+ import java .util .Collections ;
5
6
import java .util .concurrent .ExecutorService ;
6
7
import java .util .concurrent .Executors ;
7
8
16
17
import org .eqasim .server .services .router .road .RoadRouterService ;
17
18
import org .eqasim .server .services .router .transit .TransitRouterService ;
18
19
import org .matsim .api .core .v01 .Scenario ;
20
+ import org .matsim .api .core .v01 .network .Network ;
19
21
import org .matsim .core .config .CommandLine ;
20
22
import org .matsim .core .config .CommandLine .ConfigurationException ;
21
23
import org .matsim .core .config .Config ;
22
24
import org .matsim .core .config .ConfigGroup ;
23
25
import org .matsim .core .config .ConfigUtils ;
26
+ import org .matsim .core .network .NetworkUtils ;
27
+ import org .matsim .core .network .algorithms .NetworkCleaner ;
28
+ import org .matsim .core .network .algorithms .TransportModeNetworkFilter ;
24
29
import org .matsim .core .network .io .MatsimNetworkReader ;
25
30
import org .matsim .core .scenario .ScenarioUtils ;
26
31
import org .matsim .pt .transitSchedule .api .TransitScheduleReader ;
@@ -36,7 +41,7 @@ public static void main(String[] args)
36
41
throws ConfigurationException , JsonParseException , JsonMappingException , IOException {
37
42
CommandLine cmd = new CommandLine .Builder (args ) //
38
43
.requireOptions ("config-path" , "port" ) //
39
- .allowOptions ("threads" , "configuration-path" ) //
44
+ .allowOptions ("threads" , "configuration-path" , "use-transit" ) //
40
45
.build ();
41
46
42
47
int threads = cmd .getOption ("threads" ).map (Integer ::parseInt )
@@ -65,31 +70,40 @@ public static void main(String[] args)
65
70
new MatsimNetworkReader (scenario .getNetwork ())
66
71
.readURL (ConfigGroup .getInputFileURL (config .getContext (), config .network ().getInputFile ()));
67
72
68
- new TransitScheduleReader (scenario )
69
- .readURL (ConfigGroup .getInputFileURL (config .getContext (), config .transit ().getTransitScheduleFile ()));
73
+ boolean useTransit = cmd .getOption ("use-transit" ).map (Boolean ::parseBoolean ).orElse (true );
74
+ if (useTransit ) {
75
+ new TransitScheduleReader (scenario ).readURL (
76
+ ConfigGroup .getInputFileURL (config .getContext (), config .transit ().getTransitScheduleFile ()));
77
+ }
70
78
71
79
ExecutorService executor = Executors .newFixedThreadPool (threads );
72
80
73
- RoadRouterService roadRouterService = RoadRouterService .create (config , scenario .getNetwork (),
74
- configuration .walk , threads );
81
+ Network roadNetwork = NetworkUtils .createNetwork ();
82
+ new TransportModeNetworkFilter (scenario .getNetwork ()).filter (roadNetwork , Collections .singleton ("car" ));
83
+ new NetworkCleaner ().run (roadNetwork );
84
+
85
+ RoadRouterService roadRouterService = RoadRouterService .create (config , roadNetwork , configuration .walk ,
86
+ threads );
75
87
RoadRouterEndpoint roadRouterEndpoint = new RoadRouterEndpoint (executor , roadRouterService );
76
88
app .post ("/router/road" , roadRouterEndpoint ::post );
77
89
78
- RoadIsochroneService roadIsochroneService = RoadIsochroneService .create (config , scenario . getNetwork () ,
90
+ RoadIsochroneService roadIsochroneService = RoadIsochroneService .create (config , roadNetwork ,
79
91
configuration .walk );
80
92
RoadIsochroneEndpoint roadIsochroneEndpoint = new RoadIsochroneEndpoint (executor , roadIsochroneService );
81
93
app .post ("/isochrone/road" , roadIsochroneEndpoint ::post );
82
94
83
- TransitRouterService transitRouterService = TransitRouterService .create (config , scenario .getNetwork (),
84
- scenario .getTransitSchedule (), configuration .transit , configuration .walk );
85
- TransitRouterEndpoint transitRouterEndpoint = new TransitRouterEndpoint (executor , transitRouterService );
86
- app .post ("/router/transit" , transitRouterEndpoint ::post );
87
-
88
- TransitIsochroneService transitIsochroneService = TransitIsochroneService .create (config ,
89
- scenario .getTransitSchedule (), configuration .transit , configuration .walk );
90
- TransitIsochroneEndpoint transitIsochroneEndpoint = new TransitIsochroneEndpoint (executor ,
91
- transitIsochroneService );
92
- app .post ("/isochrone/transit" , transitIsochroneEndpoint ::post );
95
+ if (useTransit ) {
96
+ TransitRouterService transitRouterService = TransitRouterService .create (config , scenario .getNetwork (),
97
+ scenario .getTransitSchedule (), configuration .transit , configuration .walk );
98
+ TransitRouterEndpoint transitRouterEndpoint = new TransitRouterEndpoint (executor , transitRouterService );
99
+ app .post ("/router/transit" , transitRouterEndpoint ::post );
100
+
101
+ TransitIsochroneService transitIsochroneService = TransitIsochroneService .create (config ,
102
+ scenario .getTransitSchedule (), configuration .transit , configuration .walk );
103
+ TransitIsochroneEndpoint transitIsochroneEndpoint = new TransitIsochroneEndpoint (executor ,
104
+ transitIsochroneService );
105
+ app .post ("/isochrone/transit" , transitIsochroneEndpoint ::post );
106
+ }
93
107
94
108
// Run API
95
109
int port = Integer .parseInt (cmd .getOptionStrict ("port" ));
0 commit comments