SUMO - Simulation of Urban MObility
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
NBFrame.cpp
Go to the documentation of this file.
1
/****************************************************************************/
9
// Sets and checks options for netbuild
10
/****************************************************************************/
11
// SUMO, Simulation of Urban MObility; see http://sumo.sourceforge.net/
12
// Copyright (C) 2001-2012 DLR (http://www.dlr.de/) and contributors
13
/****************************************************************************/
14
//
15
// This file is part of SUMO.
16
// SUMO is free software: you can redistribute it and/or modify
17
// it under the terms of the GNU General Public License as published by
18
// the Free Software Foundation, either version 3 of the License, or
19
// (at your option) any later version.
20
//
21
/****************************************************************************/
22
23
24
// ===========================================================================
25
// included modules
26
// ===========================================================================
27
#ifdef _MSC_VER
28
#include <
windows_config.h
>
29
#else
30
#include <
config.h
>
31
#endif
32
33
#include <string>
34
#include <fstream>
35
#include "
NBFrame.h
"
36
#include "
NBNodeCont.h
"
37
#include "
NBEdgeCont.h
"
38
#include "
NBTrafficLightLogicCont.h
"
39
#include "
NBDistrictCont.h
"
40
#include "
NBDistribution.h
"
41
#include "
NBRequest.h
"
42
#include "
NBTypeCont.h
"
43
#include <
utils/options/OptionsCont.h
>
44
#include <
utils/common/MsgHandler.h
>
45
#include <
utils/common/UtilExceptions.h
>
46
#include <
utils/common/StringTokenizer.h
>
47
#include <
utils/common/ToString.h
>
48
#include <
utils/geom/GeoConvHelper.h
>
49
#include <
utils/iodevices/OutputDevice.h
>
50
51
#ifdef CHECK_MEMORY_LEAKS
52
#include <
foreign/nvwa/debug_new.h
>
53
#endif // CHECK_MEMORY_LEAKS
54
55
56
// ===========================================================================
57
// method definitions
58
// ===========================================================================
59
void
60
NBFrame::fillOptions
(
bool
forNetgen) {
61
OptionsCont
& oc =
OptionsCont::getOptions
();
62
// register building defaults
63
oc.
doRegister
(
"default.lanenumber"
,
'L'
,
new
Option_Integer
(1));
64
oc.
addSynonyme
(
"default.lanenumber"
,
"lanenumber"
,
true
);
65
oc.
addDescription
(
"default.lanenumber"
,
"Building Defaults"
,
"The default number of lanes in an edge"
);
66
67
oc.
doRegister
(
"default.speed"
,
'S'
,
new
Option_Float
((
SUMOReal
) 13.9));
68
oc.
addSynonyme
(
"default.speed"
,
"speed"
,
true
);
69
oc.
addDescription
(
"default.speed"
,
"Building Defaults"
,
"The default speed on an edge (in m/s)"
);
70
71
oc.
doRegister
(
"default.priority"
,
'P'
,
new
Option_Integer
(-1));
72
oc.
addSynonyme
(
"default.priority"
,
"priority"
,
true
);
73
oc.
addDescription
(
"default.priority"
,
"Building Defaults"
,
"The default priority of an edge"
);
74
75
76
// register the data processing options
77
oc.
doRegister
(
"no-internal-links"
,
new
Option_Bool
(
false
));
// !!! not described
78
oc.
addDescription
(
"no-internal-links"
,
"Processing"
,
"Omits internal links"
);
79
80
if
(!forNetgen) {
81
oc.
doRegister
(
"dismiss-vclasses"
,
new
Option_Bool
(
false
));
82
oc.
addDescription
(
"dismiss-vclasses"
,
"Processing"
,
"Removes vehicle class restrictions from imported edges."
);
83
}
84
85
oc.
doRegister
(
"no-turnarounds"
,
new
Option_Bool
(
false
));
86
oc.
addDescription
(
"no-turnarounds"
,
"Processing"
,
"Disables building turnarounds"
);
87
88
oc.
doRegister
(
"no-turnarounds.tls"
,
new
Option_Bool
(
false
));
89
oc.
addSynonyme
(
"no-turnarounds.tls"
,
"no-tls-turnarounds"
,
true
);
90
oc.
addDescription
(
"no-turnarounds.tls"
,
"Processing"
,
"Disables building turnarounds at tls-controlled junctions"
);
91
92
oc.
doRegister
(
"no-left-connections"
,
new
Option_Bool
(
false
));
93
oc.
addDescription
(
"no-left-connections"
,
"Processing"
,
"Disables building connections to left"
);
94
95
if
(!forNetgen) {
96
oc.
doRegister
(
"geometry.split"
,
new
Option_Bool
(
false
));
// !!!not described
97
oc.
addSynonyme
(
"geometry.split"
,
"split-geometry"
,
true
);
98
oc.
addDescription
(
"geometry.split"
,
"Processing"
,
"Splits edges across geometry nodes"
);
99
100
oc.
doRegister
(
"geometry.remove"
,
'R'
,
new
Option_Bool
(
false
));
101
oc.
addSynonyme
(
"geometry.remove"
,
"remove-geometry"
,
true
);
102
oc.
addDescription
(
"geometry.remove"
,
"Processing"
,
"Replace nodes which only define edge geometry by geometry points (joins edges)"
);
103
104
oc.
doRegister
(
"geometry.max-segment-length"
,
new
Option_Float
(0));
105
oc.
addDescription
(
"geometry.max-segment-length"
,
"Processing"
,
"splits geometry to restrict segment length"
);
106
}
107
108
oc.
doRegister
(
"offset.disable-normalization"
,
new
Option_Bool
(
false
));
109
oc.
addSynonyme
(
"offset.disable-normalization"
,
"disable-normalize-node-positions"
,
true
);
110
oc.
addDescription
(
"offset.disable-normalization"
,
"Processing"
,
"Turn off normalizing node positions"
);
111
112
oc.
doRegister
(
"offset.x"
,
new
Option_Float
(0));
113
oc.
addSynonyme
(
"offset.x"
,
"x-offset-to-apply"
,
true
);
114
oc.
addDescription
(
"offset.x"
,
"Processing"
,
"Adds FLOAT to net x-positions"
);
115
116
oc.
doRegister
(
"offset.y"
,
new
Option_Float
(0));
117
oc.
addSynonyme
(
"offset.y"
,
"y-offset-to-apply"
,
true
);
118
oc.
addDescription
(
"offset.y"
,
"Processing"
,
"Adds FLOAT to net y-positions"
);
119
120
oc.
doRegister
(
"flip-y-axis"
,
new
Option_Bool
(
false
));
121
oc.
addSynonyme
(
"flip-y-axis"
,
"flip-y"
);
122
oc.
addDescription
(
"flip-y-axis"
,
"Processing"
,
"Flips the y-coordinate along zero"
);
123
124
oc.
doRegister
(
"roundabouts.guess"
,
new
Option_Bool
(
false
));
125
oc.
addSynonyme
(
"roundabouts.guess"
,
"guess-roundabouts"
,
true
);
126
oc.
addDescription
(
"roundabouts.guess"
,
"Processing"
,
"Enable roundabout-guessing"
);
127
128
oc.
doRegister
(
"lefthand"
,
new
Option_Bool
(
false
));
129
oc.
addDescription
(
"lefthand"
,
"Processing"
,
"Assumes left-hand traffic on the network"
);
130
131
oc.
doRegister
(
"junctions.join"
,
new
Option_Bool
(
false
));
132
oc.
addDescription
(
"junctions.join"
,
"Processing"
,
133
"Joins junctions that are close to each other (recommended for OSM import)"
);
134
135
oc.
doRegister
(
"junctions.join-dist"
,
new
Option_Float
(15));
136
oc.
addDescription
(
"junctions.join-dist"
,
"Processing"
,
137
"Determines the maximal distance for joining junctions (defaults to 15)"
);
138
139
if
(!forNetgen) {
140
oc.
doRegister
(
"junctions.join-exclude"
,
new
Option_String
());
141
oc.
addDescription
(
"junctions.join-exclude"
,
"Processing"
,
"Interprets STR as list of junctions to exclude from joining"
);
142
143
oc.
doRegister
(
"speed.offset"
,
new
Option_Float
(0));
144
oc.
addDescription
(
"speed.offset"
,
"Processing"
,
"Modifies all edge speeds by adding FLOAT"
);
145
146
oc.
doRegister
(
"speed.factor"
,
new
Option_Float
(1));
147
oc.
addDescription
(
"speed.factor"
,
"Processing"
,
"Modifies all edge speeds by multiplying FLOAT"
);
148
}
149
150
// tls setting options
151
// explicit tls
152
oc.
doRegister
(
"tls.set"
,
new
Option_String
());
153
oc.
addSynonyme
(
"tls.set"
,
"explicite-tls"
,
true
);
154
oc.
addDescription
(
"tls.set"
,
"TLS Building"
,
"Interprets STR as list of junctions to be controlled by TLS"
);
155
156
oc.
doRegister
(
"tls.unset"
,
new
Option_String
());
157
oc.
addSynonyme
(
"tls.unset"
,
"explicite-no-tls"
,
true
);
158
oc.
addDescription
(
"tls.unset"
,
"TLS Building"
,
"Interprets STR as list of junctions to be not controlled by TLS"
);
159
160
// tls-guessing
161
oc.
doRegister
(
"tls.guess"
,
new
Option_Bool
(
false
));
162
oc.
addSynonyme
(
"tls.guess"
,
"guess-tls"
,
true
);
163
oc.
addDescription
(
"tls.guess"
,
"TLS Building"
,
"Turns on TLS guessing"
);
164
165
if
(!forNetgen) {
166
oc.
doRegister
(
"tls.taz-nodes"
,
new
Option_Bool
(
false
));
167
oc.
addSynonyme
(
"tls.taz-nodes"
,
"tls-guess.district-nodes"
,
true
);
168
oc.
addDescription
(
"tls.taz-nodes"
,
"TLS Building"
,
"Sets district nodes as tls-controlled"
);
// !!! describe
169
}
170
171
oc.
doRegister
(
"tls-guess.joining"
,
new
Option_Bool
(
false
));
172
oc.
addDescription
(
"tls-guess.joining"
,
"TLS Building"
,
"Includes node clusters into guess"
);
// !!! describe
173
174
oc.
doRegister
(
"tls.join"
,
new
Option_Bool
(
false
));
175
oc.
addSynonyme
(
"tls.join"
,
"try-join-tls"
,
true
);
176
oc.
addDescription
(
"tls.join"
,
"TLS Building"
,
"Tries to cluster tls-controlled nodes"
);
// !!! describe
177
178
// computational
179
oc.
doRegister
(
"tls.green.time"
,
new
Option_Integer
(31));
180
oc.
addSynonyme
(
"tls.green.time"
,
"traffic-light-green"
,
true
);
181
oc.
addDescription
(
"tls.green.time"
,
"TLS Building"
,
"Use INT as green phase duration"
);
182
183
oc.
doRegister
(
"tls.yellow.min-decel"
,
'D'
,
new
Option_Float
(3.0));
184
oc.
addSynonyme
(
"tls.yellow.min-decel"
,
"min-decel"
,
true
);
185
oc.
addDescription
(
"tls.yellow.min-decel"
,
"TLS Building"
,
"Defines smallest vehicle deceleration"
);
186
187
oc.
doRegister
(
"tls.yellow.patch-small"
,
new
Option_Bool
(
false
));
188
oc.
addSynonyme
(
"tls.yellow.patch-small"
,
"patch-small-tyellow"
,
true
);
189
oc.
addDescription
(
"tls.yellow.patch-small"
,
"TLS Building"
,
"Given yellow times are patched even if being too short"
);
190
191
oc.
doRegister
(
"tls.yellow.time"
,
new
Option_Integer
());
192
oc.
addSynonyme
(
"tls.yellow.time"
,
"traffic-light-yellow"
,
true
);
193
oc.
addDescription
(
"tls.yellow.time"
,
"TLS Building"
,
"Set INT as fixed time for yellow phase durations"
);
194
195
// tls-shifts
196
oc.
doRegister
(
"tls.half-offset"
,
new
Option_String
());
197
oc.
addSynonyme
(
"tls.half-offset"
,
"tl-logics.half-offset"
,
true
);
198
oc.
addDescription
(
"tls.half-offset"
,
"TLS Building"
,
"TLSs in STR will be shifted by half-phase"
);
199
200
oc.
doRegister
(
"tls.quarter-offset"
,
new
Option_String
());
201
oc.
addSynonyme
(
"tls.quarter-offset"
,
"tl-logics.quarter-offset"
,
true
);
202
oc.
addDescription
(
"tls.quarter-offset"
,
"TLS Building"
,
"TLSs in STR will be shifted by quarter-phase"
);
203
204
205
206
// edge pruning
207
oc.
doRegister
(
"keep-edges.min-speed"
,
new
Option_Float
());
208
oc.
addSynonyme
(
"keep-edges.min-speed"
,
"edges-min-speed"
,
true
);
209
oc.
addDescription
(
"keep-edges.min-speed"
,
"Edge Removal"
,
"Only keep edges with speed > FLOAT"
);
210
211
oc.
doRegister
(
"remove-edges.explicit"
,
new
Option_String
());
212
oc.
addSynonyme
(
"remove-edges.explicit"
,
"remove-edges"
);
213
oc.
addDescription
(
"remove-edges.explicit"
,
"Edge Removal"
,
"Remove edges in STR"
);
214
215
oc.
doRegister
(
"keep-edges.explicit"
,
new
Option_String
());
216
oc.
addSynonyme
(
"keep-edges.explicit"
,
"keep-edges"
);
217
oc.
addDescription
(
"keep-edges.explicit"
,
"Edge Removal"
,
"Only keep edges in STR"
);
218
219
oc.
doRegister
(
"keep-edges.input-file"
,
new
Option_FileName
());
220
oc.
addDescription
(
"keep-edges.input-file"
,
"Edge Removal"
,
"Only keep edges in FILE"
);
221
222
if
(!forNetgen) {
223
oc.
doRegister
(
"keep-edges.postload"
,
new
Option_Bool
(
false
));
224
oc.
addDescription
(
"keep-edges.postload"
,
"Edge Removal"
,
"Remove edges after joining"
);
225
}
226
227
oc.
doRegister
(
"keep-edges.in-boundary"
,
new
Option_String
());
228
oc.
addDescription
(
"keep-edges.in-boundary"
,
"Edge Removal"
,
"Only keep edges which are located within the given boundary (given either as CARTESIAN corner coordinates <xmin,ymin,xmax,ymax> or as polygon <x0,y0,x1,y1,...>)"
);
229
230
if
(!forNetgen) {
231
oc.
doRegister
(
"keep-edges.by-vclass"
,
new
Option_String
());
232
oc.
addDescription
(
"keep-edges.by-vclass"
,
"Edge Removal"
,
"Only keep edges which allow one of the vclasss in STR"
);
233
234
oc.
doRegister
(
"remove-edges.by-vclass"
,
new
Option_String
());
235
oc.
addDescription
(
"remove-edges.by-vclass"
,
"Edge Removal"
,
"Remove edges which allow only vclasses from STR"
);
236
237
oc.
doRegister
(
"keep-edges.by-type"
,
new
Option_String
());
238
oc.
addDescription
(
"keep-edges.by-type"
,
"Edge Removal"
,
"Only keep edges where type is in STR"
);
239
240
oc.
doRegister
(
"remove-edges.by-type"
,
new
Option_String
());
241
oc.
addDescription
(
"remove-edges.by-type"
,
"Edge Removal"
,
"Remove edges where type is in STR"
);
242
243
oc.
doRegister
(
"remove-edges.isolated"
,
new
Option_Bool
(
false
));
244
oc.
addSynonyme
(
"remove-edges.isolated"
,
"remove-isolated"
,
true
);
245
oc.
addDescription
(
"remove-edges.isolated"
,
"Edge Removal"
,
"Removes isolated edges"
);
246
}
247
248
249
// unregulated nodes options
250
oc.
doRegister
(
"keep-nodes-unregulated"
,
new
Option_Bool
(
false
));
251
oc.
addSynonyme
(
"keep-nodes-unregulated"
,
"keep-unregulated"
);
252
oc.
addDescription
(
"keep-nodes-unregulated"
,
"Unregulated Nodes"
,
"All nodes will be unregulated"
);
253
254
oc.
doRegister
(
"keep-nodes-unregulated.explicit"
,
new
Option_String
());
255
oc.
addSynonyme
(
"keep-nodes-unregulated.explicit"
,
"keep-unregulated.explicit"
);
256
oc.
addSynonyme
(
"keep-nodes-unregulated.explicit"
,
"keep-unregulated.nodes"
,
true
);
257
oc.
addDescription
(
"keep-nodes-unregulated.explicit"
,
"Unregulated Nodes"
,
"Do not regulate nodes in STR"
);
258
259
oc.
doRegister
(
"keep-nodes-unregulated.district-nodes"
,
new
Option_Bool
(
false
));
260
oc.
addSynonyme
(
"keep-nodes-unregulated.district-nodes"
,
"keep-unregulated.district-nodes"
);
261
oc.
addDescription
(
"keep-nodes-unregulated.district-nodes"
,
"Unregulated Nodes"
,
"Do not regulate district nodes"
);
262
263
264
// ramp guessing options
265
if
(!forNetgen) {
266
oc.
doRegister
(
"ramps.guess"
,
new
Option_Bool
(
false
));
267
oc.
addSynonyme
(
"ramps.guess"
,
"guess-ramps"
,
true
);
268
oc.
addDescription
(
"ramps.guess"
,
"Ramp Guessing"
,
"Enable ramp-guessing"
);
269
270
oc.
doRegister
(
"ramps.max-ramp-speed"
,
new
Option_Float
(-1));
271
oc.
addSynonyme
(
"ramps.max-ramp-speed"
,
"ramp-guess.max-ramp-speed"
,
true
);
272
oc.
addDescription
(
"ramps.max-ramp-speed"
,
"Ramp Guessing"
,
"Treat edges with speed > FLOAT as no ramps"
);
273
274
oc.
doRegister
(
"ramps.min-highway-speed"
,
new
Option_Float
((
SUMOReal
)(79 / 3.6)));
275
oc.
addSynonyme
(
"ramps.min-highway-speed"
,
"ramp-guess.min-highway-speed"
,
true
);
276
oc.
addDescription
(
"ramps.min-highway-speed"
,
"Ramp Guessing"
,
"Treat edges with speed < FLOAT as no highways"
);
277
278
oc.
doRegister
(
"ramps.ramp-length"
,
new
Option_Float
(100));
279
oc.
addSynonyme
(
"ramps.ramp-length"
,
"ramp-guess.ramp-length"
,
true
);
280
oc.
addDescription
(
"ramps.ramp-length"
,
"Ramp Guessing"
,
"Use FLOAT as ramp-length"
);
281
282
oc.
doRegister
(
"ramps.set"
,
new
Option_String
());
283
oc.
addSynonyme
(
"ramps.set"
,
"ramp-guess.explicite"
,
true
);
284
oc.
addDescription
(
"ramps.set"
,
"Ramp Guessing"
,
"Tries to handle the given edges as ramps"
);
285
}
286
}
287
288
289
bool
290
NBFrame::checkOptions
() {
291
OptionsCont
& oc =
OptionsCont::getOptions
();
292
//
293
if
(!oc.
isDefault
(
"tls-guess.joining"
)) {
294
WRITE_WARNING
(
"'--tls-guess.joining' was joined with '--tls.join'.\n Please use '--tls.join' in future only."
);
295
if
(!oc.
isSet
(
"tls.join"
)) {
296
oc.
set
(
"tls.join"
,
"true"
);
297
}
298
}
299
return
true
;
300
}
301
302
303
/****************************************************************************/
var
build
temp
tmp.znCyBrHNjL
4.0-0-0
sumo
sumo-0.15.0~dfsg
src
netbuild
NBFrame.cpp
Generated on Mon Mar 24 2014 09:53:11 for SUMO - Simulation of Urban MObility by
1.8.1.2