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.
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...
#define WRITE_WARNING(msg)
_IntermodalEdge * getArrivalEdge(const E *e, const double pos=-1.)
Returns the arriving Intermodal edge.
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
the "vehicle" type that is given to the internal router (SUMOAbstractRouter)
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...
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)
double recomputeCosts(const std::vector< const E * > &, const _IntermodalTrip *const, SUMOTime) const
const EdgePair & getBothDirections(const E *e)
Returns the pair of forward and backward edge.
_IntermodalNetwork * myPedNet
virtual ~PedestrianRouter()
Destructor.
void prohibit(const std::vector< E * > &toProhibit)
IntermodalTrip< E, N, V > _IntermodalTrip