00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifdef _MSC_VER
00025 #include <windows_config.h>
00026 #else
00027 #include <config.h>
00028 #endif
00029
00030 #include <string>
00031 #include <iostream>
00032 #include <fstream>
00033 #include <utils/options/Option.h>
00034 #include <utils/options/OptionsCont.h>
00035 #include <utils/options/OptionsIO.h>
00036 #include <utils/common/MsgHandler.h>
00037 #include <utils/common/ToString.h>
00038 #include "NIOptionsIO.h"
00039 #include <utils/common/FileHelpers.h>
00040 #include <utils/common/UtilExceptions.h>
00041 #include <utils/common/RandHelper.h>
00042 #include <netbuild/NBNetBuilder.h>
00043 #include <utils/common/SystemFrame.h>
00044 #include <utils/geom/GeoConvHelper.h>
00045
00046 #ifdef CHECK_MEMORY_LEAKS
00047 #include <foreign/nvwa/debug_new.h>
00048 #endif // CHECK_MEMORY_LEAKS
00049
00050
00051
00052
00053
00054 void
00055 NIOptionsIO::fillOptions() {
00056 OptionsCont &oc = OptionsCont::getOptions();
00057 oc.addCallExample("-c <CONFIGURATION>");
00058 oc.addCallExample("-n ./nodes.xml -e ./edges.xml -v -t ./owntypes.xml");
00059
00060
00061
00062 SystemFrame::addConfigurationOptions(oc);
00063 oc.addOptionSubTopic("Input");
00064 oc.addOptionSubTopic("Output");
00065 GeoConvHelper::addProjectionOptions(oc);
00066 oc.addOptionSubTopic("TLS Building");
00067 oc.addOptionSubTopic("Ramp Guessing");
00068 oc.addOptionSubTopic("Edge Removal");
00069 oc.addOptionSubTopic("Unregulated Nodes");
00070 oc.addOptionSubTopic("Processing");
00071 oc.addOptionSubTopic("Building Defaults");
00072 SystemFrame::addReportOptions(oc);
00073
00074
00075
00076 oc.doRegister("sumo-net", 's', new Option_FileName());
00077 oc.addDescription("sumo-net", "Input", "Read SUMO-net from FILE");
00078
00079 oc.doRegister("xml-node-files", 'n', new Option_FileName());
00080 oc.addSynonyme("xml-node-files", "xml-nodes");
00081 oc.addDescription("xml-node-files", "Input", "Read XML-node defs from FILE");
00082
00083 oc.doRegister("xml-edge-files", 'e', new Option_FileName());
00084 oc.addSynonyme("xml-edge-files", "xml-edges");
00085 oc.addDescription("xml-edge-files", "Input", "Read XML-edge defs from FILE");
00086
00087 oc.doRegister("xml-connection-files", 'x', new Option_FileName());
00088 oc.addSynonyme("xml-connection-files", "xml-connections");
00089 oc.addDescription("xml-connection-files", "Input", "Read XML-connection defs from FILE");
00090
00091 oc.doRegister("xml-type-files", 't', new Option_FileName());
00092 oc.addSynonyme("xml-type-files", "xml-types");
00093 oc.addDescription("xml-type-files", "Input", "Read XML-type defs from FILE");
00094
00095 oc.doRegister("shapefile", new Option_FileName());
00096 oc.addSynonyme("shapefile", "arcview");
00097 oc.addSynonyme("shapefile", "tiger");
00098 oc.addDescription("shapefile", "Input", "Read shapefiles (ArcView, Tiger, ...) from files starting with 'FILE'");
00099
00100 oc.doRegister("dlr-navteq", new Option_FileName());
00101 oc.addSynonyme("dlr-navteq", "elmar2");
00102 oc.addDescription("dlr-navteq", "Input", "Read converted Navteq GDF data (unsplitted Elmar-network) from path 'FILE'");
00103
00104 oc.doRegister("osm-files", new Option_FileName());
00105 oc.addSynonyme("osm-files", "osm");
00106 oc.addDescription("osm-files", "Input", "Read OSM-network from path 'FILE(s)'");
00107
00108 oc.doRegister("opendrive", new Option_FileName());
00109 oc.addDescription("opendrive", "Input", "Read openDrive-network from FILE");
00110
00111 oc.doRegister("visum-file", new Option_FileName());
00112 oc.addSynonyme("visum-file", "visum");
00113 oc.addDescription("visum-file", "Input", "Read VISUM-net from FILE");
00114
00115 oc.doRegister("vissim-file", new Option_FileName());
00116 oc.addSynonyme("vissim-file", "vissim");
00117 oc.addDescription("vissim-file", "Input", "Read VISSIM-net from FILE");
00118
00119 oc.doRegister("robocup-net", new Option_FileName());
00120 oc.addSynonyme("robocup-net", "robocup");
00121 oc.addDescription("robocup-net", "Input", "Read RoboCup-net from DIR");
00122
00123
00124
00125 oc.doRegister("dismiss-loading-errors", new Option_Bool(false));
00126 oc.addDescription("dismiss-loading-errors", "Processing", "Continue on broken input");
00127
00128 oc.doRegister("capacity-norm", new Option_Float((SUMOReal) 1800));
00129 oc.addDescription("capacity-norm", "Processing", "The factor for flow to no. lanes conv");
00130
00131 oc.doRegister("speed-in-kmh", new Option_Bool(false));
00132 oc.addDescription("speed-in-kmh", "Processing", "vmax is parsed as given in km/h (some)");
00133
00134
00135 oc.doRegister("xml.keep-shape", new Option_Bool(false));
00136 oc.addDescription("xml.keep-shape", "Processing", "No node positions are added to the edge shape");
00137
00138
00139 oc.doRegister("shapefile.street-id", new Option_String());
00140 oc.addSynonyme("shapefile.street-id", "arcview.street-id");
00141 oc.addDescription("shapefile.street-id", "Processing", "Read edge ids from column STR");
00142
00143 oc.doRegister("shapefile.from-id", new Option_String());
00144 oc.addSynonyme("shapefile.from-id", "arcview.from-id");
00145 oc.addDescription("shapefile.from-id", "Processing", "Read from-node ids from column STR");
00146
00147 oc.doRegister("shapefile.to-id", new Option_String());
00148 oc.addSynonyme("shapefile.to-id", "arcview.to-id");
00149 oc.addDescription("shapefile.to-id", "Processing", "Read to-node ids from column STR");
00150
00151 oc.doRegister("shapefile.type-id", new Option_String());
00152 oc.addSynonyme("shapefile.type-id", "arcview.type-id");
00153 oc.addDescription("shapefile.type-id", "Processing", "Read type ids from column STR");
00154
00155 oc.doRegister("shapefile.use-defaults-on-failure", new Option_Bool(false));
00156 oc.addSynonyme("shapefile.use-defaults-on-failure", "arcview.use-defaults-on-failure");
00157 oc.addDescription("shapefile.use-defaults-on-failure", "Processing", "Uses edge type defaults on problems");
00158
00159 oc.doRegister("shapefile.all-bidi", new Option_Bool(false));
00160 oc.addSynonyme("shapefile.all-bidi", "arcview.all-bidi");
00161 oc.addDescription("shapefile.all-bidi", "Processing", "Insert edges in both directions");
00162
00163 oc.doRegister("shapefile.utm", new Option_Integer(32));
00164 oc.addSynonyme("shapefile.utm", "arcview.utm");
00165 oc.addDescription("shapefile.utm", "Processing", "Use INT as UTM zone");
00166
00167 oc.doRegister("shapefile.guess-projection", new Option_Bool(false));
00168 oc.addSynonyme("shapefile.guess-projection", "arcview.guess-projection");
00169 oc.addDescription("shapefile.guess-projection", "Processing", "Guess the proper projection");
00170
00171
00172 oc.doRegister("vissim.offset", new Option_Float(5.0f));
00173 oc.addDescription("vissim.offset", "Processing", "Structure join offset");
00174
00175 oc.doRegister("vissim.default-speed", new Option_Float(50.0f));
00176 oc.addDescription("vissim.default-speed", "Processing", "Use FLOAT as default speed");
00177
00178 oc.doRegister("vissim.speed-norm", new Option_Float(1.0f));
00179 oc.addDescription("vissim.speed-norm", "Processing", "Factor for edge velocity");
00180
00181 oc.doRegister("vissim.report-unset-speeds", new Option_Bool(false));
00182 oc.addDescription("vissim.report-unset-speeds", "Processing", "Writes lanes without an explicite speed set.");
00183
00184
00185 oc.doRegister("visum.use-type-priority", new Option_Bool(false));
00186 oc.addDescription("visum.use-type-priority", "Processing", "Uses priorities from types");
00187
00188 oc.doRegister("visum.use-type-laneno", new Option_Bool(false));
00189 oc.addDescription("visum.use-type-laneno", "Processing", "Uses lane numbers from types");
00190
00191 oc.doRegister("visum.use-type-speed", new Option_Bool(false));
00192 oc.addDescription("visum.use-type-speed", "Processing", "Uses speeds from types");
00193
00194 oc.doRegister("visum.connector-speeds", new Option_Float(100.));
00195 oc.addDescription("visum.connector-speeds", "Processing", "Sets connector speed");
00196
00197 oc.doRegister("visum.connector-laneno", new Option_Integer(3));
00198 oc.addDescription("visum.connector-laneno", "Processing", "Sets connector lane number");
00199
00200 oc.doRegister("visum.no-connectors", new Option_Bool(false));
00201 oc.addDescription("visum.no-connectors", "Processing", "Excludes connectors");
00202
00203 oc.doRegister("visum.recompute-laneno", new Option_Bool(false));
00204 oc.addDescription("visum.recompute-laneno", "Processing", "Excludes connectors");
00205
00206
00207
00208 NBNetBuilder::insertNetBuildOptions(oc);
00209
00210
00211 RandHelper::insertRandOptions();
00212 }
00213
00214
00215 bool
00216 NIOptionsIO::checkOptions() {
00217 OptionsCont &oc = OptionsCont::getOptions();
00218 bool ok = oc.checkDependingSuboptions("shapefile", "shapefile.");
00219 ok &= oc.checkDependingSuboptions("visum-file", "visum.");
00220 ok &= oc.checkDependingSuboptions("vissim-file", "vissim.");
00221 #ifdef HAVE_PROJ
00222 unsigned numProjections = oc.getBool("proj.simple") + oc.getBool("proj.utm") + oc.getBool("proj.dhdn") + (oc.getString("proj").length() > 1);
00223 if ((oc.isSet("osm-files") || oc.isSet("dlr-navteq")) && numProjections == 0) {
00224 oc.set("proj.utm", true);
00225 }
00226 if (oc.isSet("dlr-navteq") && oc.isDefault("proj.shift")) {
00227 oc.set("proj.shift", std::string("5"));
00228 }
00229 #endif
00230 return ok;
00231 }
00232
00233
00234
00235
00236