61 oc.
addCallExample(
"-c <CONFIGURATION>",
"create net from given configuration");
62 oc.
addCallExample(
"--grid [grid-network options] -o <OUTPUTFILE>",
"create grid net");
63 oc.
addCallExample(
"--spider [spider-network options] -o <OUTPUTFILE>",
"create spider net");
64 oc.
addCallExample(
"--rand [random-network options] -o <OUTPUTFILE>",
"create random net");
66 oc.
setAdditionalHelpMessage(
" Either \"--grid\", \"--spider\" or \"--rand\" must be supplied.\n In dependance to these switches other options are used.");
89 oc.
addSynonyme(
"default-junction-type",
"junctions");
90 oc.
addDescription(
"default-junction-type",
"Building Defaults",
"[traffic_light|priority|right_before_left|left_before_right|traffic_light_right_on_red|priority_stop|allway_stop|...] Determines junction type (see wiki/Networks/PlainXML#Node_types)");
94 oc.
addDescription(
"tls.discard-simple",
"TLS Building",
"Does not instatiate traffic lights at geometry-like nodes");
113 double minLength = (oc.
getInt(
"default.lanenumber") + oc.
getInt(
"turn-lanes")) * 2 * laneWidth + oc.
getFloat(
"default.junctions.radius") * 2 + POSITION_EPS;
117 bool hadError =
false;
118 if (oc.
getInt(
"spider.arm-number") < 3) {
122 if (oc.
getInt(
"spider.arm-number") > 4 && oc.
isDefault(
"spider.omit-center")) {
123 WRITE_WARNING(
TL(
"Spider networks with many arms should use option ommit-center"));
125 if (oc.
getInt(
"spider.circle-number") < 1) {
126 WRITE_ERROR(
TL(
"Spider networks need at least one circle."));
129 minLength =
MAX2(minLength, laneWidth * 2 *
MAX2(oc.
getInt(
"spider.arm-number"), 3) / (2 *
M_PI));
130 if (oc.
getFloat(
"spider.space-radius") < POSITION_EPS) {
133 }
else if (oc.
getFloat(
"spider.space-radius") < minLength) {
134 WRITE_WARNING(
"The radius of spider networks should be at least " +
toString(minLength) +
" for the given lanenumber, lanewidth and junction radius");
142 oc.
getFloat(
"spider.space-radius"), !oc.
getBool(
"spider.omit-center"));
148 int xNo = oc.
getInt(
"grid.x-number");
149 int yNo = oc.
getInt(
"grid.y-number");
150 double xLength = oc.
getFloat(
"grid.x-length");
151 double yLength = oc.
getFloat(
"grid.y-length");
152 double xAttachLength = oc.
getFloat(
"grid.x-attach-length");
153 double yAttachLength = oc.
getFloat(
"grid.y-attach-length");
155 xNo = oc.
getInt(
"grid.number");
158 yNo = oc.
getInt(
"grid.number");
161 xLength = oc.
getFloat(
"grid.length");
164 yLength = oc.
getFloat(
"grid.length");
167 xAttachLength = oc.
getFloat(
"grid.attach-length");
170 yAttachLength = oc.
getFloat(
"grid.attach-length");
173 bool hadError =
false;
174 if (xNo < 1 || yNo < 1 || (xAttachLength == 0 && yAttachLength == 0 && (xNo < 2 && yNo < 2))) {
175 WRITE_ERROR(
TL(
"The number of nodes must be positive and at least 2 in one direction if there are no attachments."));
178 const double minAttachLength = minLength / 2 + POSITION_EPS / 2;
179 if (xLength < POSITION_EPS || yLength < POSITION_EPS) {
182 }
else if (xLength < minLength || yLength < minLength) {
183 WRITE_WARNING(
"The distance between nodes should be at least " +
toString(minLength) +
" for the given lanenumber, lanewidth and junction radius");
185 if (xAttachLength != 0.0 && xAttachLength < POSITION_EPS) {
188 }
else if (xAttachLength != 0.0 && xAttachLength < minAttachLength) {
189 WRITE_WARNING(
"The length of attached streets should be at least " +
toString(minAttachLength) +
" for the given lanenumber, lanewidth and junction radius");
190 }
else if (yAttachLength != 0.0 && yAttachLength < POSITION_EPS) {
193 }
else if (yAttachLength != 0.0 && yAttachLength < minAttachLength) {
194 WRITE_WARNING(
"The length of attached streets should be at least " +
toString(minAttachLength) +
" for the given lanenumber, lanewidth and junction radius");
206 neighborDist.
add(1, oc.
getFloat(
"rand.neighbor-dist1"));
207 neighborDist.
add(2, oc.
getFloat(
"rand.neighbor-dist2"));
208 neighborDist.
add(3, oc.
getFloat(
"rand.neighbor-dist3"));
209 neighborDist.
add(4, oc.
getFloat(
"rand.neighbor-dist4"));
210 neighborDist.
add(5, oc.
getFloat(
"rand.neighbor-dist5"));
211 neighborDist.
add(6, oc.
getFloat(
"rand.neighbor-dist6"));
218 oc.
getInt(
"rand.num-tries"),
232 oc.
setApplicationName(
"netgenerate",
"Eclipse SUMO netgenerate Version " VERSION_STRING);
255 if (oc.
isSet(
"type-files")) {
270 if (oc.
getBool(
"tls.discard-simple")) {
281 if (std::string(e.what()) != std::string(
"Process Error") && std::string(e.what()) != std::string(
"")) {
287 }
catch (
const std::exception& e) {
288 if (std::string(e.what()) != std::string(
"")) {
300 std::cout <<
"Success." << std::endl;
#define WRITE_MESSAGE(msg)
#define WRITE_WARNING(msg)
const double SUMO_const_laneWidth
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
A class that stores a 2D geometrical boundary.
static bool init(OptionsCont &oc)
Initialises the processing and the final instance using the given options.
static MsgHandler * getErrorInstance()
Returns the instance to add errors to.
virtual void inform(std::string msg, bool addType=true)
adds a new error to the list
static void setupI18n(const std::string &locale="")
set up gettext stuff
static void initOutputOptions()
init output options
int size() const
Returns the number of edges.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
static void fillOptions(bool forNetgen)
Inserts options used by the network converter.
Instance responsible for building networks.
NBNodeCont & getNodeCont()
Returns a reference to the node container.
NBEdgeCont & getEdgeCont()
NBTypeCont & getTypeCont()
Returns a reference to the type container.
NBTrafficLightLogicCont & getTLLogicCont()
Returns a reference to the traffic light logics container.
void applyOptions(OptionsCont &oc)
Initialises the storage by applying given options.
void compute(OptionsCont &oc, const std::set< std::string > &explicitTurnarounds=std::set< std::string >(), bool mayAddOrRemove=true)
Performs the network building steps.
int size() const
Returns the number of nodes stored in this container.
void printBuiltNodesStatistics() const
Prints statistics about built nodes.
void discardTrafficLights(NBTrafficLightLogicCont &tlc, bool geometryLike, bool guessSignals)
int getNumExtracted() const
return the number of extracted traffic light definitions
static void fillOptions()
Inserts options used by the network generator.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
The class storing the generated network.
void toNB() const
Converts the stored network into its netbuilder-representation.
void createChequerBoard(int numX, int numY, double spaceX, double spaceY, double xAttachLength, double yAttachLength)
Creates a grid network.
void createSpiderWeb(int numRadDiv, int numCircles, double spaceRad, bool hasCenter)
Creates a spider network.
A class that builds random network using an algorithm by Markus Hartinger.
void createNet(int numNodes, bool gridMode)
Builds a NGNet using the set values.
static bool load(SUMOSAXHandler *handler, const std::vector< std::string > &files, const std::string &type, const bool stringParse=false)
Importer for edge type information stored in XML.
static void writeNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Writes the network stored in the given net builder.
static void fillOptions(bool forNetgen)
Inserts options used by the network writer.
static bool checkOptions()
Checks set options from the OptionsCont-singleton for being valid.
A storage for options typed value containers)
void setAdditionalHelpMessage(const std::string &add)
Sets an additional message to be printed at the begin of the help screen.
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.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
double getFloat(const std::string &name) const
Returns the double-value of the named option (only for Option_Float)
int getInt(const std::string &name) const
Returns the int-value of the named option (only for Option_Integer)
void setApplicationName(const std::string &appName, const std::string &fullName)
Sets the application name.
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)
bool isDefault(const std::string &name) const
Returns the information whether the named option has still the default value.
void setApplicationDescription(const std::string &appDesc)
Sets the application description.
void addOptionSubTopic(const std::string &topic)
Adds an option subtopic.
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
const StringVector & getStringVector(const std::string &name) const
Returns the list of string-value of the named option (only for Option_StringVector)
void resetWritable()
Resets all options to be writeable.
static OptionsCont & getOptions()
Retrieves the options.
bool processMetaOptions(bool missingOptions)
Checks for help and configuration output, returns whether we should exit.
void addCallExample(const std::string &example, const std::string &desc)
Add a call example.
static void setArgs(int argc, char **argv)
Stores the command line arguments for later parsing.
static void getOptions(const bool commandLineOnly=false)
Parses the command line arguments and loads the configuration.
A point in 2D or 3D with translation and scaling methods.
static void insertRandOptions()
Initialises the given options container with random number options.
static void initRandGlobal(SumoRNG *which=nullptr)
Reads the given random number options and initialises the random number generator in accordance.
bool add(T val, double prob, bool checkDuplicates=true)
Adds a value with an assigned probability to the distribution.
static void close()
Closes all of an applications subsystems.
static void addConfigurationOptions(OptionsCont &oc)
Adds configuration options to the given container.
static void addReportOptions(OptionsCont &oc)
Adds reporting options to the given container.
static bool checkOptions()
checks shared options and sets StdDefs
static void setValidation(const std::string &validationScheme, const std::string &netValidationScheme, const std::string &routeValidationScheme)
Enables or disables validation.
static void init()
Initialises the xml-subsystem.
int main(int argc, char **argv)
NGNet * buildNetwork(NBNetBuilder &nb)