SUMO - Simulation of Urban MObility
NWWriter_OpenDrive.h
Go to the documentation of this file.
1 /****************************************************************************/
7 // Exporter writing networks using the openDRIVE format
8 /****************************************************************************/
9 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
10 // Copyright (C) 2001-2017 DLR (http://www.dlr.de/) and contributors
11 /****************************************************************************/
12 //
13 // This file is part of SUMO.
14 // SUMO is free software: you can redistribute it and/or modify
15 // it under the terms of the GNU General Public License as published by
16 // the Free Software Foundation, either version 3 of the License, or
17 // (at your option) any later version.
18 //
19 /****************************************************************************/
20 #ifndef NWWriter_OpenDrive_h
21 #define NWWriter_OpenDrive_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
35 
36 
37 // ===========================================================================
38 // class declarations
39 // ===========================================================================
40 class NBNetBuilder;
41 class NBEdge;
42 class OptionsCont;
43 class PositionVector;
44 class OutputDevice;
46 
47 
48 // ===========================================================================
49 // class definitions
50 // ===========================================================================
57 public:
63  static void writeNetwork(const OptionsCont& oc, NBNetBuilder& nb);
64 
65 protected:
67  static double writeGeomLines(const PositionVector& shape, OutputDevice& device, OutputDevice& elevationDevice, double offset = 0);
68 
69  /* @brief write geometry as sequence of lines and bezier curves
70  *
71  * @param[in] straightThresh angular changes below threshold are considered to be straight and no curve will be fitted between the segments
72  * @param[out] length Return the total length of the reference line
73  */
74  static bool writeGeomSmooth(const PositionVector& shape, double speed, OutputDevice& device, OutputDevice& elevationDevice, double straightThresh, double& length);
75 
77  static double writeGeomPP3(OutputDevice& device,
78  OutputDevice& elevationDevice,
79  PositionVector init,
80  double length,
81  double offset = 0);
82 
83  static void writeElevationProfile(const PositionVector& shape, OutputDevice& device, const OutputDevice_String& elevationDevice);
84 
85  static void writeEmptyCenterLane(OutputDevice& device, const std::string& mark, double markWidth);
86  static int getID(const std::string& origID, StringBijection<int>& map, int& lastID);
87 
88  static std::string getLaneType(SVCPermissions permissions);
89 
91  static PositionVector getLeftLaneBorder(const NBEdge* edge, int laneIndex = -1);
92 
94  static void checkLaneGeometries(const NBEdge* e);
95 };
96 
97 
98 #endif
99 
100 /****************************************************************************/
101 
static void writeEmptyCenterLane(OutputDevice &device, const std::string &mark, double markWidth)
int SVCPermissions
bitset where each bit declares whether a certain SVC may use this edge/lane
The representation of a single edge during network building.
Definition: NBEdge.h:71
static void writeNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Writes the network into a openDRIVE-file.
static double writeGeomPP3(OutputDevice &device, OutputDevice &elevationDevice, PositionVector init, double length, double offset=0)
write geometry as a single bezier curve (paramPoly3)
static bool writeGeomSmooth(const PositionVector &shape, double speed, OutputDevice &device, OutputDevice &elevationDevice, double straightThresh, double &length)
A list of positions.
Exporter writing networks using the openDRIVE format.
static std::string getLaneType(SVCPermissions permissions)
static double writeGeomLines(const PositionVector &shape, OutputDevice &device, OutputDevice &elevationDevice, double offset=0)
write geometry as sequence of lines (sumo style)
Instance responsible for building networks.
Definition: NBNetBuilder.h:114
A storage for options typed value containers)
Definition: OptionsCont.h:99
static PositionVector getLeftLaneBorder(const NBEdge *edge, int laneIndex=-1)
get the left border of the given lane (the leftmost one by default)
Static storage of an output device and its base (abstract) implementation.
Definition: OutputDevice.h:71
static void checkLaneGeometries(const NBEdge *e)
check if the lane geometries are compatible with OpenDRIVE assumptions (colinear stop line) ...
static int getID(const std::string &origID, StringBijection< int > &map, int &lastID)
static void writeElevationProfile(const PositionVector &shape, OutputDevice &device, const OutputDevice_String &elevationDevice)
An output device that encapsulates an ofstream.