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
NIFrame.cpp
Go to the documentation of this file.
1
/****************************************************************************/
9
// Sets and checks options for netimport
10
/****************************************************************************/
11
// SUMO, Simulation of Urban MObility; see http://sumo-sim.org/
12
// Copyright (C) 2001-2014 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 <iostream>
35
#include <fstream>
36
#include <
utils/options/Option.h
>
37
#include <
utils/options/OptionsCont.h
>
38
#include <
utils/options/OptionsIO.h
>
39
#include <
utils/common/MsgHandler.h
>
40
#include <
utils/common/ToString.h
>
41
#include "
NIFrame.h
"
42
#include <
utils/common/FileHelpers.h
>
43
#include <
utils/common/UtilExceptions.h
>
44
#include <
utils/common/RandHelper.h
>
45
#include <
netbuild/NBNetBuilder.h
>
46
#include <
netwrite/NWFrame.h
>
47
#include <
utils/common/SystemFrame.h
>
48
#include "
NIImporter_DlrNavteq.h
"
49
50
#ifdef CHECK_MEMORY_LEAKS
51
#include <
foreign/nvwa/debug_new.h
>
52
#endif // CHECK_MEMORY_LEAKS
53
54
55
// ===========================================================================
56
// method definitions
57
// ===========================================================================
58
void
59
NIFrame::fillOptions
() {
60
OptionsCont
& oc =
OptionsCont::getOptions
();
61
// register input formats
62
oc.
doRegister
(
"sumo-net-file"
,
's'
,
new
Option_FileName
());
63
oc.
addSynonyme
(
"sumo-net-file"
,
"sumo-net"
,
true
);
64
oc.
addDescription
(
"sumo-net-file"
,
"Input"
,
"Read SUMO-net from FILE"
);
65
66
oc.
doRegister
(
"node-files"
,
'n'
,
new
Option_FileName
());
67
oc.
addSynonyme
(
"node-files"
,
"xml-node-files"
,
true
);
68
oc.
addSynonyme
(
"node-files"
,
"xml-nodes"
,
true
);
69
oc.
addSynonyme
(
"node-files"
,
"nodes"
);
70
oc.
addDescription
(
"node-files"
,
"Input"
,
"Read XML-node defs from FILE"
);
71
72
oc.
doRegister
(
"edge-files"
,
'e'
,
new
Option_FileName
());
73
oc.
addSynonyme
(
"edge-files"
,
"xml-edge-files"
,
true
);
74
oc.
addSynonyme
(
"edge-files"
,
"xml-edges"
,
true
);
75
oc.
addSynonyme
(
"edge-files"
,
"edges"
);
76
oc.
addDescription
(
"edge-files"
,
"Input"
,
"Read XML-edge defs from FILE"
);
77
78
oc.
doRegister
(
"connection-files"
,
'x'
,
new
Option_FileName
());
79
oc.
addSynonyme
(
"connection-files"
,
"xml-connection-files"
,
true
);
80
oc.
addSynonyme
(
"connection-files"
,
"xml-connections"
,
true
);
81
oc.
addSynonyme
(
"connection-files"
,
"connections"
);
82
oc.
addDescription
(
"connection-files"
,
"Input"
,
"Read XML-connection defs from FILE"
);
83
84
oc.
doRegister
(
"tllogic-files"
,
'i'
,
new
Option_FileName
());
85
oc.
addDescription
(
"tllogic-files"
,
"Input"
,
"Read XML-traffic light defs from FILE"
);
86
87
oc.
doRegister
(
"type-files"
,
't'
,
new
Option_FileName
());
88
oc.
addSynonyme
(
"type-files"
,
"xml-type-files"
,
true
);
89
oc.
addSynonyme
(
"type-files"
,
"xml-types"
,
true
);
90
oc.
addSynonyme
(
"type-files"
,
"types"
);
91
oc.
addDescription
(
"type-files"
,
"Input"
,
"Read XML-type defs from FILE"
);
92
93
oc.
doRegister
(
"shapefile-prefix"
,
new
Option_FileName
());
94
oc.
addSynonyme
(
"shapefile-prefix"
,
"shapefile"
);
95
oc.
addSynonyme
(
"shapefile-prefix"
,
"arcview"
,
true
);
96
oc.
addSynonyme
(
"shapefile-prefix"
,
"tiger"
,
true
);
97
oc.
addDescription
(
"shapefile-prefix"
,
"Input"
,
"Read shapefiles (ArcView, Tiger, ...) from files starting with 'FILE'"
);
98
99
oc.
doRegister
(
"dlr-navteq-prefix"
,
new
Option_FileName
());
100
oc.
addSynonyme
(
"dlr-navteq-prefix"
,
"dlr-navteq"
);
101
oc.
addSynonyme
(
"dlr-navteq-prefix"
,
"elmar2"
,
true
);
102
oc.
addDescription
(
"dlr-navteq-prefix"
,
"Input"
,
"Read converted Navteq GDF data (unsplitted Elmar-network) from path 'FILE'"
);
103
104
oc.
doRegister
(
"osm-files"
,
new
Option_FileName
());
105
oc.
addSynonyme
(
"osm-files"
,
"osm"
);
106
oc.
addDescription
(
"osm-files"
,
"Input"
,
"Read OSM-network from path 'FILE(s)'"
);
107
108
oc.
doRegister
(
"opendrive-files"
,
new
Option_FileName
());
109
oc.
addSynonyme
(
"opendrive-files"
,
"opendrive"
);
110
oc.
addDescription
(
"opendrive-files"
,
"Input"
,
"Read OpenDRIVE-network from FILE"
);
111
112
oc.
doRegister
(
"visum-file"
,
new
Option_FileName
());
113
oc.
addSynonyme
(
"visum-file"
,
"visum"
);
114
oc.
addDescription
(
"visum-file"
,
"Input"
,
"Read VISUM-net from FILE"
);
115
116
oc.
doRegister
(
"vissim-file"
,
new
Option_FileName
());
117
oc.
addSynonyme
(
"vissim-file"
,
"vissim"
);
118
oc.
addDescription
(
"vissim-file"
,
"Input"
,
"Read VISSIM-net from FILE"
);
119
120
oc.
doRegister
(
"robocup-dir"
,
new
Option_FileName
());
121
oc.
addSynonyme
(
"robocup-dir"
,
"robocup-net"
,
true
);
122
oc.
addSynonyme
(
"robocup-dir"
,
"robocup"
);
123
oc.
addDescription
(
"robocup-dir"
,
"Input"
,
"Read RoboCup-net from DIR"
);
124
125
oc.
doRegister
(
"matsim-files"
,
new
Option_FileName
());
126
oc.
addSynonyme
(
"matsim-files"
,
"matsim"
);
127
oc.
addDescription
(
"matsim-files"
,
"Input"
,
"Read MATsim-net from FILE"
);
128
129
oc.
doRegister
(
"itsumo-files"
,
new
Option_FileName
());
130
oc.
addSynonyme
(
"itsumo-files"
,
"itsumo"
);
131
oc.
addDescription
(
"itsumo-files"
,
"Input"
,
"Read ITSUMO-net from FILE"
);
132
133
#ifdef HAVE_INTERNAL // catchall for internal stuff
134
oc.
doRegister
(
"heightmap.shapefiles"
,
new
Option_FileName
());
135
oc.
addDescription
(
"heightmap.shapefiles"
,
"Input"
,
"Read heightmap from ArcGIS shapefile"
);
136
#endif // have HAVE_INTERNAL
137
138
// register basic processing options
139
oc.
doRegister
(
"ignore-errors"
,
new
Option_Bool
(
false
));
140
oc.
addSynonyme
(
"ignore-errors"
,
"dismiss-loading-errors"
,
true
);
141
oc.
addDescription
(
"ignore-errors"
,
"Processing"
,
"Continue on broken input"
);
142
143
oc.
doRegister
(
"ignore-errors.connections"
,
new
Option_Bool
(
false
));
144
oc.
addDescription
(
"ignore-errors.connections"
,
"Processing"
,
"Continue on invalid connections"
);
145
146
oc.
doRegister
(
"show-errors.connections-first-try"
,
new
Option_Bool
(
false
));
147
oc.
addDescription
(
"show-errors.connections-first-try"
,
"Processing"
,
"Show errors in connections at parsing"
);
148
149
oc.
doRegister
(
"ignore-errors.edge-type"
,
new
Option_Bool
(
false
));
150
oc.
addDescription
(
"ignore-errors.edge-type"
,
"Processing"
,
"Continue on unknown edge types"
);
151
152
oc.
doRegister
(
"lanes-from-capacity.norm"
,
new
Option_Float
((
SUMOReal
) 1800));
153
oc.
addSynonyme
(
"lanes-from-capacity.norm"
,
"capacity-norm"
);
154
oc.
addDescription
(
"lanes-from-capacity.norm"
,
"Processing"
,
"The factor for flow to no. lanes conversion"
);
155
156
oc.
doRegister
(
"speed-in-kmh"
,
new
Option_Bool
(
false
));
157
oc.
addDescription
(
"speed-in-kmh"
,
"Processing"
,
"vmax is parsed as given in km/h (some)"
);
158
159
160
161
// register xml options
162
oc.
doRegister
(
"plain.extend-edge-shape"
,
new
Option_Bool
(
false
));
163
oc.
addSynonyme
(
"plain.extend-edge-shape"
,
"xml.keep-shape"
,
true
);
164
oc.
addDescription
(
"plain.extend-edge-shape"
,
"Processing"
,
"If edge shapes do not end at the node positions, extend them"
);
165
166
167
// register matsim options
168
oc.
doRegister
(
"matsim.keep-length"
,
new
Option_Bool
(
false
));
169
oc.
addDescription
(
"matsim.keep-length"
,
"Processing"
,
"The edge lengths given in the MATSIM-file will be kept"
);
170
171
oc.
doRegister
(
"matsim.lanes-from-capacity"
,
new
Option_Bool
(
false
));
172
oc.
addDescription
(
"matsim.lanes-from-capacity"
,
"Processing"
,
"The lane number will be computed from the capacity"
);
173
174
175
// register shapefile options
176
oc.
doRegister
(
"shapefile.street-id"
,
new
Option_String
());
177
oc.
addSynonyme
(
"shapefile.street-id"
,
"arcview.street-id"
,
true
);
178
oc.
addDescription
(
"shapefile.street-id"
,
"Processing"
,
"Read edge ids from column STR"
);
179
180
oc.
doRegister
(
"shapefile.from-id"
,
new
Option_String
());
181
oc.
addSynonyme
(
"shapefile.from-id"
,
"arcview.from-id"
,
true
);
182
oc.
addDescription
(
"shapefile.from-id"
,
"Processing"
,
"Read from-node ids from column STR"
);
183
184
oc.
doRegister
(
"shapefile.to-id"
,
new
Option_String
());
185
oc.
addSynonyme
(
"shapefile.to-id"
,
"arcview.to-id"
,
true
);
186
oc.
addDescription
(
"shapefile.to-id"
,
"Processing"
,
"Read to-node ids from column STR"
);
187
188
oc.
doRegister
(
"shapefile.type-id"
,
new
Option_String
());
189
oc.
addSynonyme
(
"shapefile.type-id"
,
"arcview.type-id"
,
true
);
190
oc.
addDescription
(
"shapefile.type-id"
,
"Processing"
,
"Read type ids from column STR"
);
191
192
oc.
doRegister
(
"shapefile.use-defaults-on-failure"
,
new
Option_Bool
(
false
));
193
oc.
addSynonyme
(
"shapefile.use-defaults-on-failure"
,
"arcview.use-defaults-on-failure"
,
true
);
194
oc.
addDescription
(
"shapefile.use-defaults-on-failure"
,
"Processing"
,
"Uses edge type defaults on problems"
);
195
196
oc.
doRegister
(
"shapefile.all-bidirectional"
,
new
Option_Bool
(
false
));
197
oc.
addSynonyme
(
"shapefile.all-bidirectional"
,
"shapefile.all-bidi"
);
198
oc.
addSynonyme
(
"shapefile.all-bidirectional"
,
"arcview.all-bidi"
,
true
);
199
oc.
addDescription
(
"shapefile.all-bidirectional"
,
"Processing"
,
"Insert edges in both directions"
);
200
201
oc.
doRegister
(
"shapefile.guess-projection"
,
new
Option_Bool
(
false
));
202
oc.
addSynonyme
(
"shapefile.guess-projection"
,
"arcview.guess-projection"
,
true
);
203
oc.
addDescription
(
"shapefile.guess-projection"
,
"Processing"
,
"Guess the proper projection"
);
204
205
206
// register vissim options
207
oc.
doRegister
(
"vissim.join-distance"
,
new
Option_Float
(5.0f));
208
oc.
addSynonyme
(
"vissim.join-distance"
,
"vissim.offset"
,
true
);
209
oc.
addDescription
(
"vissim.join-distance"
,
"Processing"
,
"Structure join offset"
);
210
211
oc.
doRegister
(
"vissim.default-speed"
,
new
Option_Float
(50.0f));
212
oc.
addDescription
(
"vissim.default-speed"
,
"Processing"
,
"Use FLOAT as default speed"
);
213
214
oc.
doRegister
(
"vissim.speed-norm"
,
new
Option_Float
(1.0f));
215
oc.
addDescription
(
"vissim.speed-norm"
,
"Processing"
,
"Factor for edge velocity"
);
216
217
oc.
doRegister
(
"vissim.report-unset-speeds"
,
new
Option_Bool
(
false
));
218
oc.
addDescription
(
"vissim.report-unset-speeds"
,
"Processing"
,
"Writes lanes without an explicit speed set"
);
219
220
221
// register visum options
222
oc.
doRegister
(
"visum.use-type-priority"
,
new
Option_Bool
(
false
));
223
oc.
addDescription
(
"visum.use-type-priority"
,
"Processing"
,
"Uses priorities from types"
);
224
225
oc.
doRegister
(
"visum.use-type-laneno"
,
new
Option_Bool
(
false
));
226
oc.
addDescription
(
"visum.use-type-laneno"
,
"Processing"
,
"Uses lane numbers from types"
);
227
228
oc.
doRegister
(
"visum.use-type-speed"
,
new
Option_Bool
(
false
));
229
oc.
addDescription
(
"visum.use-type-speed"
,
"Processing"
,
"Uses speeds from types"
);
230
231
oc.
doRegister
(
"visum.connector-speeds"
,
new
Option_Float
(100.));
232
oc.
addDescription
(
"visum.connector-speeds"
,
"Processing"
,
"Sets connector speed"
);
233
234
oc.
doRegister
(
"visum.connectors-lane-number"
,
new
Option_Integer
(3));
235
oc.
addSynonyme
(
"visum.connectors-lane-number"
,
"visum.connector-laneno"
,
true
);
236
oc.
addDescription
(
"visum.connectors-lane-number"
,
"Processing"
,
"Sets connector lane number"
);
237
238
oc.
doRegister
(
"visum.no-connectors"
,
new
Option_Bool
(
false
));
239
oc.
addDescription
(
"visum.no-connectors"
,
"Processing"
,
"Excludes connectors"
);
240
241
oc.
doRegister
(
"visum.recompute-lane-number"
,
new
Option_Bool
(
false
));
242
oc.
addSynonyme
(
"visum.recompute-lane-number"
,
"visum.recompute-laneno"
,
true
);
243
oc.
addDescription
(
"visum.recompute-lane-number"
,
"Processing"
,
"Computes the number of lanes from the edges' capacities"
);
244
245
oc.
doRegister
(
"visum.verbose-warnings"
,
new
Option_Bool
(
false
));
246
oc.
addDescription
(
"visum.verbose-warnings"
,
"Processing"
,
"Prints all warnings, some of which are due to VISUM misbehaviour"
);
247
248
249
// register osm options
250
oc.
doRegister
(
"osm.skip-duplicates-check"
,
new
Option_Bool
(
false
));
251
oc.
addDescription
(
"osm.skip-duplicates-check"
,
"Processing"
,
"Skips the check for duplicate nodes and edges"
);
252
253
oc.
doRegister
(
"osm.railway.oneway-default"
,
new
Option_Bool
(
true
));
254
oc.
addDescription
(
"osm.railway.oneway-default"
,
"Processing"
,
"Imports railway edges as one-way by default"
);
255
256
oc.
doRegister
(
"osm.elevation"
,
new
Option_Bool
(
false
));
257
oc.
addDescription
(
"osm.elevation"
,
"Processing"
,
"Imports elevation data"
);
258
259
// register opendrive options
260
oc.
doRegister
(
"opendrive.import-all-lanes"
,
new
Option_Bool
(
false
));
261
oc.
addDescription
(
"opendrive.import-all-lanes"
,
"Processing"
,
"Imports all lane types"
);
262
oc.
doRegister
(
"opendrive.ignore-widths"
,
new
Option_Bool
(
false
));
263
oc.
addDescription
(
"opendrive.ignore-widths"
,
"Processing"
,
"Whether lane widths shall be ignored."
);
264
265
266
267
268
// register some additional options
269
oc.
doRegister
(
"tls.discard-loaded"
,
new
Option_Bool
(
false
));
270
oc.
addDescription
(
"tls.discard-loaded"
,
"TLS Building"
,
"Does not instatiate traffic lights loaded from other formats than XML"
);
271
272
oc.
doRegister
(
"tls.discard-simple"
,
new
Option_Bool
(
false
));
273
oc.
addDescription
(
"tls.discard-simple"
,
"TLS Building"
,
"Does not instatiate traffic lights at geometry-like nodes loaded from other formats than XML"
);
274
}
275
276
277
bool
278
NIFrame::checkOptions
() {
279
OptionsCont
& oc =
OptionsCont::getOptions
();
280
bool
ok = oc.
checkDependingSuboptions
(
"shapefile"
,
"shapefile."
);
281
ok &= oc.
checkDependingSuboptions
(
"visum-file"
,
"visum."
);
282
ok &= oc.
checkDependingSuboptions
(
"vissim-file"
,
"vissim."
);
283
#ifdef HAVE_PROJ
284
unsigned
numProjections = oc.
getBool
(
"simple-projection"
) + oc.
getBool
(
"proj.utm"
) + oc.
getBool
(
"proj.dhdn"
) + (oc.
getString
(
"proj"
).length() > 1);
285
if
((oc.
isSet
(
"osm-files"
) || oc.
isSet
(
"dlr-navteq-prefix"
) || oc.
isSet
(
"shapefile-prefix"
)) && numProjections == 0) {
286
if
(oc.
isDefault
(
"proj"
)) {
287
oc.
set
(
"proj.utm"
,
"true"
);
288
}
289
}
290
if
(oc.
isSet
(
"dlr-navteq-prefix"
) && oc.
isDefault
(
"proj.scale"
)) {
291
oc.
set
(
"proj.scale"
,
toString
(
NIImporter_DlrNavteq::GEO_SCALE
));
292
}
293
#endif
294
if
(oc.
isSet
(
"sumo-net-file"
)) {
295
if
(oc.
isWriteable
(
"no-turnarounds"
)) {
296
// changed default since turnarounds are loaded from the net file.
297
oc.
set
(
"no-turnarounds"
,
"true"
);
298
}
299
if
(oc.
isWriteable
(
"offset.disable-normalization"
)) {
300
// changed default since we wish to preserve the network as far as possible
301
oc.
set
(
"offset.disable-normalization"
,
"true"
);
302
}
303
}
304
return
ok;
305
}
306
307
308
309
/****************************************************************************/
310
tmp
buildd
sumo-0.21.0+dfsg
src
netimport
NIFrame.cpp
Generated on Thu Nov 20 2014 19:49:56 for SUMO - Simulation of Urban MObility by
1.8.1.2