Eclipse SUMO - Simulation of Urban MObility
NIImporter_DlrNavteq.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2008-2019 German Aerospace Center (DLR) and others.
4 // This program and the accompanying materials
5 // are made available under the terms of the Eclipse Public License v2.0
6 // which accompanies this distribution, and is available at
7 // http://www.eclipse.org/legal/epl-v20.html
8 // SPDX-License-Identifier: EPL-2.0
9 /****************************************************************************/
17 // Importer for networks stored in Elmar's format
18 /****************************************************************************/
19 #ifndef NIImporter_DlrNavteq_h
20 #define NIImporter_DlrNavteq_h
21 
22 
23 // ===========================================================================
24 // included modules
25 // ===========================================================================
26 #include <config.h>
27 
28 #include <string>
29 #include <map>
32 
33 
34 // ===========================================================================
35 // class declarations
36 // ===========================================================================
37 class NBEdgeCont;
38 class NBNetBuilder;
39 class NBNodeCont;
41 class NBTypeCont;
42 class OptionsCont;
43 class PositionVector;
44 class StringTokenizer;
45 
46 
47 // ===========================================================================
48 // class definitions
49 // ===========================================================================
56 public:
68  static void loadNetwork(const OptionsCont& oc, NBNetBuilder& nb);
69 
71  static const std::string GEO_SCALE;
72 
74  static const std::string UNDEFINED;
75 
76 protected:
85  class NodesHandler : public LineHandler {
86  public:
92  NodesHandler(NBNodeCont& nc, const std::string& file,
93  std::map<std::string, PositionVector>& geoms);
94 
95 
97  ~NodesHandler();
98 
99 
111  bool report(const std::string& result);
112 
113 
114  protected:
115  // @brief The node container to store parsed nodes into
117 
119  std::map<std::string, PositionVector>& myGeoms;
120 
121 
122  private:
124  NodesHandler(const NodesHandler&);
125 
128 
129  };
130 
131 
140  class EdgesHandler : public LineHandler {
141 
142  public:
152  const std::string& file,
153  std::map<std::string, PositionVector>& geoms,
154  std::map<std::string, std::string>& streetNames);
155 
156 
158  ~EdgesHandler();
159 
160 
170  bool report(const std::string& result);
171 
172 
173  protected:
176 
179 
182 
184  std::map<std::string, PositionVector>& myGeoms;
185 
187  std::map<std::string, std::string>& myStreetNames;
188 
191 
193  double myVersion;
194 
196  std::vector<int> myColumns;
197 
199  const std::string myFile;
200 
201  static const int MISSING_COLUMN;
202 
203  enum ColumnName {
204  LINK_ID = 0,
229  };
230 
231  std::string getColumn(const StringTokenizer& st, ColumnName name, const std::string fallback = "");
232 
233  private:
235  std::string getStreetNameFromIDs(const std::string& regionalID, const std::string& localID) const;
236 
237 
238  private:
240  EdgesHandler(const EdgesHandler&);
241 
244 
245  };
246 
247 
257  public:
264  NBEdgeCont& ne, const std::string& file);
265 
266 
269 
270 
280  bool report(const std::string& result);
281 
282 
283  protected:
286 
289 
292 
293 
294  private:
297 
300 
301  };
302 
303 
312  class NamesHandler : public LineHandler {
313  public:
318  NamesHandler(const std::string& file, std::map<std::string, std::string>& streetNames);
319 
320 
322  ~NamesHandler();
323 
324 
334  bool report(const std::string& result);
335 
336 
337  protected:
339  std::map<std::string, std::string>& myStreetNames;
340 
341 
342  private:
344  NamesHandler(const NamesHandler&);
345 
348 
349  };
350 
351 
361  public:
366  TimeRestrictionsHandler(NBEdgeCont& ec, NBDistrictCont& dc, time_t constructionTime);
367 
368 
371 
372 
382  bool report(const std::string& result);
383 
384  void printSummary();
385 
386 
387  protected:
391 
394  time_t myCS_min;
395  time_t myCS_max;
400  int myRemovedEdges; // only counts those not already removed through other options
401 
402 
403  private:
406 
409 
410  };
411 
412 
422  public:
427  ProhibitionHandler(NBEdgeCont& ne, const std::string& file, time_t constructionTime);
428 
429 
432 
433 
443  bool report(const std::string& result);
444 
445 
446  protected:
449  const std::string myFile;
450  double myVersion;
452 
453 
454  private:
457 
460 
461  };
462 
463 
473  public:
479 
480 
483 
484 
494  bool report(const std::string& result);
495 
496 
497  protected:
500 
501 
502  private:
505 
508 
509  };
510 
511 
512  static double readVersion(const std::string& line, const std::string& file);
513  static int readPrefixedInt(const std::string& s, const std::string& prefix, int fallBack = 0);
514  static time_t readTimeRec(const std::string& start, const std::string& duration);
515  static time_t readDate(const std::string& yyyymmdd);
516 
517 };
518 
519 
520 #endif
521 
522 /****************************************************************************/
523 
NIImporter_DlrNavteq::TimeRestrictionsHandler::TimeRestrictionsHandler
TimeRestrictionsHandler(NBEdgeCont &ec, NBDistrictCont &dc, time_t constructionTime)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:545
NIImporter_DlrNavteq::readPrefixedInt
static int readPrefixedInt(const std::string &s, const std::string &prefix, int fallBack=0)
Definition: NIImporter_DlrNavteq.cpp:637
NIImporter_DlrNavteq::EdgesHandler::ISRAMP
Definition: NIImporter_DlrNavteq.h:227
NIImporter_DlrNavteq::TimeRestrictionsHandler::~TimeRestrictionsHandler
~TimeRestrictionsHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:559
NIImporter_DlrNavteq::TimeRestrictionsHandler::myDistrictCont
NBDistrictCont & myDistrictCont
Definition: NIImporter_DlrNavteq.h:390
NIImporter_DlrNavteq::TrafficlightsHandler::myTLLogicCont
NBTrafficLightLogicCont & myTLLogicCont
The traffic lights container to add built tls to.
Definition: NIImporter_DlrNavteq.h:288
NIImporter_DlrNavteq::TimeRestrictionsHandler::myFinished
int myFinished
Definition: NIImporter_DlrNavteq.h:399
NBEdgeCont
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:61
NIImporter_DlrNavteq::TimeRestrictionsHandler::operator=
TimeRestrictionsHandler & operator=(const TimeRestrictionsHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::ProhibitionHandler::myFile
const std::string myFile
Definition: NIImporter_DlrNavteq.h:449
NBNetBuilder
Instance responsible for building networks.
Definition: NBNetBuilder.h:110
NBTrafficLightLogicCont
A container for traffic light definitions and built programs.
Definition: NBTrafficLightLogicCont.h:58
NIImporter_DlrNavteq::EdgesHandler::SPEED_CATEGORY
Definition: NIImporter_DlrNavteq.h:213
NIImporter_DlrNavteq::EdgesHandler::AREA_ID
Definition: NIImporter_DlrNavteq.h:222
NIImporter_DlrNavteq::EdgesHandler::HOUSENUMBERS_RIGHT
Definition: NIImporter_DlrNavteq.h:219
NIImporter_DlrNavteq::EdgesHandler::NODE_ID_FROM
Definition: NIImporter_DlrNavteq.h:205
NIImporter_DlrNavteq::readDate
static time_t readDate(const std::string &yyyymmdd)
Definition: NIImporter_DlrNavteq.cpp:671
NIImporter_DlrNavteq::NamesHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:523
NIImporter_DlrNavteq::ProhibitionHandler::operator=
ProhibitionHandler & operator=(const ProhibitionHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::NamesHandler::myStreetNames
std::map< std::string, std::string > & myStreetNames
The container for storing read names.
Definition: NIImporter_DlrNavteq.h:339
NIImporter_DlrNavteq::NamesHandler
Importer of street names in DLRNavteq's (aka elmar) format.
Definition: NIImporter_DlrNavteq.h:312
NIImporter_DlrNavteq::NodesHandler
Importer of nodes stored in unsplit elmar format.
Definition: NIImporter_DlrNavteq.h:85
NIImporter_DlrNavteq::TimeRestrictionsHandler::myConstructionTime
time_t myConstructionTime
The date for which to build the network (in case some edges are still under construction)
Definition: NIImporter_DlrNavteq.h:393
NIImporter_DlrNavteq::NamesHandler::NamesHandler
NamesHandler(const std::string &file, std::map< std::string, std::string > &streetNames)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:512
NIImporter_DlrNavteq::EdgesHandler::myTryIgnoreNodePositions
bool myTryIgnoreNodePositions
Whether node positions shall not be added to the edge's geometry.
Definition: NIImporter_DlrNavteq.h:190
NIImporter_DlrNavteq::TrafficlightsHandler::~TrafficlightsHandler
~TrafficlightsHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:475
NIImporter_DlrNavteq::EdgesHandler::myEdgeCont
NBEdgeCont & myEdgeCont
The edge container to store loaded edges into.
Definition: NIImporter_DlrNavteq.h:178
NIImporter_DlrNavteq::TimeRestrictionsHandler
Importer of street names in DLRNavteq's (aka elmar) format.
Definition: NIImporter_DlrNavteq.h:360
NIImporter_DlrNavteq::EdgesHandler
Importer of edges stored in unsplit elmar format.
Definition: NIImporter_DlrNavteq.h:140
NIImporter_DlrNavteq::EdgesHandler::CONNECTION
Definition: NIImporter_DlrNavteq.h:228
NIImporter_DlrNavteq
Importer for networks stored in Elmar's format.
Definition: NIImporter_DlrNavteq.h:55
NIImporter_DlrNavteq::TrafficlightsHandler::TrafficlightsHandler
TrafficlightsHandler(NBNodeCont &nc, NBTrafficLightLogicCont &tlc, NBEdgeCont &ne, const std::string &file)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:464
NIImporter_DlrNavteq::EdgesHandler::getColumn
std::string getColumn(const StringTokenizer &st, ColumnName name, const std::string fallback="")
Definition: NIImporter_DlrNavteq.cpp:417
NIImporter_DlrNavteq::EdgesHandler::LINK_ID
Definition: NIImporter_DlrNavteq.h:204
LineHandler
Interface definition for a class which retrieves lines from a LineHandler.
Definition: LineHandler.h:45
PositionVector
A list of positions.
Definition: PositionVector.h:46
NBDistrictCont
A container for districts.
Definition: NBDistrictCont.h:53
NIImporter_DlrNavteq::EdgesHandler::myFile
const std::string myFile
the file being parsed
Definition: NIImporter_DlrNavteq.h:199
NIImporter_DlrNavteq::EdgesHandler::~EdgesHandler
~EdgesHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:264
NIImporter_DlrNavteq::ProhibitionHandler::~ProhibitionHandler
~ProhibitionHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:709
NBNodeCont
Container for nodes during the netbuilding process.
Definition: NBNodeCont.h:60
NIImporter_DlrNavteq::EdgesHandler::operator=
EdgesHandler & operator=(const EdgesHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::EdgesHandler::EdgesHandler
EdgesHandler(NBNodeCont &nc, NBEdgeCont &ec, NBTypeCont &tc, const std::string &file, std::map< std::string, PositionVector > &geoms, std::map< std::string, std::string > &streetNames)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:250
NIImporter_DlrNavteq::TimeRestrictionsHandler::myUnderConstruction
int myUnderConstruction
Definition: NIImporter_DlrNavteq.h:398
NIImporter_DlrNavteq::ConnectedLanesHandler::~ConnectedLanesHandler
~ConnectedLanesHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:767
NIImporter_DlrNavteq::EdgesHandler::SPEED_RESTRICTION
Definition: NIImporter_DlrNavteq.h:216
NIImporter_DlrNavteq::EdgesHandler::SPEED_LIMIT
Definition: NIImporter_DlrNavteq.h:215
NIImporter_DlrNavteq::NodesHandler::myGeoms
std::map< std::string, PositionVector > & myGeoms
A container for parsed geometries.
Definition: NIImporter_DlrNavteq.h:119
NIImporter_DlrNavteq::EdgesHandler::THROUGH_TRAFFIC
Definition: NIImporter_DlrNavteq.h:224
NIImporter_DlrNavteq::ConnectedLanesHandler
Imports prohibitions regarding connectivity.
Definition: NIImporter_DlrNavteq.h:472
NIImporter_DlrNavteq::ProhibitionHandler::myVersion
double myVersion
Definition: NIImporter_DlrNavteq.h:450
NIImporter_DlrNavteq::TrafficlightsHandler::myEdgeCont
NBEdgeCont & myEdgeCont
The edge container to get the referenced edges from.
Definition: NIImporter_DlrNavteq.h:291
NIImporter_DlrNavteq::ConnectedLanesHandler::myEdgeCont
NBEdgeCont & myEdgeCont
The edge container to store loaded edges into.
Definition: NIImporter_DlrNavteq.h:499
NIImporter_DlrNavteq::EdgesHandler::myVersion
double myVersion
version number of current file
Definition: NIImporter_DlrNavteq.h:193
StringTokenizer
Definition: StringTokenizer.h:62
NIImporter_DlrNavteq::EdgesHandler::myColumns
std::vector< int > myColumns
the version number of the edge file being parsed
Definition: NIImporter_DlrNavteq.h:196
NIImporter_DlrNavteq::EdgesHandler::MISSING_COLUMN
static const int MISSING_COLUMN
Definition: NIImporter_DlrNavteq.h:201
NIImporter_DlrNavteq::EdgesHandler::myStreetNames
std::map< std::string, std::string > & myStreetNames
Previously read streat names (non-const because operate[] is more convenient)
Definition: NIImporter_DlrNavteq.h:187
NIImporter_DlrNavteq::TimeRestrictionsHandler::myNotStarted
int myNotStarted
Definition: NIImporter_DlrNavteq.h:397
NIImporter_DlrNavteq::TrafficlightsHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:479
NIImporter_DlrNavteq::NamesHandler::operator=
NamesHandler & operator=(const NamesHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::ConnectedLanesHandler::ConnectedLanesHandler
ConnectedLanesHandler(NBEdgeCont &ne)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:761
NIImporter_DlrNavteq::EdgesHandler::VEHICLE_TYPE
Definition: NIImporter_DlrNavteq.h:209
NIImporter_DlrNavteq::NodesHandler::NodesHandler
NodesHandler(NBNodeCont &nc, const std::string &file, std::map< std::string, PositionVector > &geoms)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:177
UtilExceptions.h
NIImporter_DlrNavteq::ConnectedLanesHandler::operator=
ConnectedLanesHandler & operator=(const ConnectedLanesHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::TrafficlightsHandler::myNodeCont
NBNodeCont & myNodeCont
The node container to get the referenced nodes from.
Definition: NIImporter_DlrNavteq.h:285
OptionsCont
A storage for options typed value containers)
Definition: OptionsCont.h:90
NIImporter_DlrNavteq::ProhibitionHandler
Imports prohibitions regarding connectivity.
Definition: NIImporter_DlrNavteq.h:421
NIImporter_DlrNavteq::EdgesHandler::EXTENDED_NUMBER_OF_LANES
Definition: NIImporter_DlrNavteq.h:226
NIImporter_DlrNavteq::GEO_SCALE
static const std::string GEO_SCALE
scaling factor for geo coordinates (DLRNavteq format uses this to increase floating point precisions)
Definition: NIImporter_DlrNavteq.h:71
NIImporter_DlrNavteq::TimeRestrictionsHandler::myConstructionEntries
int myConstructionEntries
Definition: NIImporter_DlrNavteq.h:396
NIImporter_DlrNavteq::EdgesHandler::NUMBER_OF_LANES
Definition: NIImporter_DlrNavteq.h:214
NIImporter_DlrNavteq::ProhibitionHandler::ProhibitionHandler
ProhibitionHandler(NBEdgeCont &ne, const std::string &file, time_t constructionTime)
Constructor.
Definition: NIImporter_DlrNavteq.cpp:700
LineHandler.h
NIImporter_DlrNavteq::EdgesHandler::SUBAREA_ID
Definition: NIImporter_DlrNavteq.h:223
NIImporter_DlrNavteq::ProhibitionHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:713
NIImporter_DlrNavteq::readTimeRec
static time_t readTimeRec(const std::string &start, const std::string &duration)
Definition: NIImporter_DlrNavteq.cpp:647
NIImporter_DlrNavteq::EdgesHandler::FUNCTIONAL_ROAD_CLASS
Definition: NIImporter_DlrNavteq.h:212
NIImporter_DlrNavteq::NodesHandler::myNodeCont
NBNodeCont & myNodeCont
Definition: NIImporter_DlrNavteq.h:116
NIImporter_DlrNavteq::ProhibitionHandler::myConstructionTime
time_t myConstructionTime
Definition: NIImporter_DlrNavteq.h:451
NIImporter_DlrNavteq::loadNetwork
static void loadNetwork(const OptionsCont &oc, NBNetBuilder &nb)
Loads content of the optionally given dlr-navteq (aka Elmar-fomat) folder.
Definition: NIImporter_DlrNavteq.cpp:65
NIImporter_DlrNavteq::EdgesHandler::NAME_ID1_REGIONAL
Definition: NIImporter_DlrNavteq.h:217
NIImporter_DlrNavteq::ProhibitionHandler::myEdgeCont
NBEdgeCont & myEdgeCont
The edge container to store loaded edges into.
Definition: NIImporter_DlrNavteq.h:448
NIImporter_DlrNavteq::EdgesHandler::FORM_OF_WAY
Definition: NIImporter_DlrNavteq.h:210
NIImporter_DlrNavteq::EdgesHandler::LENGTH
Definition: NIImporter_DlrNavteq.h:208
NIImporter_DlrNavteq::TimeRestrictionsHandler::myEdgeCont
NBEdgeCont & myEdgeCont
The edge container.
Definition: NIImporter_DlrNavteq.h:389
NIImporter_DlrNavteq::TimeRestrictionsHandler::printSummary
void printSummary()
Definition: NIImporter_DlrNavteq.cpp:618
NIImporter_DlrNavteq::ConnectedLanesHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:771
NIImporter_DlrNavteq::EdgesHandler::getStreetNameFromIDs
std::string getStreetNameFromIDs(const std::string &regionalID, const std::string &localID) const
build the street name for the given ids
Definition: NIImporter_DlrNavteq.cpp:444
NBTypeCont
A storage for available types of edges.
Definition: NBTypeCont.h:55
NIImporter_DlrNavteq::EdgesHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:268
NIImporter_DlrNavteq::readVersion
static double readVersion(const std::string &line, const std::string &file)
Definition: NIImporter_DlrNavteq.cpp:153
NIImporter_DlrNavteq::TimeRestrictionsHandler::myRemovedEdges
int myRemovedEdges
Definition: NIImporter_DlrNavteq.h:400
NIImporter_DlrNavteq::EdgesHandler::BETWEEN_NODE_ID
Definition: NIImporter_DlrNavteq.h:207
NIImporter_DlrNavteq::TimeRestrictionsHandler::myCS_max
time_t myCS_max
Definition: NIImporter_DlrNavteq.h:395
NIImporter_DlrNavteq::TimeRestrictionsHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:563
NIImporter_DlrNavteq::TimeRestrictionsHandler::myCS_min
time_t myCS_min
Definition: NIImporter_DlrNavteq.h:394
NIImporter_DlrNavteq::NodesHandler::report
bool report(const std::string &result)
Parsing method.
Definition: NIImporter_DlrNavteq.cpp:189
NIImporter_DlrNavteq::EdgesHandler::ColumnName
ColumnName
Definition: NIImporter_DlrNavteq.h:203
config.h
NIImporter_DlrNavteq::EdgesHandler::NODE_ID_TO
Definition: NIImporter_DlrNavteq.h:206
NIImporter_DlrNavteq::EdgesHandler::myTypeCont
NBTypeCont & myTypeCont
The type container to retrieve type info from.
Definition: NIImporter_DlrNavteq.h:181
NIImporter_DlrNavteq::NodesHandler::~NodesHandler
~NodesHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:185
NIImporter_DlrNavteq::EdgesHandler::myNodeCont
NBNodeCont & myNodeCont
The node container to get the referenced nodes from.
Definition: NIImporter_DlrNavteq.h:175
NIImporter_DlrNavteq::EdgesHandler::myGeoms
std::map< std::string, PositionVector > & myGeoms
Previously read edge geometries (manipulated during use)
Definition: NIImporter_DlrNavteq.h:184
NIImporter_DlrNavteq::EdgesHandler::NAME_ID2_LOCAL
Definition: NIImporter_DlrNavteq.h:218
NIImporter_DlrNavteq::NodesHandler::operator=
NodesHandler & operator=(const NodesHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::EdgesHandler::HOUSENUMBERS_LEFT
Definition: NIImporter_DlrNavteq.h:220
NIImporter_DlrNavteq::TrafficlightsHandler::operator=
TrafficlightsHandler & operator=(const TrafficlightsHandler &)
Invalidated assignment operator.
NIImporter_DlrNavteq::EdgesHandler::SPECIAL_RESTRICTIONS
Definition: NIImporter_DlrNavteq.h:225
NIImporter_DlrNavteq::TrafficlightsHandler
Importer of traffic lights stored in DLRNavteq's (aka elmar) format.
Definition: NIImporter_DlrNavteq.h:256
NIImporter_DlrNavteq::UNDEFINED
static const std::string UNDEFINED
magic value for undefined stuff
Definition: NIImporter_DlrNavteq.h:74
NIImporter_DlrNavteq::EdgesHandler::ZIP_CODE
Definition: NIImporter_DlrNavteq.h:221
NIImporter_DlrNavteq::NamesHandler::~NamesHandler
~NamesHandler()
Destructor.
Definition: NIImporter_DlrNavteq.cpp:519
NIImporter_DlrNavteq::EdgesHandler::BRUNNEL_TYPE
Definition: NIImporter_DlrNavteq.h:211