1 package org.opentrafficsim.core.definitions;
2
3 import java.awt.Color;
4 import java.util.LinkedHashMap;
5 import java.util.Locale;
6 import java.util.function.BiFunction;
7
8 import org.djunits.unit.SpeedUnit;
9 import org.djunits.value.vdouble.scalar.Length;
10 import org.djunits.value.vdouble.scalar.Speed;
11 import org.djutils.immutablecollections.Immutable;
12 import org.djutils.immutablecollections.ImmutableLinkedHashMap;
13 import org.djutils.immutablecollections.ImmutableMap;
14 import org.opentrafficsim.core.distributions.ConstantGenerator;
15 import org.opentrafficsim.core.gtu.GtuType;
16 import org.opentrafficsim.core.gtu.GtuType.Marker;
17 import org.opentrafficsim.core.gtu.GtuTemplate;
18 import org.opentrafficsim.core.network.LinkType;
19 import org.opentrafficsim.core.units.distributions.ContinuousDistSpeed;
20
21 import nl.tudelft.simulation.jstats.distributions.DistNormal;
22 import nl.tudelft.simulation.jstats.streams.StreamInterface;
23
24
25
26
27
28
29
30
31
32
33
34 public final class DefaultsNl extends Defaults implements BiFunction<GtuType, StreamInterface, GtuTemplate>
35 {
36
37
38
39
40
41
42 DefaultsNl()
43 {
44 super(new Locale("nl", "NL"));
45 }
46
47
48
49
50
51
52 @Deprecated
53 public static final GtuType NONE = new GtuType("NONE");
54
55
56 public static final GtuType ROAD_USER = new GtuType("ROAD_USER");
57
58
59 public static final GtuType WATERWAY_USER = new GtuType("WATERWAY_USER");
60
61
62 public static final GtuType RAILWAY_USER = new GtuType("RAILWAY_USER");
63
64
65 public static final GtuType PEDESTRIAN = new GtuType("PEDESTRIAN", ROAD_USER);
66
67
68 public static final GtuType BICYCLE = new GtuType("BICYCLE", ROAD_USER);
69
70
71 public static final GtuType MOPED = new GtuType("MOPED", BICYCLE);
72
73
74 public static final GtuType VEHICLE = new GtuType("VEHICLE", ROAD_USER);
75
76
77 public static final GtuType EMERGENCY_VEHICLE = new GtuType("EMERGENCY_VEHICLE", VEHICLE);
78
79
80 public static final GtuType SHIP = new GtuType("SHIP", WATERWAY_USER);
81
82
83 public static final GtuType TRAIN = new GtuType("TRAIN", RAILWAY_USER);
84
85
86 public static final GtuType CAR = new GtuType("CAR", VEHICLE);
87
88
89 public static final GtuType VAN = new GtuType("VAN", VEHICLE);
90
91
92 public static final GtuType BUS = new GtuType("BUS", VEHICLE);
93
94
95 public static final GtuType TRUCK = new GtuType("TRUCK", VEHICLE);
96
97
98 public static final GtuType SCHEDULED_BUS = new GtuType("SCHEDULED_BUS", BUS);
99
100
101 public static final ImmutableMap<GtuType, Color> GTU_TYPE_COLORS;
102
103 static
104 {
105 LinkedHashMap<GtuType, Color> map = new LinkedHashMap<>();
106 map.put(CAR, Color.BLUE);
107 map.put(TRUCK, Color.RED);
108 map.put(VEHICLE, Color.GRAY);
109 map.put(PEDESTRIAN, Color.YELLOW);
110 map.put(BICYCLE, Color.GREEN);
111 GTU_TYPE_COLORS = new ImmutableLinkedHashMap<>(map, Immutable.WRAP);
112
113 TRUCK.setMarker(Marker.SQUARE);
114 }
115
116
117
118
119
120
121
122
123
124
125
126
127 @Override
128 public GtuTemplate apply(final GtuType gtuType, final StreamInterface randomStream)
129 {
130 GtuTemplate template = null;
131 if (gtuType.equals(CAR))
132 {
133
134 template = new GtuTemplate(gtuType, new ConstantGenerator<>(Length.instantiateSI(4.19)),
135 new ConstantGenerator<>(Length.instantiateSI(1.7)),
136 new ConstantGenerator<>(new Speed(180, SpeedUnit.KM_PER_HOUR)));
137 }
138 else if (gtuType.equals(TRUCK))
139 {
140
141 template = new GtuTemplate(gtuType, new ConstantGenerator<>(Length.instantiateSI(12.0)),
142 new ConstantGenerator<>(Length.instantiateSI(2.55)),
143 new ContinuousDistSpeed(new DistNormal(randomStream, 85.0, 2.5), SpeedUnit.KM_PER_HOUR));
144 }
145 else if (gtuType.equals(BUS))
146 {
147 template = new GtuTemplate(gtuType, new ConstantGenerator<>(Length.instantiateSI(12.0)),
148 new ConstantGenerator<>(Length.instantiateSI(2.55)),
149 new ConstantGenerator<>(new Speed(90, SpeedUnit.KM_PER_HOUR)));
150 }
151 else if (gtuType.equals(VAN))
152 {
153 template = new GtuTemplate(gtuType, new ConstantGenerator<>(Length.instantiateSI(5.0)),
154 new ConstantGenerator<>(Length.instantiateSI(2.4)),
155 new ConstantGenerator<>(new Speed(180, SpeedUnit.KM_PER_HOUR)));
156 }
157 else if (gtuType.equals(EMERGENCY_VEHICLE))
158 {
159 template = new GtuTemplate(gtuType, new ConstantGenerator<>(Length.instantiateSI(5.0)),
160 new ConstantGenerator<>(Length.instantiateSI(2.55)),
161 new ConstantGenerator<>(new Speed(180, SpeedUnit.KM_PER_HOUR)));
162 }
163 return template;
164 };
165
166
167
168
169
170
171 @Deprecated
172 public static final LinkType NONE_LINK = new LinkType("NONE");
173
174
175 @Deprecated
176 public static final LinkType CONNECTOR = new LinkType("CONNECTOR");
177
178
179 public static final LinkType ROAD = new LinkType("ROAD");
180
181
182 public static final LinkType FREEWAY = new LinkType("FREEWAY", ROAD);
183
184
185 public static final LinkType HIGHWAY = new LinkType("HIGHWAY", ROAD);
186
187
188 public static final LinkType PROVINCIAL = new LinkType("PROVINCIAL", ROAD);
189
190
191 public static final LinkType RURAL = new LinkType("RURAL", ROAD);
192
193
194 public static final LinkType URBAN = new LinkType("URBAN", ROAD);
195
196
197 public static final LinkType RESIDENTIAL = new LinkType("RESIDENTIAL", ROAD);
198
199
200 public static final LinkType WATERWAY = new LinkType("WATERWAY");
201
202
203 public static final LinkType RAILWAY = new LinkType("RAILWAY");
204
205 static
206 {
207 ROAD.addCompatibleGtuType(ROAD_USER);
208 FREEWAY.addIncompatibleGtuType(PEDESTRIAN);
209 FREEWAY.addIncompatibleGtuType(BICYCLE);
210 HIGHWAY.addIncompatibleGtuType(PEDESTRIAN);
211 HIGHWAY.addIncompatibleGtuType(BICYCLE);
212 PROVINCIAL.addIncompatibleGtuType(PEDESTRIAN);
213 PROVINCIAL.addIncompatibleGtuType(BICYCLE);
214 WATERWAY.addCompatibleGtuType(WATERWAY_USER);
215 RAILWAY.addCompatibleGtuType(RAILWAY_USER);
216 }
217
218 }