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.sourceforge.net/
12
// Copyright (C) 2001-2013 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
(
"lanes-from-capacity.norm"
,
new
Option_Float
((
SUMOReal
) 1800));
150
oc.
addSynonyme
(
"lanes-from-capacity.norm"
,
"capacity-norm"
);
151
oc.
addDescription
(
"lanes-from-capacity.norm"
,
"Processing"
,
"The factor for flow to no. lanes conversion."
);
152
153
oc.
doRegister
(
"speed-in-kmh"
,
new
Option_Bool
(
false
));
154
oc.
addDescription
(
"speed-in-kmh"
,
"Processing"
,
"vmax is parsed as given in km/h (some)"
);
155
156
157
158
// register xml options
159
oc.
doRegister
(
"plain.extend-edge-shape"
,
new
Option_Bool
(
false
));
160
oc.
addSynonyme
(
"plain.extend-edge-shape"
,
"xml.keep-shape"
,
true
);
161
oc.
addDescription
(
"plain.extend-edge-shape"
,
"Processing"
,
"If edge shapes do not end at the node positions, extend them"
);
162
163
164
// register matsim options
165
oc.
doRegister
(
"matsim.keep-length"
,
new
Option_Bool
(
false
));
166
oc.
addDescription
(
"matsim.keep-length"
,
"Processing"
,
"The edge lengths given in the MATSIM-file will be kept."
);
167
168
oc.
doRegister
(
"matsim.lanes-from-capacity"
,
new
Option_Bool
(
false
));
169
oc.
addDescription
(
"matsim.lanes-from-capacity"
,
"Processing"
,
"The lane number will be computed from the capacity."
);
170
171
172
// register shapefile options
173
oc.
doRegister
(
"shapefile.street-id"
,
new
Option_String
());
174
oc.
addSynonyme
(
"shapefile.street-id"
,
"arcview.street-id"
,
true
);
175
oc.
addDescription
(
"shapefile.street-id"
,
"Processing"
,
"Read edge ids from column STR"
);
176
177
oc.
doRegister
(
"shapefile.from-id"
,
new
Option_String
());
178
oc.
addSynonyme
(
"shapefile.from-id"
,
"arcview.from-id"
,
true
);
179
oc.
addDescription
(
"shapefile.from-id"
,
"Processing"
,
"Read from-node ids from column STR"
);
180
181
oc.
doRegister
(
"shapefile.to-id"
,
new
Option_String
());
182
oc.
addSynonyme
(
"shapefile.to-id"
,
"arcview.to-id"
,
true
);
183
oc.
addDescription
(
"shapefile.to-id"
,
"Processing"
,
"Read to-node ids from column STR"
);
184
185
oc.
doRegister
(
"shapefile.type-id"
,
new
Option_String
());
186
oc.
addSynonyme
(
"shapefile.type-id"
,
"arcview.type-id"
,
true
);
187
oc.
addDescription
(
"shapefile.type-id"
,
"Processing"
,
"Read type ids from column STR"
);
188
189
oc.
doRegister
(
"shapefile.use-defaults-on-failure"
,
new
Option_Bool
(
false
));
190
oc.
addSynonyme
(
"shapefile.use-defaults-on-failure"
,
"arcview.use-defaults-on-failure"
,
true
);
191
oc.
addDescription
(
"shapefile.use-defaults-on-failure"
,
"Processing"
,
"Uses edge type defaults on problems"
);
192
193
oc.
doRegister
(
"shapefile.all-bidirectional"
,
new
Option_Bool
(
false
));
194
oc.
addSynonyme
(
"shapefile.all-bidirectional"
,
"shapefile.all-bidi"
);
195
oc.
addSynonyme
(
"shapefile.all-bidirectional"
,
"arcview.all-bidi"
,
true
);
196
oc.
addDescription
(
"shapefile.all-bidirectional"
,
"Processing"
,
"Insert edges in both directions"
);
197
198
oc.
doRegister
(
"shapefile.guess-projection"
,
new
Option_Bool
(
false
));
199
oc.
addSynonyme
(
"shapefile.guess-projection"
,
"arcview.guess-projection"
,
true
);
200
oc.
addDescription
(
"shapefile.guess-projection"
,
"Processing"
,
"Guess the proper projection"
);
201
202
203
// register vissim options
204
oc.
doRegister
(
"vissim.join-distance"
,
new
Option_Float
(5.0f));
205
oc.
addSynonyme
(
"vissim.join-distance"
,
"vissim.offset"
,
true
);
206
oc.
addDescription
(
"vissim.join-distance"
,
"Processing"
,
"Structure join offset"
);
207
208
oc.
doRegister
(
"vissim.default-speed"
,
new
Option_Float
(50.0f));
209
oc.
addDescription
(
"vissim.default-speed"
,
"Processing"
,
"Use FLOAT as default speed"
);
210
211
oc.
doRegister
(
"vissim.speed-norm"
,
new
Option_Float
(1.0f));
212
oc.
addDescription
(
"vissim.speed-norm"
,
"Processing"
,
"Factor for edge velocity"
);
213
214
oc.
doRegister
(
"vissim.report-unset-speeds"
,
new
Option_Bool
(
false
));
215
oc.
addDescription
(
"vissim.report-unset-speeds"
,
"Processing"
,
"Writes lanes without an explicit speed set."
);
216
217
218
// register visum options
219
oc.
doRegister
(
"visum.use-type-priority"
,
new
Option_Bool
(
false
));
220
oc.
addDescription
(
"visum.use-type-priority"
,
"Processing"
,
"Uses priorities from types"
);
221
222
oc.
doRegister
(
"visum.use-type-laneno"
,
new
Option_Bool
(
false
));
223
oc.
addDescription
(
"visum.use-type-laneno"
,
"Processing"
,
"Uses lane numbers from types"
);
224
225
oc.
doRegister
(
"visum.use-type-speed"
,
new
Option_Bool
(
false
));
226
oc.
addDescription
(
"visum.use-type-speed"
,
"Processing"
,
"Uses speeds from types"
);
227
228
oc.
doRegister
(
"visum.connector-speeds"
,
new
Option_Float
(100.));
229
oc.
addDescription
(
"visum.connector-speeds"
,
"Processing"
,
"Sets connector speed"
);
230
231
oc.
doRegister
(
"visum.connectors-lane-number"
,
new
Option_Integer
(3));
232
oc.
addSynonyme
(
"visum.connectors-lane-number"
,
"visum.connector-laneno"
,
true
);
233
oc.
addDescription
(
"visum.connectors-lane-number"
,
"Processing"
,
"Sets connector lane number"
);
234
235
oc.
doRegister
(
"visum.no-connectors"
,
new
Option_Bool
(
false
));
236
oc.
addDescription
(
"visum.no-connectors"
,
"Processing"
,
"Excludes connectors"
);
237
238
oc.
doRegister
(
"visum.recompute-lane-number"
,
new
Option_Bool
(
false
));
239
oc.
addSynonyme
(
"visum.recompute-lane-number"
,
"visum.recompute-laneno"
,
true
);
240
oc.
addDescription
(
"visum.recompute-lane-number"
,
"Processing"
,
"Computes the number of lanes from the edges' capacities"
);
241
242
oc.
doRegister
(
"visum.verbose-warnings"
,
new
Option_Bool
(
false
));
243
oc.
addDescription
(
"visum.verbose-warnings"
,
"Processing"
,
"Prints all warnings, some of which are due to VISUM misbehaviour"
);
244
245
246
// register osm options
247
oc.
doRegister
(
"osm.skip-duplicates-check"
,
new
Option_Bool
(
false
));
248
oc.
addDescription
(
"osm.skip-duplicates-check"
,
"Processing"
,
"Skips the check for duplicate nodes and edges."
);
249
250
251
// register opendrive options
252
oc.
doRegister
(
"opendrive.import-all-lanes"
,
new
Option_Bool
(
false
));
253
oc.
addDescription
(
"opendrive.import-all-lanes"
,
"Processing"
,
"Imports all lane types."
);
254
oc.
doRegister
(
"opendrive.import-widths"
,
new
Option_Bool
(
false
));
255
oc.
addDescription
(
"opendrive.import-widths"
,
"Processing"
,
"Whether lane widths shall be imported."
);
256
257
258
259
260
// register some additional options
261
oc.
doRegister
(
"tls.discard-loaded"
,
new
Option_Bool
(
false
));
262
oc.
addDescription
(
"tls.discard-loaded"
,
"TLS Building"
,
"Does not instatiate traffic lights loaded from other formats than XML"
);
263
264
oc.
doRegister
(
"tls.discard-simple"
,
new
Option_Bool
(
false
));
265
oc.
addDescription
(
"tls.discard-simple"
,
"TLS Building"
,
"Does not instatiate traffic lights at geometry-like nodes loaded from other formats than XML"
);
266
}
267
268
269
bool
270
NIFrame::checkOptions
() {
271
OptionsCont
& oc =
OptionsCont::getOptions
();
272
bool
ok = oc.
checkDependingSuboptions
(
"shapefile"
,
"shapefile."
);
273
ok &= oc.
checkDependingSuboptions
(
"visum-file"
,
"visum."
);
274
ok &= oc.
checkDependingSuboptions
(
"vissim-file"
,
"vissim."
);
275
#ifdef HAVE_PROJ
276
unsigned
numProjections = oc.
getBool
(
"simple-projection"
) + oc.
getBool
(
"proj.utm"
) + oc.
getBool
(
"proj.dhdn"
) + (oc.
getString
(
"proj"
).length() > 1);
277
if
((oc.
isSet
(
"osm-files"
) || oc.
isSet
(
"dlr-navteq-prefix"
) || oc.
isSet
(
"shapefile-prefix"
)) && numProjections == 0) {
278
if
(oc.
isDefault
(
"proj"
)) {
279
oc.
set
(
"proj.utm"
,
"true"
);
280
}
281
}
282
if
(oc.
isSet
(
"dlr-navteq-prefix"
) && oc.
isDefault
(
"proj.scale"
)) {
283
oc.
set
(
"proj.scale"
,
toString
(
NIImporter_DlrNavteq::GEO_SCALE
));
284
}
285
#endif
286
if
(oc.
isSet
(
"sumo-net-file"
)) {
287
if
(oc.
isWriteable
(
"no-turnarounds"
)) {
288
// changed default since turnarounds are loaded from the net file.
289
oc.
set
(
"no-turnarounds"
,
"true"
);
290
}
291
if
(oc.
isWriteable
(
"offset.disable-normalization"
)) {
292
// changed default since we wish to preserve the network as far as possible
293
oc.
set
(
"offset.disable-normalization"
,
"true"
);
294
}
295
}
296
return
ok;
297
}
298
299
300
301
/****************************************************************************/
302
build
buildd
sumo-0.17.1~dfsg
src
netimport
NIFrame.cpp
Generated on Sun Jun 16 2013 17:30:17 for SUMO - Simulation of Urban MObility by
1.8.3.1