48 #ifdef CHECK_MEMORY_LEAKS
50 #endif // CHECK_MEMORY_LEAKS
64 if (!oc.
isSet(
"dlr-navteq-output")) {
77 strftime(buffer, 80,
"on %c", localtime(&rawtime));
78 device <<
"# Generated " << buffer <<
" by " << oc.
getFullName() <<
"\n";
79 device <<
"# Format matches Extraction version: V6.0 \n";
80 std::stringstream tmp;
82 tmp.seekg(std::ios_base::beg);
85 std::getline(tmp, line);
86 device <<
"# " << line <<
"\n";
102 const SUMOReal geoScale = pow(10.0f, haveGeo ? 5 : 2);
105 WRITE_WARNING(
"DlrNavteq node data will be written in (floating point) cartesian coordinates");
108 device <<
"# NODE_ID\tIS_BETWEEN_NODE\tamount_of_geocoordinates\tx1\ty1\t[x2 y2 ... xn yn]\n";
110 for (std::map<std::string, NBNode*>::const_iterator i = nc.
begin(); i != nc.
end(); ++i) {
115 device << n->
getID() <<
"\t0\t1\t" << pos.
x() <<
"\t" << pos.
y() <<
"\n";
118 for (std::map<std::string, NBEdge*>::const_iterator i = ec.
begin(); i != ec.
end(); ++i) {
121 if (geom.size() > 2) {
122 std::string internalNodeID = e->
getID();
124 (nc.
retrieve(internalNodeID) != 0)) {
126 internalNodeID +=
"_geometry";
128 device << internalNodeID <<
"\t1\t" << geom.size() - 2;
129 for (
size_t ii = 1; ii < geom.size() - 1; ++ii) {
133 device <<
"\t" << pos.
x() <<
"\t" << pos.
y();
144 std::map<const std::string, std::string> nameIDs;
148 device <<
"# LINK_ID\tNODE_ID_FROM\tNODE_ID_TO\tBETWEEN_NODE_ID\tLENGTH\tVEHICLE_TYPE\tFORM_OF_WAY\tBRUNNEL_TYPE\tFUNCTIONAL_ROAD_CLASS\tSPEED_CATEGORY\tNUMBER_OF_LANES\tSPEED_LIMIT\tSPEED_RESTRICTION\tNAME_ID1_REGIONAL\tNAME_ID2_LOCAL\tHOUSENUMBERS_RIGHT\tHOUSENUMBERS_LEFT\tZIP_CODE\tAREA_ID\tSUBAREA_ID\tTHROUGH_TRAFFIC\tSPECIAL_RESTRICTIONS\tEXTENDED_NUMBER_OF_LANES\tISRAMP\tCONNECTION\n";
150 for (std::map<std::string, NBEdge*>::const_iterator i = ec.
begin(); i != ec.
end(); ++i) {
155 if (oc.
getBool(
"output.street-names")) {
156 const std::string& name = i->second->getStreetName();
157 if (name !=
"" && nameIDs.count(name) == 0) {
159 nameIDs[name] = nameID;
162 device << e->
getID() <<
"\t"
165 << betweenNodeID <<
"\t"
189 if (oc.
getBool(
"output.street-names")) {
193 namesDevice <<
"# NAME_ID\tName\n" << nameIDs.size() <<
"\n";
194 for (std::map<const std::string, std::string>::const_iterator i = nameIDs.begin(); i != nameIDs.end(); ++i) {
195 namesDevice << i->second <<
"\t" << i->first <<
"\n";
203 if (permissions ==
SVCAll) {
204 return "100000000000";
206 std::ostringstream oss;
208 oss << ((permissions & SVC_PASSENGER) > 0 ? 1 : 0);
209 oss << ((permissions & SVC_PASSENGER) > 0 ? 1 : 0);
210 oss << ((permissions & SVC_HOV) > 0 ? 1 : 0);
211 oss << ((permissions & SVC_EMERGENCY) > 0 ? 1 : 0);
212 oss << ((permissions & SVC_TAXI) > 0 ? 1 : 0);
213 oss << ((permissions & (SVC_BUS | SVC_COACH)) > 0 ? 1 : 0);
214 oss << ((permissions & SVC_DELIVERY) > 0 ? 1 : 0);
215 oss << ((permissions & (SVC_TRUCK | SVC_TRAILER)) > 0 ? 1 : 0);
216 oss << ((permissions & SVC_MOTORCYCLE) > 0 ? 1 : 0);
217 oss << ((permissions & SVC_BICYCLE) > 0 ? 1 : 0);
218 oss << ((permissions & SVC_PEDESTRIAN) > 0 ? 1 : 0);
304 const unsigned int code = (numLanes == 1 ? 1 :
305 (numLanes < 4 ? 2 : 3));
306 return numLanes * 10 + code;
325 const SUMOReal geoScale = pow(10.0f, haveGeo ? 5 : 2);
328 device <<
"#Traffic signal related to LINK_ID and NODE_ID with location relative to driving direction.\n#column format like pointcollection.\n#DESCRIPTION->LOCATION: 1-rechts von LINK; 2-links von LINK; 3-oberhalb LINK -1-keineAngabe\n#RELATREC_ID\tPOICOL_TYPE\tDESCRIPTION\tLONGITUDE\tLATITUDE\tLINK_ID\n";
330 for (std::map<std::string, NBNode*>::const_iterator i = nc.
begin(); i != nc.
end(); ++i) {
337 for (EdgeVector::const_iterator it = incoming.begin(); it != incoming.end(); ++it) {
339 device << e->
getID() <<
"\t"
341 <<
"LSA;NODEIDS#" << n->
getID() <<
"#;LOCATION#-1#;\t"
344 << e->
getID() <<
"\n";
const EdgeVector & getIncomingEdges() const
Returns this node's incoming edges.
void close()
Closes the device and removes it from the dictionary.
void cartesian2geo(Position &cartesian) const
Converts the given cartesian (shifted) position to its geo (lat/long) representation.
static unsigned int getNavteqLaneCode(const unsigned int numLanes)
get the lane number encoding
static int speedInKph(SUMOReal metersPerSecond)
get edge speed rounded to kmh
static void writeHeader(OutputDevice &device, const OptionsCont &oc)
write header comments (input paramters, date, etc...)
bool isTLControlled() const
Returns whether this node is controlled by any tls.
static int getRoadClass(NBEdge *edge)
get the navteq road class
bool getBool(const std::string &name) const
Returns the boolean-value of the named option (only for Option_Bool)
static int getSpeedCategory(int kph)
get the navteq speed class based on the speed in km/h
The representation of a single edge during network building.
const std::string & getFullName() const
const SVCPermissions SVCAll
SUMOReal x() const
Returns the x-position.
static int getSpeedCategoryUpperBound(int kph)
get the SPEED_LIMIT as defined by elmar (upper bound of speed category)
#define WRITE_WARNING(msg)
static const std::string UNDEFINED
magic value for undefined stuff
std::string getString(const std::string &name) const
Returns the string-value of the named option (only for Option_String)
const std::string & getID() const
Returns the id.
void setPrecision(unsigned int precision=OUTPUT_ACCURACY)
Sets the precison or resets it to default.
void push_front_noDoublePos(const Position &p)
static void writeNodesUnsplitted(const OptionsCont &oc, NBNodeCont &nc, NBEdgeCont &ec)
Writes the nodes_unsplitted file.
const Position & getPosition() const
Returns the position of this node.
std::map< std::string, NBEdge * >::const_iterator end() const
Returns the pointer to the end of the stored edges.
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
A point in 2D or 3D with translation and scaling methods.
NBEdgeCont & getEdgeCont()
Returns the edge container.
unsigned int getNumLanes() const
Returns the number of lanes.
Storage for edges, including some functionality operating on multiple edges.
static void writeLinksUnsplitted(const OptionsCont &oc, NBEdgeCont &ec)
Writes the links_unsplitted file.
std::map< std::string, NBNode * >::const_iterator end() const
Returns the pointer to the end of the stored nodes.
std::string toString(const T &t, std::streamsize accuracy=OUTPUT_ACCURACY)
static void writeNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Writes the network into XML-files (nodes, edges, connections, traffic lights)
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
static std::string getAllowedTypes(SVCPermissions permissions)
build the ascii-bit-vector for column vehicle_type
SUMOReal length() const
Returns the length.
NBNode * getToNode() const
Returns the destination node of the edge.
NBNodeCont & getNodeCont()
Returns the node container.
Instance responsible for building networks.
static OutputDevice & getDevice(const std::string &name)
Returns the described OutputDevice.
std::vector< NBEdge * > EdgeVector
const PositionVector & getGeometry() const
Returns the geometry of the edge.
SUMOReal y() const
Returns the y-position.
A storage for options typed value containers)
void mul(SUMOReal val)
Multiplies both positions with the given value.
static const GeoConvHelper & getFinal()
the coordinate transformation for writing the location element and for tracking the original coordina...
static SUMOReal getGraphLength(NBEdge *edge)
get the length of the edge when measured up to the junction center
Represents a single node (junction) during network building.
static void writeTrafficSignals(const OptionsCont &oc, NBNodeCont &nc)
Writes the traffic_signals file.
Static storage of an output device and its base (abstract) implementation.
void writeConfiguration(std::ostream &os, bool filled, bool complete, bool addComments) const
Writes the configuration.
void push_back_noDoublePos(const Position &p)
NBNode * retrieve(const std::string &id) const
Returns the node with the given name.
SUMOReal getSpeed() const
Returns the speed allowed on this edge.
Container for nodes during the netbuilding process.
std::map< std::string, NBNode * >::const_iterator begin() const
Returns the pointer to the begin of the stored nodes.
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.