20 #ifndef PedestrianRouter_h 21 #define PedestrianRouter_h 54 template<
class E,
class L,
class N,
class V,
class INTERNALROUTER>
89 bool compute(
const E* from,
const E* to,
double departPos,
double arrivalPos,
double speed,
90 SUMOTime msTime,
const N* onlyNode, std::vector<const E*>& into,
bool allEdges =
false) {
92 if (getSidewalk<E, L>(from) == 0) {
93 WRITE_WARNING(
"Departure edge '" + from->getID() +
"' does not allow pedestrians.");
96 if (getSidewalk<E, L>(to) == 0) {
97 WRITE_WARNING(
"Destination edge '" + to->getID() +
"' does not allow pedestrians.");
100 _IntermodalTrip trip(from, to, departPos, arrivalPos, speed, msTime, onlyNode);
101 std::vector<const _IntermodalEdge*> intoPed;
104 &trip, msTime, intoPed);
106 for (
int i = 0; i < (int)intoPed.size(); ++i) {
107 if (intoPed[i]->includeInRoute(allEdges)) {
108 into.push_back(intoPed[i]->getEdge());
112 #ifdef PedestrianRouter_DEBUG_ROUTES 113 double time = msTime;
114 for (
int i = 0; i < intoPed.size(); ++i) {
117 std::cout <<
TIME2STEPS(msTime) <<
" trip from " << from->getID() <<
" to " << to->getID()
118 <<
" departPos=" << departPos
119 <<
" arrivalPos=" << arrivalPos
120 <<
" onlyNode=" << (onlyNode == 0 ?
"NULL" : onlyNode->getID())
122 <<
" resultEdges=" <<
toString(into)
132 bool compute(
const E*,
const E*,
const _IntermodalTrip*
const,
142 std::vector<_IntermodalEdge*> toProhibitPE;
143 for (
typename std::vector<E*>::const_iterator it = toProhibit.begin(); it != toProhibit.end(); ++it) {
163 template<
class E,
class L,
class N,
class V>
165 DijkstraRouterTT<IntermodalEdge<E, L, N, V>, IntermodalTrip<E, N, V>, prohibited_withPermissions<IntermodalEdge<E, L, N, V>, IntermodalTrip<E, N, V> > > > { };
_IntermodalEdge * getDepartEdge(const E *e, const double pos=-1.)
Returns the departing Intermodal edge.
const std::vector< _IntermodalEdge * > & getAllEdges()
INTERNALROUTER * myInternalRouter
IntermodalNetwork< E, L, N, V > _IntermodalNetwork
PedestrianRouter()
Constructor.
static double getTravelTimeStatic(const IntermodalEdge *const edge, const IntermodalTrip< E, N, V > *const trip, double time)
PedestrianRouter(_IntermodalNetwork *net)
virtual SUMOAbstractRouter< E, _IntermodalTrip > * clone()
IntermodalEdge< E, L, N, V > _IntermodalEdge
PedestrianRouter & operator=(const PedestrianRouter &s)
Invalidated assignment operator.
#define WRITE_WARNING(msg)
_IntermodalEdge * getArrivalEdge(const E *e, const double pos=-1.)
Returns the arriving Intermodal edge.
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...
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
void prohibit(const std::vector< E *> &toProhibit)
double recomputeCosts(const std::vector< const E *> &, const _IntermodalTrip *const, SUMOTime) const
the "vehicle" type that is given to the internal router (SUMOAbstractRouter)
the pedestrian network storing edges, connections and the mappings to the "real" edges ...
the base edge type that is given to the internal router (SUMOAbstractRouter)
const EdgePair & getBothDirections(const E *e)
Returns the pair of forward and backward edge.
bool 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
virtual ~PedestrianRouter()
Destructor.
IntermodalTrip< E, N, V > _IntermodalTrip