de.cm.osm2po.routing
Class DefaultRouter

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

public class DefaultRouter
extends java.lang.Object
implements MultiPathRouter

Dijkstra-AStar-Implemetation eines Routings.

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

Constructor Summary
DefaultRouter()
           
 
Method Summary
protected  double calcEdgeCost(int edgeIdx)
          Liefert die Kosten einer Kante.
protected  double calcVertexCost(int vertexId)
          Liefert die heuristischen Kosten eines Vertex.
 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.
 int[] getVisited()
          Liefert eine Menge aller besuchten VertexIDs.
 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.
 void traverse(Graph graph, int sourceId, int targetId, float maxCost, java.util.Properties params)
          Traversiert den Graphen bis zur Abbruchbedingung.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultRouter

public DefaultRouter()
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

traverse

public void traverse(Graph graph,
                     int sourceId,
                     int targetId,
                     float maxCost,
                     java.util.Properties params)
Traversiert den Graphen bis zur Abbruchbedingung. Diese ist entweder das Erreichen der targetId oder die Ueberschreitung der maxCost. Siehe Parameter.

Specified by:
traverse in interface MultiPathRouter
Parameters:
graph - Graph
sourceId - Vertex Start Id (1-wertig)
targetId - Vertex Ziel Id (1-wertig)
maxCost - Abbruchbedingung bei Ueberschreitung dieser Kosten.
params - Properties weitere Einstellungen (NULLABLE).

Diese Implementation kennt folgende zusaetzliche Properties:
findShortestPath true/false : Finde den kuerzesten Weg.
ignoreRestrictions true/false : Ignoriere Abbiegevorschriften.
ignoreOneWays true/false : Gegen die Einbahnstrasse erlaubt.
heuristicFactor 0 Dijkstra, 1 AStar. Andere Werte sind experimentell.
See Also:
MultiPathRouter.makePath(int), SingleTargetRouter.getVisited()

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.

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.

calcVertexCost

protected double calcVertexCost(int vertexId)
Liefert die heuristischen Kosten eines Vertex. Diese Implementation liefert entweder 0 fuer Dijkstra oder die heuristische Distanz zum Ziel fuer AStar. Eine abgeleitete Klasse koennte an dieser Stelle z.B. auch noch konstante Kosten einer Vertex-Klasse hinzuaddieren. So z.B. fuer Ampeln, Mautstationen oder Bahnuebergaenge.

Parameters:
vertexId - Id des Vertex
Returns:
double Kosten.

calcEdgeCost

protected double calcEdgeCost(int edgeIdx)
Liefert die Kosten einer Kante. Diese Implementation liefert entweder die Distanz oder die Zeit.

Parameters:
edgeIdx - int Index in der Adjazenzliste.
Returns:
double Kosten.

osm2po-core-5.0.0 (c) December 24 2014 Carsten Moeller - info@osm2po.de