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-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 <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
49
#ifdef CHECK_MEMORY_LEAKS
50
#include <
foreign/nvwa/debug_new.h
>
51
#endif // CHECK_MEMORY_LEAKS
52
53
54
// ===========================================================================
55
// method definitions
56
// ===========================================================================
57
void
58
NIFrame::fillOptions
() {
59
OptionsCont
& oc =
OptionsCont::getOptions
();
60
// register input formats
61
oc.
doRegister
(
"sumo-net-file"
,
's'
,
new
Option_FileName
());
62
oc.
addSynonyme
(
"sumo-net-file"
,
"sumo-net"
,
true
);
63
oc.
addDescription
(
"sumo-net-file"
,
"Input"
,
"Read SUMO-net from FILE"
);
64
65
oc.
doRegister
(
"node-files"
,
'n'
,
new
Option_FileName
());
66
oc.
addSynonyme
(
"node-files"
,
"xml-node-files"
,
true
);
67
oc.
addSynonyme
(
"node-files"
,
"xml-nodes"
,
true
);
68
oc.
addSynonyme
(
"node-files"
,
"nodes"
);
69
oc.
addDescription
(
"node-files"
,
"Input"
,
"Read XML-node defs from FILE"
);
70
71
oc.
doRegister
(
"edge-files"
,
'e'
,
new
Option_FileName
());
72
oc.
addSynonyme
(
"edge-files"
,
"xml-edge-files"
,
true
);
73
oc.
addSynonyme
(
"edge-files"
,
"xml-edges"
,
true
);
74
oc.
addSynonyme
(
"edge-files"
,
"edges"
);
75
oc.
addDescription
(
"edge-files"
,
"Input"
,
"Read XML-edge defs from FILE"
);
76
77
oc.
doRegister
(
"connection-files"
,
'x'
,
new
Option_FileName
());
78
oc.
addSynonyme
(
"connection-files"
,
"xml-connection-files"
,
true
);
79
oc.
addSynonyme
(
"connection-files"
,
"xml-connections"
,
true
);
80
oc.
addSynonyme
(
"connection-files"
,
"connections"
);
81
oc.
addDescription
(
"connection-files"
,
"Input"
,
"Read XML-connection defs from FILE"
);
82
83
oc.
doRegister
(
"tllogic-files"
,
'i'
,
new
Option_FileName
());
84
oc.
addDescription
(
"tllogic-files"
,
"Input"
,
"Read XML-traffic light defs from FILE"
);
85
86
oc.
doRegister
(
"type-files"
,
't'
,
new
Option_FileName
());
87
oc.
addSynonyme
(
"type-files"
,
"xml-type-files"
,
true
);
88
oc.
addSynonyme
(
"type-files"
,
"xml-types"
,
true
);
89
oc.
addSynonyme
(
"type-files"
,
"types"
);
90
oc.
addDescription
(
"type-files"
,
"Input"
,
"Read XML-type defs from FILE"
);
91
92
oc.
doRegister
(
"shapefile-prefix"
,
new
Option_FileName
());
93
oc.
addSynonyme
(
"shapefile-prefix"
,
"shapefile"
);
94
oc.
addSynonyme
(
"shapefile-prefix"
,
"arcview"
,
true
);
95
oc.
addSynonyme
(
"shapefile-prefix"
,
"tiger"
,
true
);
96
oc.
addDescription
(
"shapefile-prefix"
,
"Input"
,
"Read shapefiles (ArcView, Tiger, ...) from files starting with 'FILE'"
);
97
98
oc.
doRegister
(
"dlr-navteq-prefix"
,
new
Option_FileName
());
99
oc.
addSynonyme
(
"dlr-navteq-prefix"
,
"dlr-navteq"
);
100
oc.
addSynonyme
(
"dlr-navteq-prefix"
,
"elmar2"
,
true
);
101
oc.
addDescription
(
"dlr-navteq-prefix"
,
"Input"
,
"Read converted Navteq GDF data (unsplitted Elmar-network) from path 'FILE'"
);
102
103
oc.
doRegister
(
"osm-files"
,
new
Option_FileName
());
104
oc.
addSynonyme
(
"osm-files"
,
"osm"
);
105
oc.
addDescription
(
"osm-files"
,
"Input"
,
"Read OSM-network from path 'FILE(s)'"
);
106
107
oc.
doRegister
(
"opendrive-files"
,
new
Option_FileName
());
108
oc.
addSynonyme
(
"opendrive-files"
,
"opendrive"
);
109
oc.
addDescription
(
"opendrive-files"
,
"Input"
,
"Read openDrive-network from FILE"
);
110
111
oc.
doRegister
(
"visum-file"
,
new
Option_FileName
());
112
oc.
addSynonyme
(
"visum-file"
,
"visum"
);
113
oc.
addDescription
(
"visum-file"
,
"Input"
,
"Read VISUM-net from FILE"
);
114
115
oc.
doRegister
(
"vissim-file"
,
new
Option_FileName
());
116
oc.
addSynonyme
(
"vissim-file"
,
"vissim"
);
117
oc.
addDescription
(
"vissim-file"
,
"Input"
,
"Read VISSIM-net from FILE"
);
118
119
oc.
doRegister
(
"robocup-dir"
,
new
Option_FileName
());
120
oc.
addSynonyme
(
"robocup-dir"
,
"robocup-net"
,
true
);
121
oc.
addSynonyme
(
"robocup-dir"
,
"robocup"
);
122
oc.
addDescription
(
"robocup-dir"
,
"Input"
,
"Read RoboCup-net from DIR"
);
123
124
oc.
doRegister
(
"matsim-files"
,
new
Option_FileName
());
125
oc.
addSynonyme
(
"matsim-files"
,
"matsim"
);
126
oc.
addDescription
(
"matsim-files"
,
"Input"
,
"Read MATsim-net from FILE"
);
127
128
oc.
doRegister
(
"itsumo-files"
,
new
Option_FileName
());
129
oc.
addSynonyme
(
"itsumo-files"
,
"itsumo"
);
130
oc.
addDescription
(
"itsumo-files"
,
"Input"
,
"Read ITSUMO-net from FILE"
);
131
132
#ifdef HAVE_MESOSIM // catchall for internal stuff
133
oc.
doRegister
(
"heightmap.shapefiles"
,
new
Option_FileName
());
134
oc.
addDescription
(
"heightmap.shapefiles"
,
"Input"
,
"Read heightmap from ArcGIS shapefile"
);
135
#endif // have HAVE_MESOSIM
136
137
// register basic processing options
138
oc.
doRegister
(
"ignore-errors"
,
new
Option_Bool
(
false
));
139
oc.
addSynonyme
(
"ignore-errors"
,
"dismiss-loading-errors"
,
true
);
140
oc.
addDescription
(
"ignore-errors"
,
"Processing"
,
"Continue on broken input"
);
141
142
oc.
doRegister
(
"ignore-errors.connections"
,
new
Option_Bool
(
false
));
143
oc.
addDescription
(
"ignore-errors.connections"
,
"Processing"
,
"Continue on invalid connections"
);
144
145
oc.
doRegister
(
"lanes-from-capacity.norm"
,
new
Option_Float
((
SUMOReal
) 1800));
146
oc.
addSynonyme
(
"lanes-from-capacity.norm"
,
"capacity-norm"
);
147
oc.
addDescription
(
"lanes-from-capacity.norm"
,
"Processing"
,
"The factor for flow to no. lanes conversion."
);
148
149
oc.
doRegister
(
"speed-in-kmh"
,
new
Option_Bool
(
false
));
150
oc.
addDescription
(
"speed-in-kmh"
,
"Processing"
,
"vmax is parsed as given in km/h (some)"
);
151
152
153
// register xml options
154
oc.
doRegister
(
"plain.keep-edge-shape"
,
new
Option_Bool
(
false
));
155
oc.
addSynonyme
(
"plain.keep-edge-shape"
,
"xml.keep-shape"
,
true
);
156
oc.
addDescription
(
"plain.keep-edge-shape"
,
"Processing"
,
"No node positions are added to the edge shape"
);
157
158
159
// register matsim options
160
oc.
doRegister
(
"matsim.keep-length"
,
new
Option_Bool
(
false
));
161
oc.
addDescription
(
"matsim.keep-length"
,
"Processing"
,
"The edge lengths given in the MATSIM-file will be kept."
);
162
163
oc.
doRegister
(
"matsim.lanes-from-capacity"
,
new
Option_Bool
(
false
));
164
oc.
addDescription
(
"matsim.lanes-from-capacity"
,
"Processing"
,
"The lane number will be computed from the capacity."
);
165
166
167
// register shapefile options
168
oc.
doRegister
(
"shapefile.street-id"
,
new
Option_String
());
169
oc.
addSynonyme
(
"shapefile.street-id"
,
"arcview.street-id"
,
true
);
170
oc.
addDescription
(
"shapefile.street-id"
,
"Processing"
,
"Read edge ids from column STR"
);
171
172
oc.
doRegister
(
"shapefile.from-id"
,
new
Option_String
());
173
oc.
addSynonyme
(
"shapefile.from-id"
,
"arcview.from-id"
,
true
);
174
oc.
addDescription
(
"shapefile.from-id"
,
"Processing"
,
"Read from-node ids from column STR"
);
175
176
oc.
doRegister
(
"shapefile.to-id"
,
new
Option_String
());
177
oc.
addSynonyme
(
"shapefile.to-id"
,
"arcview.to-id"
,
true
);
178
oc.
addDescription
(
"shapefile.to-id"
,
"Processing"
,
"Read to-node ids from column STR"
);
179
180
oc.
doRegister
(
"shapefile.type-id"
,
new
Option_String
());
181
oc.
addSynonyme
(
"shapefile.type-id"
,
"arcview.type-id"
,
true
);
182
oc.
addDescription
(
"shapefile.type-id"
,
"Processing"
,
"Read type ids from column STR"
);
183
184
oc.
doRegister
(
"shapefile.use-defaults-on-failure"
,
new
Option_Bool
(
false
));
185
oc.
addSynonyme
(
"shapefile.use-defaults-on-failure"
,
"arcview.use-defaults-on-failure"
,
true
);
186
oc.
addDescription
(
"shapefile.use-defaults-on-failure"
,
"Processing"
,
"Uses edge type defaults on problems"
);
187
188
oc.
doRegister
(
"shapefile.all-bidirectional"
,
new
Option_Bool
(
false
));
189
oc.
addSynonyme
(
"shapefile.all-bidirectional"
,
"shapefile.all-bidi"
);
190
oc.
addSynonyme
(
"shapefile.all-bidirectional"
,
"arcview.all-bidi"
,
true
);
191
oc.
addDescription
(
"shapefile.all-bidirectional"
,
"Processing"
,
"Insert edges in both directions"
);
192
193
oc.
doRegister
(
"shapefile.guess-projection"
,
new
Option_Bool
(
false
));
194
oc.
addSynonyme
(
"shapefile.guess-projection"
,
"arcview.guess-projection"
,
true
);
195
oc.
addDescription
(
"shapefile.guess-projection"
,
"Processing"
,
"Guess the proper projection"
);
196
197
198
// register vissim options
199
oc.
doRegister
(
"vissim.join-distance"
,
new
Option_Float
(5.0f));
200
oc.
addSynonyme
(
"vissim.join-distance"
,
"vissim.offset"
,
true
);
201
oc.
addDescription
(
"vissim.join-distance"
,
"Processing"
,
"Structure join offset"
);
202
203
oc.
doRegister
(
"vissim.default-speed"
,
new
Option_Float
(50.0f));
204
oc.
addDescription
(
"vissim.default-speed"
,
"Processing"
,
"Use FLOAT as default speed"
);
205
206
oc.
doRegister
(
"vissim.speed-norm"
,
new
Option_Float
(1.0f));
207
oc.
addDescription
(
"vissim.speed-norm"
,
"Processing"
,
"Factor for edge velocity"
);
208
209
oc.
doRegister
(
"vissim.report-unset-speeds"
,
new
Option_Bool
(
false
));
210
oc.
addDescription
(
"vissim.report-unset-speeds"
,
"Processing"
,
"Writes lanes without an explicit speed set."
);
211
212
213
// register visum options
214
oc.
doRegister
(
"visum.use-type-priority"
,
new
Option_Bool
(
false
));
215
oc.
addDescription
(
"visum.use-type-priority"
,
"Processing"
,
"Uses priorities from types"
);
216
217
oc.
doRegister
(
"visum.use-type-laneno"
,
new
Option_Bool
(
false
));
218
oc.
addDescription
(
"visum.use-type-laneno"
,
"Processing"
,
"Uses lane numbers from types"
);
219
220
oc.
doRegister
(
"visum.use-type-speed"
,
new
Option_Bool
(
false
));
221
oc.
addDescription
(
"visum.use-type-speed"
,
"Processing"
,
"Uses speeds from types"
);
222
223
oc.
doRegister
(
"visum.connector-speeds"
,
new
Option_Float
(100.));
224
oc.
addDescription
(
"visum.connector-speeds"
,
"Processing"
,
"Sets connector speed"
);
225
226
oc.
doRegister
(
"visum.connectors-lane-number"
,
new
Option_Integer
(3));
227
oc.
addSynonyme
(
"visum.connectors-lane-number"
,
"visum.connector-laneno"
,
true
);
228
oc.
addDescription
(
"visum.connectors-lane-number"
,
"Processing"
,
"Sets connector lane number"
);
229
230
oc.
doRegister
(
"visum.no-connectors"
,
new
Option_Bool
(
false
));
231
oc.
addDescription
(
"visum.no-connectors"
,
"Processing"
,
"Excludes connectors"
);
232
233
oc.
doRegister
(
"visum.recompute-lane-number"
,
new
Option_Bool
(
false
));
234
oc.
addSynonyme
(
"visum.recompute-lane-number"
,
"visum.recompute-laneno"
,
true
);
235
oc.
addDescription
(
"visum.recompute-lane-number"
,
"Processing"
,
"Computes the number of lanes from the edges' capacities"
);
236
237
oc.
doRegister
(
"visum.verbose-warnings"
,
new
Option_Bool
(
false
));
238
oc.
addDescription
(
"visum.verbose-warnings"
,
"Processing"
,
"Prints all warnings, some of which are due to VISUM misbehaviour"
);
239
240
241
// register osm options
242
oc.
doRegister
(
"osm.skip-duplicates-check"
,
new
Option_Bool
(
false
));
243
oc.
addDescription
(
"osm.skip-duplicates-check"
,
"Processing"
,
"Skips the check for duplicate nodes and edges."
);
244
245
oc.
doRegister
(
"osm.discard-tls"
,
new
Option_Bool
(
false
));
246
oc.
addDescription
(
"osm.discard-tls"
,
"Processing"
,
"Discards all traffic lights."
);
247
}
248
249
250
bool
251
NIFrame::checkOptions
() {
252
OptionsCont
& oc =
OptionsCont::getOptions
();
253
bool
ok = oc.
checkDependingSuboptions
(
"shapefile"
,
"shapefile."
);
254
ok &= oc.
checkDependingSuboptions
(
"visum-file"
,
"visum."
);
255
ok &= oc.
checkDependingSuboptions
(
"vissim-file"
,
"vissim."
);
256
#ifdef HAVE_PROJ
257
unsigned
numProjections = oc.
getBool
(
"simple-projection"
) + oc.
getBool
(
"proj.utm"
) + oc.
getBool
(
"proj.dhdn"
) + (oc.
getString
(
"proj"
).length() > 1);
258
if
((oc.
isSet
(
"osm-files"
) || oc.
isSet
(
"dlr-navteq-prefix"
) || oc.
isSet
(
"shapefile-prefix"
)) && numProjections == 0) {
259
if
(oc.
isDefault
(
"proj"
)) {
260
oc.
set
(
"proj.utm"
,
"true"
);
261
}
262
}
263
if
(oc.
isSet
(
"dlr-navteq-prefix"
) && oc.
isDefault
(
"proj.scale"
)) {
264
oc.
set
(
"proj.scale"
, std::string(
"5"
));
265
}
266
#endif
267
if
(oc.
isSet
(
"sumo-net-file"
)) {
268
if
(oc.
isWriteable
(
"no-turnarounds"
)) {
269
// changed default since turnarounds are loaded from the net file.
270
oc.
set
(
"no-turnarounds"
,
"true"
);
271
}
272
if
(oc.
isWriteable
(
"offset.disable-normalization"
)) {
273
// changed default since we wish to preserve the network as far as possible
274
oc.
set
(
"offset.disable-normalization"
,
"true"
);
275
}
276
}
277
return
ok;
278
}
279
280
281
282
/****************************************************************************/
283
build
buildd
sumo-0.15.0~dfsg
src
netimport
NIFrame.cpp
Generated on Wed Jul 18 2012 22:58:34 for SUMO - Simulation of Urban MObility by
1.8.1.1