de.cm.osm2po.routing
Class MlgRevRouter

java.lang.Object
  extended by de.cm.osm2po.routing.MlgRevRouter
All Implemented Interfaces:
GradualRouter, MultiPathRouter, SingleTargetRouter

public class MlgRevRouter
extends java.lang.Object
implements GradualRouter

Ein Router, der in beide Richtungen routen kann.

Author:
(c) 2012/2013 - Carsten Moeller - info@osm2po

Constructor Summary
MlgRevRouter()
           
 
Method Summary
 int expandNext()
          Expandiert den naechsten Vertex in der PQ.
 int[] findPath(Graph graph, int sourceId, int targetId, float maxCost, java.util.Properties params)
          Traversiert den Graphen, bricht ab, sobald der Ziel-Vertex besucht wurde und liefert den Path.
 double getExpansion()
          Liefert eine Kennzahl fuer die ungefaehre Ausdehnung nach GradualRouter.expandNext().
 int[] getVisited()
          Liefert eine Menge aller besuchten VertexIDs.
 int[] getWgb()
           
 void init(Graph graph, int sourceId, int targetId, float maxCost, java.util.Properties params)
          Initialisiert den Graphen, traversiert aber nicht!
 boolean isVisited(int vertexId)
          Liefert true, wenn sich ein Vertex nach der Traversierung in der BlackList (ClosedList) befindet, also besucht bzw. erreicht wurde.
 int[] makePath(int toTargetId)
          Erstellt den Pfad nach erfolgreichem MultiPathRouter.traverse(Graph, int, int, float, Properties) Dabei werden vom Ziel die Kanten rueckwaerts durchfahren, die Reihenfolge umgedreht und vorwaers sortiert zurueckgeliefert.
 void reset()
          Gibt Speicherresourcen frei.
 void setLog(Log log)
          Setzt einen optionalen Logger.
 MlgRevRouter setReverse(boolean reverse)
           
 void traverse(Graph graph, int sourceId, int targetId, float maxCost, java.util.Properties params)
          Traversiert den Graphen und bricht ab, sobald der Ziel-Vertex besucht wurde oder die maxCost ueberschritten wurde.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MlgRevRouter

public MlgRevRouter()
Method Detail

reset

public void reset()
Description copied from interface: SingleTargetRouter
Gibt Speicherresourcen frei. Aufrufe zu z.B SingleTargetRouter.getVisited() sind danach nicht mehr moeglich und verursachen Fehler. Es muss dann erst wieder SingleTargetRouter.findPath(Graph, int, int, float, Properties) aufgerufen werden, um auf derartige Informationen abzugreifen.

Specified by:
reset in interface SingleTargetRouter

setLog

public void setLog(Log log)
Description copied from interface: SingleTargetRouter
Setzt einen optionalen Logger.

Specified by:
setLog in interface SingleTargetRouter
Parameters:
log - Log

setReverse

public MlgRevRouter setReverse(boolean reverse)

findPath

public int[] findPath(Graph graph,
                      int sourceId,
                      int targetId,
                      float maxCost,
                      java.util.Properties params)
Description copied from interface: SingleTargetRouter
Traversiert den Graphen, bricht ab, sobald der Ziel-Vertex besucht wurde und liefert den Path.

Specified by:
findPath in interface SingleTargetRouter
Parameters:
graph - Graph
sourceId - Vertex Start Id
targetId - Vertex Ziel Id
maxCost - Maximal zulaessige Wegkosten. Abbruchkriterium.
params - Properties weitere Einstellungen (NULLABLE).
Returns:
int[] Indizes (nicht die IDs!) der Edge-Objekte vom Start zum Ziel oder null, wenn nicht gefunden.

traverse

public void traverse(Graph graph,
                     int sourceId,
                     int targetId,
                     float maxCost,
                     java.util.Properties params)
Description copied from interface: MultiPathRouter
Traversiert den Graphen und bricht ab, sobald der Ziel-Vertex besucht wurde oder die maxCost ueberschritten wurde.

Specified by:
traverse in interface MultiPathRouter
Parameters:
graph - Graph
sourceId - Vertex Start Id
targetId - Vertex Ziel Id
maxCost - Maximal zulaessige Wegkosten. Abbruchkriterium.
params - Properties weitere Einstellungen (NULLABLE).
See Also:
MultiPathRouter.makePath(int), SingleTargetRouter.getVisited()

init

public void init(Graph graph,
                 int sourceId,
                 int targetId,
                 float maxCost,
                 java.util.Properties params)
Description copied from interface: GradualRouter
Initialisiert den Graphen, traversiert aber nicht!

Specified by:
init in interface GradualRouter
Parameters:
graph - Graph der Graph.
sourceId - int Start
targetId - int Ziel
maxCost - float Maximale Kosten. Abbruchkriterium.
params - Properties weitere Parameter.

getExpansion

public double getExpansion()
Description copied from interface: GradualRouter
Liefert eine Kennzahl fuer die ungefaehre Ausdehnung nach GradualRouter.expandNext().
Dies kann z.B. die aktuelle Streckenlaenge sein. Ein BidiRouter kann hiermit eine gleichmaessige Ausdehnung von beiden Seiten sicherstellen, was bei einem Einsatz zusaetzlicher Heuristiken, z.B. bei AStar, entscheidend ist.

Specified by:
getExpansion in interface GradualRouter
Returns:
double Ausdehnungs-Kennzahl.

getWgb

public int[] getWgb()
Specified by:
getWgb in interface GradualRouter
Returns:
int[] WhiteGreyBlack (OpenClosed) List des Routers.

expandNext

public int expandNext()
Description copied from interface: GradualRouter
Expandiert den naechsten Vertex in der PQ.

Specified by:
expandNext in interface GradualRouter
Returns:
VertexId oder 0, wenn pq leer.

makePath

public final int[] makePath(int toTargetId)
Description copied from interface: MultiPathRouter
Erstellt den Pfad nach erfolgreichem MultiPathRouter.traverse(Graph, int, int, float, Properties) Dabei werden vom Ziel die Kanten rueckwaerts durchfahren, die Reihenfolge umgedreht und vorwaers sortiert zurueckgeliefert.

Specified by:
makePath in interface MultiPathRouter
Parameters:
toTargetId - Id des ZielVertex. Dies muss nicht zwangslaeufig der Ziel-Knoten, sein. Es kann auch ein beliebiger Vertex aus SingleTargetRouter.getVisited() uebergeben werden, um so weitere Pfade zu finden.
Returns:
Indizes (nicht die IDs!) der Edge-Objekte vom Start zum Ziel oder null, wenn kein Pfad vorhanden.

getVisited

public final int[] getVisited()
Description copied from interface: SingleTargetRouter
Liefert eine Menge aller besuchten VertexIDs. Ob diese sortiert ist oder nicht, haengt von der Implementation ab.

Specified by:
getVisited in interface SingleTargetRouter
Returns:
int[] VertexIds (not null)

isVisited

public final boolean isVisited(int vertexId)
Description copied from interface: MultiPathRouter
Liefert true, wenn sich ein Vertex nach der Traversierung in der BlackList (ClosedList) befindet, also besucht bzw. erreicht wurde.

Specified by:
isVisited in interface MultiPathRouter
Parameters:
vertexId - int Id des Vertex > 0.
Returns:
wurde besucht, ja/nein.

osm2po-core-4.8.8 (c) 2012 Carsten Moeller - info@osm2po.de