Eclipse SUMO - Simulation of Urban MObility
NBPTLineCont.h
Go to the documentation of this file.
1/****************************************************************************/
2// Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
3// Copyright (C) 2001-2023 German Aerospace Center (DLR) and others.
4// This program and the accompanying materials are made available under the
5// terms of the Eclipse Public License 2.0 which is available at
6// https://www.eclipse.org/legal/epl-2.0/
7// This Source Code may also be made available under the following Secondary
8// Licenses when the conditions for such availability set forth in the Eclipse
9// Public License 2.0 are satisfied: GNU General Public License, version 2
10// or later which is available at
11// https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
12// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
13/****************************************************************************/
18// Container for NBPTLine during netbuild
19/****************************************************************************/
20#pragma once
21#include <config.h>
22
23#include <vector>
25#include "NBEdgeCont.h"
26#include "NBPTLine.h"
27#include "NBVehicle.h"
28
29
30// ===========================================================================
31// class definitions
32// ===========================================================================
34public:
37
39 bool insert(NBPTLine* ptLine);
40
41 const std::map<std::string, NBPTLine*>& getLines() const {
42 return myPTLines;
43 }
44
45 void process(NBEdgeCont& ec, NBPTStopCont& sc, bool routeOnly = false);
46
48 void replaceEdge(const std::string& edgeID, const EdgeVector& replacement);
49
51 void fixBidiStops(const NBEdgeCont& ec);
52
54 void removeInvalidEdges(const NBEdgeCont& ec);
55
57 void fixPermissions();
58
59 std::set<std::string>& getServedPTStops();
60private:
61
62 static const int FWD;
63 static const int BWD;
64
66 std::map<std::string, NBPTLine*> myPTLines;
67
69 void reviseStops(NBPTLine* line, const NBEdgeCont& ec, NBPTStopCont& sc);
70
71 void reviseSingleWayStops(NBPTLine* line, const NBEdgeCont& ec, NBPTStopCont& sc);
72
73 /* @brief find way element corresponding to the stop
74 * @note: if the edge id is updated, the stop extent is recomputed */
75 std::shared_ptr<NBPTStop> findWay(NBPTLine* line, std::shared_ptr<NBPTStop> stop, const NBEdgeCont& ec, NBPTStopCont& sc) const;
76
77 void constructRoute(NBPTLine* myPTLine, const NBEdgeCont& cont);
78
79 std::set<std::string> myServedPTStops;
80
81 static double getCost(const NBEdgeCont& ec, SUMOAbstractRouter<NBRouterEdge, NBVehicle>& router,
82 const std::shared_ptr<NBPTStop> from, const std::shared_ptr<NBPTStop> to, const NBVehicle* veh);
83
84 static std::string getWayID(const std::string& edgeID);
85
87 std::map<std::string, std::set<NBPTLine*> > myPTLineLookup;
88};
89
90
std::vector< NBEdge * > EdgeVector
container for (sorted) edges
Definition: NBCont.h:42
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:59
static double getCost(const NBEdgeCont &ec, SUMOAbstractRouter< NBRouterEdge, NBVehicle > &router, const std::shared_ptr< NBPTStop > from, const std::shared_ptr< NBPTStop > to, const NBVehicle *veh)
void reviseStops(NBPTLine *line, const NBEdgeCont &ec, NBPTStopCont &sc)
find directional edge for all stops of the line
void fixPermissions()
ensure that all turn lanes have sufficient permissions
void process(NBEdgeCont &ec, NBPTStopCont &sc, bool routeOnly=false)
std::set< std::string > myServedPTStops
Definition: NBPTLineCont.h:79
~NBPTLineCont()
destructor
std::map< std::string, NBPTLine * > myPTLines
The map of names to pt lines.
Definition: NBPTLineCont.h:66
std::shared_ptr< NBPTStop > findWay(NBPTLine *line, std::shared_ptr< NBPTStop > stop, const NBEdgeCont &ec, NBPTStopCont &sc) const
void replaceEdge(const std::string &edgeID, const EdgeVector &replacement)
replace the edge with the given edge list in all lines
std::set< std::string > & getServedPTStops()
const std::map< std::string, NBPTLine * > & getLines() const
Definition: NBPTLineCont.h:41
void constructRoute(NBPTLine *myPTLine, const NBEdgeCont &cont)
bool insert(NBPTLine *ptLine)
insert new line
void removeInvalidEdges(const NBEdgeCont &ec)
filter out edges that were removed due to –geometry.remove
void fixBidiStops(const NBEdgeCont &ec)
select the correct stop on superposed rail edges
static const int BWD
Definition: NBPTLineCont.h:63
static const int FWD
Definition: NBPTLineCont.h:62
static std::string getWayID(const std::string &edgeID)
void reviseSingleWayStops(NBPTLine *line, const NBEdgeCont &ec, NBPTStopCont &sc)
std::map< std::string, std::set< NBPTLine * > > myPTLineLookup
The map of edge ids to lines that use this edge in their route.
Definition: NBPTLineCont.h:87
Container for public transport stops during the net building process.
Definition: NBPTStopCont.h:44
A vehicle as used by router.
Definition: NBVehicle.h:42