Eclipse SUMO - Simulation of Urban MObility
NIFrame.cpp
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3// Copyright (C) 2001-2022 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
21// Sets and checks options for netimport
22/****************************************************************************/
23#include <config.h>
24
25#include <string>
26#include <iostream>
27#include <fstream>
37#include <netwrite/NWFrame.h>
40#include "NIFrame.h"
41
42
43// ===========================================================================
44// method definitions
45// ===========================================================================
46void
47NIFrame::fillOptions(bool forNetedit) {
49 // register input formats
50 oc.doRegister("sumo-net-file", 's', new Option_FileName());
51 oc.addSynonyme("sumo-net-file", "sumo-net", true);
52 oc.addSynonyme("sumo-net-file", "net-file");
53 oc.addDescription("sumo-net-file", "Input", "Read SUMO-net from FILE");
54 oc.addXMLDefault("sumo-net-file", "net");
55
56 oc.doRegister("node-files", 'n', new Option_FileName());
57 oc.addSynonyme("node-files", "xml-node-files", true);
58 oc.addSynonyme("node-files", "xml-nodes", true);
59 oc.addSynonyme("node-files", "nodes");
60 oc.addDescription("node-files", "Input", "Read XML-node defs from FILE");
61
62 oc.doRegister("edge-files", 'e', new Option_FileName());
63 oc.addSynonyme("edge-files", "xml-edge-files", true);
64 oc.addSynonyme("edge-files", "xml-edges", true);
65 oc.addSynonyme("edge-files", "edges");
66 oc.addDescription("edge-files", "Input", "Read XML-edge defs from FILE");
67
68 oc.doRegister("connection-files", 'x', new Option_FileName());
69 oc.addSynonyme("connection-files", "xml-connection-files", true);
70 oc.addSynonyme("connection-files", "xml-connections", true);
71 oc.addSynonyme("connection-files", "connections");
72 oc.addDescription("connection-files", "Input", "Read XML-connection defs from FILE");
73
74 oc.doRegister("tllogic-files", 'i', new Option_FileName());
75 oc.addDescription("tllogic-files", "Input", "Read XML-traffic light defs from FILE");
76
77 oc.doRegister("type-files", 't', new Option_FileName());
78 oc.addSynonyme("type-files", "xml-type-files", true);
79 oc.addSynonyme("type-files", "xml-types", true);
80 oc.addSynonyme("type-files", "types");
81 oc.addDescription("type-files", "Input", "Read XML-type defs from FILE");
82
83 if (!forNetedit) {
84 // would cause confusion because netedit loads stops and shapes using option --additional-files
85 oc.doRegister("ptstop-files", new Option_FileName());
86 oc.addDescription("ptstop-files", "Input", "Reads public transport stops from FILE");
87 oc.doRegister("ptline-files", new Option_FileName());
88 oc.addDescription("ptline-files", "Input", "Reads public transport lines from FILE");
89 oc.doRegister("polygon-files", new Option_FileName());
90 oc.addDescription("polygon-files", "Input", "Reads polygons from FILE for embedding in network where applicable");
91 }
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 oc.doRegister("heightmap.shapefiles", new Option_FileName());
134 oc.addDescription("heightmap.shapefiles", "Input", "Read heightmap from ArcGIS shapefile");
135
136 oc.doRegister("heightmap.geotiff", new Option_FileName());
137 oc.addDescription("heightmap.geotiff", "Input", "Read heightmap from GeoTIFF");
138
139 // need to do this here to be able to check for network and route input options
141
142 // register basic processing options
143 oc.doRegister("ignore-errors", new Option_Bool(false));
144 oc.addSynonyme("ignore-errors", "dismiss-loading-errors", true);
145 oc.addDescription("ignore-errors", "Report", "Continue on broken input");
146
147 oc.doRegister("ignore-errors.connections", new Option_Bool(false));
148 oc.addDescription("ignore-errors.connections", "Report", "Continue on invalid connections");
149
150 oc.doRegister("show-errors.connections-first-try", new Option_Bool(false));
151 oc.addDescription("show-errors.connections-first-try", "Report", "Show errors in connections at parsing");
152
153 oc.doRegister("ignore-errors.edge-type", new Option_Bool(false));
154 oc.addDescription("ignore-errors.edge-type", "Report", "Continue on unknown edge types");
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");
158
159 oc.doRegister("construction-date", new Option_String());
160 oc.addDescription("construction-date", "Processing", "Use YYYY-MM-DD date to determine the readiness of features under construction");
161
162 oc.doRegister("flatten", new Option_Bool(false));
163 oc.addDescription("flatten", "Processing", "Remove all z-data");
164
165 oc.doRegister("discard-params", new Option_StringVector());
166 oc.addDescription("discard-params", "Formats", "Remove the list of keys from all params");
167
168 oc.doRegister("ignore-change-restrictions", new Option_StringVector(StringVector({"authority"})));
169 oc.addDescription("ignore-change-restrictions", "Formats", "List vehicle classes that may ignore lane changing restrictions ('all' discards all restrictions)");
170
171 // register xml options
172 oc.doRegister("plain.extend-edge-shape", new Option_Bool(false));
173 oc.addSynonyme("plain.extend-edge-shape", "xml.keep-shape", true);
174 oc.addDescription("plain.extend-edge-shape", "Processing", "If edge shapes do not end at the node positions, extend them");
175
176 // register osm options
177 oc.doRegister("osm.skip-duplicates-check", new Option_Bool(false));
178 oc.addDescription("osm.skip-duplicates-check", "Formats", "Skips the check for duplicate nodes and edges");
179
180 oc.doRegister("osm.elevation", new Option_Bool(false));
181 oc.addDescription("osm.elevation", "Formats", "Imports elevation data");
182
183 oc.doRegister("osm.layer-elevation", new Option_Float(0));
184 oc.addDescription("osm.layer-elevation", "Formats", "Reconstruct (relative) elevation based on layer data. Each layer is raised by FLOAT m");
185
186 oc.doRegister("osm.layer-elevation.max-grade", new Option_Float(10));
187 oc.addDescription("osm.layer-elevation.max-grade", "Formats", "Maximum grade threshold in % at 50km/h when reconstrucing elevation based on layer data. The value is scaled according to road speed.");
188
189 oc.doRegister("osm.oneway-spread-right", new Option_Bool(false));
190 oc.addDescription("osm.oneway-spread-right", "Formats", "Whether one-way roads should be spread to the side instead of centered");
191
192 oc.doRegister("osm.lane-access", new Option_Bool(false));
193 oc.addDescription("osm.lane-access", "Formats", "Import lane-specific access restrictions");
194
195 oc.doRegister("osm.bike-access", new Option_Bool(false));
196 oc.addDescription("osm.bike-access", "Formats", "Check additional attributes to fix directions and permissions on bike paths");
197
198 oc.doRegister("osm.sidewalks", new Option_Bool(false));
199 oc.addDescription("osm.sidewalks", "Formats", "Import sidewalks");
200
201 oc.doRegister("osm.turn-lanes", new Option_Bool(false));
202 oc.addDescription("osm.turn-lanes", "Formats", "Import turning arrows from OSM to help with connection building");
203
204 oc.doRegister("osm.stop-output.length", new Option_Float(25));
205 oc.addDescription("osm.stop-output.length", "Formats", "The default length of a public transport stop in FLOAT m");
206 oc.doRegister("osm.stop-output.length.bus", new Option_Float(15));
207 oc.addDescription("osm.stop-output.length.bus", "Formats", "The default length of a bus stop in FLOAT m");
208 oc.doRegister("osm.stop-output.length.tram", new Option_Float(25));
209 oc.addDescription("osm.stop-output.length.tram", "Formats", "The default length of a tram stop in FLOAT m");
210 oc.doRegister("osm.stop-output.length.train", new Option_Float(200));
211 oc.addDescription("osm.stop-output.length.train", "Formats", "The default length of a train stop in FLOAT m");
212
213 oc.doRegister("osm.all-attributes", new Option_Bool(false));
214 oc.addDescription("osm.all-attributes", "Formats", "Whether additional attributes shall be imported");
215
216 oc.doRegister("osm.extra-attributes", new Option_StringVector(StringVector({ "bridge", "tunnel", "layer", "postal_code" })));
217 oc.addDescription("osm.extra-attributes", "Formats", "List of additional attributes that shall be imported from OSM via osm.all-attributes (set 'all' to import all)");
218
219 oc.doRegister("osm.speedlimit-none", new Option_Float(39.4444));
220 oc.addDescription("osm.speedlimit-none", "Formats", "The speed limit to be set when there is no actual speed limit in reality");
221
222 // register matsim options
223 oc.doRegister("matsim.keep-length", new Option_Bool(false));
224 oc.addDescription("matsim.keep-length", "Formats", "The edge lengths given in the MATSIM-file will be kept");
225
226 oc.doRegister("matsim.lanes-from-capacity", new Option_Bool(false));
227 oc.addDescription("matsim.lanes-from-capacity", "Formats", "The lane number will be computed from the capacity");
228
229
230 // register shapefile options
231 oc.doRegister("shapefile.street-id", new Option_String());
232 oc.addSynonyme("shapefile.street-id", "arcview.street-id", true);
233 oc.addDescription("shapefile.street-id", "Formats", "Read edge ids from column STR");
234
235 oc.doRegister("shapefile.from-id", new Option_String());
236 oc.addSynonyme("shapefile.from-id", "arcview.from-id", true);
237 oc.addDescription("shapefile.from-id", "Formats", "Read from-node ids from column STR");
238
239 oc.doRegister("shapefile.to-id", new Option_String());
240 oc.addSynonyme("shapefile.to-id", "arcview.to-id", true);
241 oc.addDescription("shapefile.to-id", "Formats", "Read to-node ids from column STR");
242
243 oc.doRegister("shapefile.type-id", new Option_String());
244 oc.addSynonyme("shapefile.type-id", "arcview.type-id", true);
245 oc.addDescription("shapefile.type-id", "Formats", "Read type ids from column STR");
246
247 oc.doRegister("shapefile.laneNumber", new Option_String());
248 oc.addDescription("shapefile.laneNumber", "Formats", "Read lane number from column STR");
249
250 oc.doRegister("shapefile.speed", new Option_String());
251 oc.addDescription("shapefile.speed", "Formats", "Read speed from column STR");
252
253 oc.doRegister("shapefile.name", new Option_String());
254 oc.addDescription("shapefile.name", "Formats", "Read (non-unique) name from column STR");
255
256 oc.doRegister("shapefile.node-join-dist", new Option_Float(0));
257 oc.addDescription("shapefile.node-join-dist", "Formats", "Distance threshold for determining whether distinct shapes are connected (used when from-id and to-id are not available)");
258
259 oc.doRegister("shapefile.add-params", new Option_StringVector());
260 oc.addDescription("shapefile.add-params", "Formats", "Add the list of field names as edge params");
261
262 oc.doRegister("shapefile.use-defaults-on-failure", new Option_Bool(false));
263 oc.addSynonyme("shapefile.use-defaults-on-failure", "arcview.use-defaults-on-failure", true);
264 oc.addDescription("shapefile.use-defaults-on-failure", "Formats", "Uses edge type defaults on problems");
265
266 oc.doRegister("shapefile.all-bidirectional", new Option_Bool(false));
267 oc.addSynonyme("shapefile.all-bidirectional", "shapefile.all-bidi");
268 oc.addSynonyme("shapefile.all-bidirectional", "arcview.all-bidi", true);
269 oc.addDescription("shapefile.all-bidirectional", "Formats", "Insert edges in both directions");
270
271 oc.doRegister("shapefile.guess-projection", new Option_Bool(false));
272 oc.addSynonyme("shapefile.guess-projection", "arcview.guess-projection", true);
273 oc.addDescription("shapefile.guess-projection", "Formats", "Guess the proper projection");
274
275 oc.doRegister("shapefile.traditional-axis-mapping", new Option_Bool(false));
276 oc.addDescription("shapefile.traditional-axis-mapping", "Formats", "Use traditional axis order (lon, lat)");
277
278
279 // register dlr-navteq options
280 oc.doRegister("dlr-navteq.tolerant-permissions", new Option_Bool(false));
281 oc.addDescription("dlr-navteq.tolerant-permissions", "Formats", "Allow more vehicle classes by default");
282
283 oc.doRegister("dlr-navteq.keep-length", new Option_Bool(false));
284 oc.addDescription("dlr-navteq.keep-length", "Formats", "The edge lengths given in the DLR Navteq-file will be kept");
285
286
287 // register vissim options
288 oc.doRegister("vissim.join-distance", new Option_Float(5.0f));
289 oc.addSynonyme("vissim.join-distance", "vissim.offset", true);
290 oc.addDescription("vissim.join-distance", "Formats", "Structure join offset");
291
292 oc.doRegister("vissim.default-speed", new Option_Float(50.0f));
293 oc.addDescription("vissim.default-speed", "Formats", "Use FLOAT as default speed");
294
295 oc.doRegister("vissim.speed-norm", new Option_Float(1.0f));
296 oc.addDescription("vissim.speed-norm", "Formats", "Factor for edge velocity");
297
298 oc.doRegister("vissim.report-unset-speeds", new Option_Bool(false));
299 oc.addDescription("vissim.report-unset-speeds", "Formats", "Writes lanes without an explicit speed set");
300
301
302 // register visum options
303 oc.doRegister("visum.language-file", new Option_FileName());
304 oc.addDescription("visum.language-file", "Formats", "Load language mappings from FILE");
305
306 oc.doRegister("visum.use-type-priority", new Option_Bool(false));
307 oc.addDescription("visum.use-type-priority", "Formats", "Uses priorities from types");
308
309 oc.doRegister("visum.use-type-laneno", new Option_Bool(false));
310 oc.addDescription("visum.use-type-laneno", "Formats", "Uses lane numbers from types");
311
312 oc.doRegister("visum.use-type-speed", new Option_Bool(false));
313 oc.addDescription("visum.use-type-speed", "Formats", "Uses speeds from types");
314
315 oc.doRegister("visum.connector-speeds", new Option_Float(100.));
316 oc.addDescription("visum.connector-speeds", "Formats", "Sets connector speed");
317
318 oc.doRegister("visum.connectors-lane-number", new Option_Integer(3));
319 oc.addSynonyme("visum.connectors-lane-number", "visum.connector-laneno", true);
320 oc.addDescription("visum.connectors-lane-number", "Formats", "Sets connector lane number");
321
322 oc.doRegister("visum.no-connectors", new Option_Bool(true));
323 oc.addDescription("visum.no-connectors", "Formats", "Excludes connectors");
324
325 oc.doRegister("visum.recompute-lane-number", new Option_Bool(false));
326 oc.addSynonyme("visum.recompute-lane-number", "visum.recompute-laneno", true);
327 oc.addDescription("visum.recompute-lane-number", "Formats", "Computes the number of lanes from the edges' capacities");
328
329 oc.doRegister("visum.verbose-warnings", new Option_Bool(false));
330 oc.addDescription("visum.verbose-warnings", "Formats", "Prints all warnings, some of which are due to VISUM misbehaviour");
331
332 oc.doRegister("visum.lanes-from-capacity.norm", new Option_Float(1800.));
333 oc.addSynonyme("visum.lanes-from-capacity.norm", "capacity-norm", true);
334 oc.addSynonyme("visum.lanes-from-capacity.norm", "lanes-from-capacity.norm");
335 oc.addDescription("visum.lanes-from-capacity.norm", "Formats", "The factor for flow to no. lanes conversion");
336
337
338 // register opendrive options
339 oc.doRegister("opendrive.import-all-lanes", new Option_Bool(false));
340 oc.addDescription("opendrive.import-all-lanes", "Formats", "Imports all lane types");
341 oc.doRegister("opendrive.ignore-widths", new Option_Bool(false));
342 oc.addDescription("opendrive.ignore-widths", "Formats", "Whether lane widths shall be ignored.");
343 oc.doRegister("opendrive.curve-resolution", new Option_Float(2.0));
344 oc.addDescription("opendrive.curve-resolution", "Formats", "The geometry resolution in m when importing curved geometries as line segments.");
345 oc.doRegister("opendrive.advance-stopline", new Option_Float(0.0));
346 oc.addDescription("opendrive.advance-stopline", "Formats", "Allow stop lines to be built beyond the start of the junction if the geometries allow so");
347 oc.doRegister("opendrive.min-width", new Option_Float(1.8));
348 oc.addDescription("opendrive.min-width", "Formats", "The minimum lane width for determining start or end of variable-width lanes");
349 oc.doRegister("opendrive.internal-shapes", new Option_Bool(false));
350 oc.addDescription("opendrive.internal-shapes", "Formats", "Import internal lane shapes");
351 oc.doRegister("opendrive.position-ids", new Option_Bool(false));
352 oc.addDescription("opendrive.position-ids", "Formats", "Sets edge-id based on road-id and offset in m (legacy)");
353 oc.doRegister("opendrive.lane-shapes", new Option_Bool(false));
354 oc.addDescription("opendrive.lane-shapes", "Formats", "Use custom lane shapes to compensate discarded lane types");
355
356 // register some additional options
357 oc.doRegister("tls.discard-loaded", new Option_Bool(false));
358 oc.addDescription("tls.discard-loaded", "TLS Building", "Does not instatiate traffic lights loaded from other formats than plain-XML");
359
360 oc.doRegister("tls.discard-simple", new Option_Bool(false));
361 oc.addDescription("tls.discard-simple", "TLS Building", "Does not instatiate traffic lights at geometry-like nodes loaded from other formats than plain-XML");
362
363 // register railway options
364 oc.doRegister("railway.signals.discard", new Option_Bool(false));
365 oc.addDescription("railway.signals.discard", "Railway", "Discard all railway signal information loaded from other formats than plain-xml");
366}
367
368
369bool
372 bool ok = oc.checkDependingSuboptions("shapefile", "shapefile.");
373 ok &= oc.checkDependingSuboptions("visum-file", "visum.");
374 ok &= oc.checkDependingSuboptions("vissim-file", "vissim.");
375#ifdef PROJ_API_FILE
376 int numProjections = oc.getBool("simple-projection") + oc.getBool("proj.utm") + oc.getBool("proj.dhdn") + (oc.getString("proj").length() > 1);
377 if ((oc.isSet("osm-files") || oc.isSet("dlr-navteq-prefix") || oc.isSet("shapefile-prefix")) && numProjections == 0) {
378 if (oc.isDefault("proj")) {
379 oc.set("proj.utm", "true");
380 }
381 }
382 if (oc.isSet("dlr-navteq-prefix") && oc.isDefault("proj.scale")) {
384 }
385#else
386 if ((oc.isSet("osm-files") || oc.isSet("dlr-navteq-prefix") || oc.isSet("shapefile-prefix")) && !oc.getBool("simple-projection")) {
387 WRITE_ERROR(TL("Cannot import network data without PROJ-Library. Please install package proj before building sumo"));
388 ok = false;
389 }
390#endif
391 if (oc.isSet("sumo-net-file")) {
392 if (oc.isWriteable("no-turnarounds")) {
393 // changed default since turnarounds are loaded from the net file.
394 oc.set("no-turnarounds", "true");
395 }
396 if (oc.isWriteable("offset.disable-normalization")) {
397 // changed default since we wish to preserve the network as far as possible
398 oc.set("offset.disable-normalization", "true");
399 }
400 if (oc.isWriteable("geometry.max-grade.fix")) {
401 // changed default since we wish to preserve the network as far as possible
402 oc.set("geometry.max-grade.fix", "false");
403 }
404 if (oc.isWriteable("geometry.min-radius.fix.railways")) {
405 // changed default since we wish to preserve the network as far as possible
406 oc.set("geometry.min-radius.fix.railways", "false");
407 }
408 }
409 if (!oc.isSet("type-files")) {
410 const char* sumoPath = std::getenv("SUMO_HOME");
411 if (sumoPath == nullptr) {
412 WRITE_WARNING(TL("Environment variable SUMO_HOME is not set, using built in type maps."));
413 } else {
414 const std::string path = sumoPath + std::string("/data/typemap/");
415 if (oc.isSet("osm-files")) {
416 oc.setDefault("type-files", path + "osmNetconvert.typ.xml");
417 }
418 if (oc.isSet("opendrive-files")) {
419 oc.setDefault("type-files", path + "opendriveNetconvert.typ.xml");
420 }
421 }
422 }
423 if (oc.isSet("opendrive-files")) {
424 if (oc.isDefault("tls.left-green.time")) {
425 // legacy behavior. see #2114
426 oc.setDefault("tls.left-green.time", "0");
427 }
428 if (oc.isDefault("rectangular-lane-cut")) {
429 // a better interpretation of imported geometries
430 oc.setDefault("rectangular-lane-cut", "true");
431 }
432 if (oc.isDefault("geometry.max-grade.fix")) {
433 // a better interpretation of imported geometries
434 oc.setDefault("geometry.max-grade.fix", "false");
435 }
436 }
437 if (!oc.isDefault("osm.extra-attributes") && oc.isDefault("osm.all-attributes")) {
438 oc.setDefault("osm.all-attributes", "true");
439 }
440 return ok;
441}
442
443
444/****************************************************************************/
#define WRITE_ERROR(msg)
Definition: MsgHandler.h:274
#define WRITE_WARNING(msg)
Definition: MsgHandler.h:265
#define TL(string)
Definition: MsgHandler.h:282
std::vector< std::string > StringVector
Definition of a vector of strings.
Definition: Option.h:43
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
Definition: NIFrame.cpp:370
static void fillOptions(bool forNetedit=false)
Inserts options used by the network importer and network building modules.
Definition: NIFrame.cpp:47
static const std::string GEO_SCALE
scaling factor for geo coordinates (DLRNavteq format uses this to increase floating point precisions)
An integer-option.
Definition: Option.h:289
A storage for options typed value containers)
Definition: OptionsCont.h:89
void addDescription(const std::string &name, const std::string &subtopic, const std::string &description)
Adds a description for an option.
void doRegister(const std::string &name, Option *v)
Adds an option under the given name.
Definition: OptionsCont.cpp:76
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
bool isWriteable(const std::string &name)
Returns the information whether the named option may be set.
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
void addSynonyme(const std::string &name1, const std::string &name2, bool isDeprecated=false)
Adds a synonyme for an options name (any order)
Definition: OptionsCont.cpp:97
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
bool setDefault(const std::string &name, const std::string &value)
Sets the given value for the named option as new default value.
bool set(const std::string &name, const std::string &value, const bool append=false)
Sets the given value for the named option.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
bool checkDependingSuboptions(const std::string &name, const std::string &prefix) const
Checks whether an option is set, which has options with a prefix depending on it.
void addXMLDefault(const std::string &name, const std::string &xmlRoot="")
Adds an XML root element to handle by default. The special root "" denotes the default handler.
static OptionsCont & getOptions()
Retrieves the options.
Definition: OptionsCont.cpp:59
static void addReportOptions(OptionsCont &oc)
Adds reporting options to the given container.
Definition: SystemFrame.cpp:67