60 if (oc.
isSet(
"plain-output-prefix")) {
68 if (oc.
isSet(
"junctions.join-output")) {
71 if (oc.
isSet(
"street-sign-output")) {
74 if (oc.
exists(
"ptstop-output") && oc.
isSet(
"ptstop-output")) {
77 if (oc.
exists(
"ptline-output") && oc.
isSet(
"ptline-output")) {
81 if (oc.
exists(
"parking-output") && oc.
isSet(
"parking-output")) {
90 bool useGeo = oc.
exists(
"proj.plain-geo") && oc.
getBool(
"proj.plain-geo");
92 WRITE_WARNING(
"Ignoring option \"proj.plain-geo\" because no geo-conversion has been defined");
98 std::map<SumoXMLAttr, std::string> attrs;
108 for (std::map<std::string, NBNode*>::const_iterator i = nc.
begin(); i != nc.
end(); ++i) {
130 std::set<std::string> tlsIDs;
131 std::set<std::string> controlledInnerEdges;
132 for (std::set<NBTrafficLightDefinition*>::const_iterator it_tl = tlss.begin(); it_tl != tlss.end(); it_tl++) {
133 tlsIDs.insert((*it_tl)->getID());
134 std::vector<std::string> cie = (*it_tl)->getControlledInnerEdges();
135 controlledInnerEdges.insert(cie.begin(), cie.end());
137 std::vector<std::string> sortedIDs(tlsIDs.begin(), tlsIDs.end());
138 sort(sortedIDs.begin(), sortedIDs.end());
140 if (controlledInnerEdges.size() > 0) {
141 std::vector<std::string> sortedCIEs(controlledInnerEdges.begin(), controlledInnerEdges.end());
142 sort(sortedCIEs.begin(), sortedCIEs.end());
165 std::map<SumoXMLAttr, std::string> attrs;
176 bool useGeo = oc.
exists(
"proj.plain-geo") && oc.
getBool(
"proj.plain-geo");
179 std::map<SumoXMLAttr, std::string> attrs;
184 cdevice.
writeXMLHeader(
"connections",
"connections_file.xsd", attrs);
185 const bool writeNames = oc.
getBool(
"output.street-names");
186 for (std::map<std::string, NBEdge*>::const_iterator i = ec.
begin(); i != ec.
end(); ++i) {
209 for (
int i = 0; i < (int) geom.size(); i++) {
240 for (
int i = 0; i < (int)e->
getLanes().size(); ++i) {
277 const std::vector<NBEdge::Connection> connections = e->
getConnections();
278 if (connections.empty()) {
281 if (numOutgoing > 0) {
285 outPerm |= out->getPermissions();
287 if ((inPerm & outPerm) != 0 && (inPerm & outPerm) !=
SVC_PEDESTRIAN) {
295 for (std::vector<NBEdge::Connection>::const_iterator c = connections.begin(); c != connections.end(); ++c) {
308 for (std::map<std::string, NBNode*>::const_iterator i = nc.
begin(); i != nc.
end(); ++i) {
312 for (std::map<std::string, NBNode*>::const_iterator it_node = nc.
begin(); it_node != nc.
end(); ++it_node) {
313 const std::vector<NBNode::Crossing*>& crossings = (*it_node).second->getCrossings();
314 for (
auto c : crossings) {
322 if (c->customTLIndex != -1) {
325 if (c->customShape.size() != 0) {
338 std::map<SumoXMLAttr, std::string> attrs;
345 for (std::map<std::string, NBEdge*>::const_iterator i = ec.
begin(); i != ec.
end(); ++i) {
348 const std::vector<NBEdge::Connection> connections = e->
getConnections();
349 for (std::vector<NBEdge::Connection>::const_iterator c = connections.begin(); c != connections.end(); ++c) {
361 std::map<SumoXMLAttr, std::string> attrs;
366 for (std::vector<std::set<std::string> >::const_iterator it = clusters.begin(); it != clusters.end(); it++) {
367 assert((*it).size() > 0);
370 std::ostringstream oss;
371 for (std::set<std::string>::const_iterator it_id = it->begin(); it_id != it->end(); it_id++) {
372 oss << *it_id <<
" ";
375 std::string ids = oss.str();
387 for (std::map<std::string, NBEdge*>::const_iterator i = ec.
begin(); i != ec.
end(); ++i) {
389 const std::vector<NBSign>& signs = e->
getSigns();
390 for (std::vector<NBSign>::const_iterator it = signs.begin(); it != signs.end(); ++it) {
391 it->writeAsPOI(device, e);
400 for (std::map<std::string, NBPTStop*>::const_iterator i = sc.
begin(); i != sc.
end(); ++i) {
401 i->second->write(device);
408 for (std::vector<NBPTLine*>::const_iterator i = lc.
begin(); i != lc.
end(); ++i) {
409 (*i)->write(device, ec);
The information about how to spread the lanes from the given position.
const std::vector< std::set< std::string > > & getJoinedClusters() const
gets all joined clusters (see doc for myClusters2Join)
void writePermissions(OutputDevice &into, SVCPermissions permissions)
writes allowed disallowed attributes if needed;
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
void close()
Closes the device and removes it from the dictionary.
static void writeLocation(OutputDevice &into)
writes the location element
const std::string & getTypeID() const
get ID of type
bool getKeepClear() const
Returns the keepClear flag.
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
a list of node ids, used for controlling joining
NBTypeCont & getTypeCont()
Returns a reference to the type container.
Whether vehicles must keep the junction clear.
static void writeStreetSigns(const OptionsCont &oc, NBEdgeCont &ec)
Writes street signs as POIs to file.
bool hasDefaultGeometry() const
Returns whether the geometry consists only of the node positions.
begin/end of the description of a single lane
const std::set< EdgeSet > getRoundabouts() const
Returns the determined roundabouts.
double getLoadedLength() const
Returns the length was set explicitly or the computed length if it wasn't set.
A container for traffic light definitions and built programs.
bool hasLaneSpecificEndOffset() const
whether lanes differ in offset
bool isTLControlled() const
Returns whether this node is controlled by any tls.
void writePreferences(OutputDevice &into, SVCPermissions preferred)
writes allowed disallowed attributes if needed;
const std::vector< NBEdge::Lane > & getLanes() const
Returns the lane definitions.
connectio between two lanes
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
The representation of a single edge during network building.
static void writeJoinedJunctions(const OptionsCont &oc, NBNodeCont &nc)
Writes the joined-juncionts to file.
static void writeProhibitions(OutputDevice &into, const NBConnectionProhibits &prohibitions)
writes the given prohibitions
static const double UNSPECIFIED_RADIUS
unspecified lane width
static const double UNSPECIFIED_OFFSET
unspecified lane offset
link,node: the traffic light id responsible for this link
void setPrecision(int precision=gPrecision)
Sets the precison or resets it to default.
std::map< std::string, NBPTStop * >::const_iterator begin() const
Returns the pointer to the begin of the stored pt stops.
NBPTStopCont & getPTStopCont()
Returns a reference to the pt stop container.
double getEndOffset() const
Returns the offset to the destination node.
double getSpeed() const
Returns the speed allowed on this edge.
bool hasCustomShape() const
return whether the shape was set by the user
NBPTLineCont & getPTLineCont()
Returns a reference to the pt line container.
std::vector< NBPTLine * >::const_iterator begin() const
Returns the pointer to the begin of the stored pt lines.
double endOffset
This lane's offset to the intersection begin.
static void writeTrafficLights(OutputDevice &into, const NBTrafficLightLogicCont &tllCont)
writes the traffic light logics to the given device
NBParkingCont & getParkingCont()
static const double UNSPECIFIED_WIDTH
unspecified lane width
#define WRITE_WARNING(msg)
bool accelRamp
Whether this lane is an acceleration lane.
const std::vector< NBSign > & getSigns() const
get Signs
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
const EdgeVector & getOutgoingEdges() const
Returns this node's outgoing edges (The edges which start at this node)
An (internal) definition of a single lane of an edge.
const std::string & getID() const
Returns the id.
The representation of a single pt stop.
SVCPermissions permissions
List of vehicle types that are allowed on this lane.
static void writeParkingAreas(const OptionsCont &cont, NBParkingCont &pc, NBEdgeCont &ec)
writes imported parking areas to file
const Position & getPosition() const
The turning radius at an intersection in m.
static void writeNodes(const OptionsCont &oc, NBNodeCont &nc)
Writes the nodes file.
std::map< std::string, NBEdge * >::const_iterator end() const
Returns the pointer to the end of the stored edges.
double getLaneWidth() const
Returns the default width of lanes of this edge.
bool usingGeoProjection() const
Returns whether a transformation from geo to metric coordinates will be performed.
static methods for processing the coordinates conversion for the current net
const std::set< NBTrafficLightDefinition * > & getControllingTLS() const
Returns the traffic lights that were assigned to this node (The set of tls that control this node) ...
bool hasLaneSpecificSpeed() const
whether lanes differ in speed
int getPriority() const
Returns the priority of the edge.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
SVCPermissions preferred
List of vehicle types that are preferred on this lane.
bool writeXMLHeader(const std::string &rootElement, const std::string &schemaFile, std::map< SumoXMLAttr, std::string > attrs=std::map< SumoXMLAttr, std::string >())
Writes an XML header with optional configuration.
A point in 2D or 3D with translation and scaling methods.
NBEdgeCont & getEdgeCont()
bool hasLaneSpecificPermissions() const
whether lanes differ in allowed vehicle classes
static void writeTrafficLights(const OptionsCont &oc, NBTrafficLightLogicCont &tc, NBEdgeCont &ec)
Writes the traffic lights file.
std::map< std::string, NBPTStop * >::const_iterator end() const
Returns the pointer to the end of the stored pt stops.
SumoXMLNodeType getType() const
Returns the type of this node.
bool hasLoadedLength() const
Returns whether a length was set explicitly.
int getNumLanes() const
Returns the number of lanes.
Storage for edges, including some functionality operating on multiple edges.
bool needsLaneSpecificOutput() const
whether at least one lane has values differing from the edges values
static void writeNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Writes the network into XML-files (nodes, edges, connections, traffic lights)
edge: the shape in xml-definition
static void writePositionLong(const Position &pos, OutputDevice &dev)
Writes the given position to device in long format (one attribute per dimension)
std::map< std::string, NBNode * >::const_iterator end() const
Returns the pointer to the end of the stored nodes.
begin/end of the description of a neighboring lane
static void writeTypes(const OptionsCont &oc, NBTypeCont &tc)
Writes the types file.
const PositionVector & getShape() const
retrieve the junction shape
static std::string escapeXML(const std::string &orig, const bool maskDoubleHyphen=false)
Replaces the standard escapes by their XML entities.
double speed
The speed allowed on this lane.
double width
This lane's width.
static void writePTStops(const OptionsCont &oc, NBPTStopCont &ec)
Writes the pt stops file.
begin/end of the description of an edge
void writeTypes(OutputDevice &into) const
writes all types a s XML
std::map< std::string, NBEdge * >::const_iterator begin() const
Returns the pointer to the begin of the stored edges.
SVCPermissions getPermissions(int lane=-1) const
get the union of allowed classes over all lanes or for a specific lane
NBNode * getToNode() const
Returns the destination node of the edge.
std::string oppositeID
An opposite lane ID, if given.
static void writeEdgesAndConnections(const OptionsCont &oc, NBNodeCont &nc, NBEdgeCont &ec)
Writes the edges and connections files.
int size() const
Returns the number of known types.
NBNodeCont & getNodeCont()
Returns a reference to the node container.
Instance responsible for building networks.
static OutputDevice & getDevice(const std::string &name)
Returns the described OutputDevice.
std::vector< NBPTLine * >::const_iterator end() const
Returns the pointer to the end of the stored pt lines.
const PositionVector & getGeometry() const
Returns the geometry of the edge.
alternative definition for junction
A storage for options typed value containers)
NBTrafficLightLogicCont & getTLLogicCont()
Returns a reference to the traffic light logics container.
double getRadius() const
Returns the turning radius of this node.
crossing between edges for pedestrians
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
LaneSpreadFunction getLaneSpreadFunction() const
Returns how this edge's lanes' lateral offset is computed.
Represents a single node (junction) during network building.
bool hasLaneSpecificWidth() const
whether lanes differ in width
Static storage of an output device and its base (abstract) implementation.
bool closeTag()
Closes the most recently opened tag.
link: the index of the link within the traffic light
Container for nodes during the netbuilding process.
static void writePTLines(const OptionsCont &cont, NBPTLineCont &lc, NBEdgeCont &ec)
bool usingInverseGeoProjection() const
Returns the information whether an inverse transformation will happen.
const std::string & getStreetName() const
Returns the street name of this edge.
void writeParams(OutputDevice &out) const
const std::vector< Connection > & getConnections() const
Returns the connections.
PositionVector customShape
A custom shape for this lane set by the user.
static const std::string MAJOR_VERSION
The version number for written files.
std::map< std::string, NBNode * >::const_iterator begin() const
Returns the pointer to the begin of the stored nodes.
static void writeRoundabouts(OutputDevice &into, const std::set< EdgeSet > &roundabouts, const NBEdgeCont &ec)
Writes roundabouts.
std::string joinToString(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=gPrecision)
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
void lf()
writes a line feed if applicable
bool exists(const std::string &name) const
Returns the information whether the named option is known.
static void writeConnection(OutputDevice &into, const NBEdge &from, const NBEdge::Connection &c, bool includeInternal, ConnectionStyle style=SUMONET)
Writes connections outgoing from the given edge (also used in NWWriter_XML)
A storage for available types of edges.
bool isSet(const std::string &name, bool failOnNonExistant=true) const
Returns the information whether the named option is set.
NBNode * getFromNode() const
Returns the origin node of the edge.