17 #ifndef PedestrianRouter_h 18 #define PedestrianRouter_h 47 template<
class E,
class L,
class N,
class V>
83 double compute(
const E* from,
const E* to,
double departPos,
double arrivalPos,
double speed,
84 SUMOTime msTime,
const N* onlyNode, std::vector<const E*>& into,
bool allEdges =
false) {
85 if (getSidewalk<E, L>(from) == 0) {
86 WRITE_WARNING(
"Departure edge '" + from->getID() +
"' does not allow pedestrians.");
89 if (getSidewalk<E, L>(to) == 0) {
90 WRITE_WARNING(
"Destination edge '" + to->getID() +
"' does not allow pedestrians.");
93 _IntermodalTrip trip(from, to, departPos, arrivalPos, speed, msTime, onlyNode);
94 std::vector<const _IntermodalEdge*> intoPed;
97 &trip, msTime, intoPed);
100 for (
const _IntermodalEdge* pedEdge : intoPed) {
101 if (pedEdge->includeInRoute(allEdges)) {
102 into.push_back(pedEdge->getEdge());
107 #ifdef PedestrianRouter_DEBUG_ROUTES 108 std::cout <<
TIME2STEPS(msTime) <<
" trip from " << from->getID() <<
" to " << to->getID()
109 <<
" departPos=" << departPos
110 <<
" arrivalPos=" << arrivalPos
111 <<
" onlyNode=" << (onlyNode == 0 ?
"NULL" : onlyNode->getID())
113 <<
" resultEdges=" <<
toString(into)
117 return success ? time : -1.;
122 bool compute(
const E*,
const E*,
const _IntermodalTrip*
const,
128 std::vector<_IntermodalEdge*> toProhibitPE;
129 for (
typename std::vector<E*>::const_iterator it = toProhibit.begin(); it != toProhibit.end(); ++it) {
const EdgePair & getBothDirections(const E *e) const
Returns the pair of forward and backward edge.
_IntermodalEdge * getDepartConnector(const E *e, const int splitIndex=0) const
Returns the departing intermodal connector at the given split offset.
const std::vector< _IntermodalEdge * > & getAllEdges()
virtual ~PedestrianRouter()
Destructor.
virtual SUMOAbstractRouter< E, _IntermodalTrip > * clone()
IntermodalTrip< E, N, V > _IntermodalTrip
static double getTravelTimeStatic(const IntermodalEdge *const edge, const IntermodalTrip< E, N, V > *const trip, double time)
virtual bool compute(const E *from, const E *to, const V *const vehicle, SUMOTime msTime, std::vector< const E *> &into)
Builds the route between the given edges using the minimum effort at the given time The definition of...
#define WRITE_WARNING(msg)
PedestrianRouter()
Constructor.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
Computes the shortest path through a network using the Dijkstra algorithm.
bool compute(const E *, const E *, const _IntermodalTrip *const, SUMOTime, std::vector< const E *> &)
Builds the route between the given edges using the minimum effort at the given time The definition of...
double compute(const E *from, const E *to, double departPos, double arrivalPos, double speed, SUMOTime msTime, const N *onlyNode, std::vector< const E *> &into, bool allEdges=false)
Builds the route between the given edges using the minimum effort at the given time The definition of...
_IntermodalNetwork * myPedNet
_IntermodalEdge * getArrivalConnector(const E *e, const int splitIndex=0) const
Returns the arriving intermodal connector at the given split offset.
IntermodalEdge< E, L, N, V > _IntermodalEdge
PedestrianRouter & operator=(const PedestrianRouter &s)
Invalidated assignment operator.
the intermodal network storing edges, connections and the mappings to the "real" edges ...
the base edge type that is given to the internal router (SUMOAbstractRouter)
void prohibit(const std::vector< E *> &toProhibit)
_InternalRouter * myInternalRouter
PedestrianRouter(_IntermodalNetwork *net)
IntermodalNetwork< E, L, N, V > _IntermodalNetwork
the "vehicle" type that is given to the internal router (SUMOAbstractRouter)
DijkstraRouter< _IntermodalEdge, _IntermodalTrip, SUMOAbstractRouterPermissions< _IntermodalEdge, _IntermodalTrip > > _InternalRouter