de.cm.osm2po.routing
Class MlgRouter

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

public class MlgRouter
extends java.lang.Object
implements MultiPathRouter

Simple Dijkstra-ShortestPath-Implemetation. Allerdings mit MultiLevel-Support auf der Basis von Geometric Containers.

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

Constructor Summary
MlgRouter()
           
 
Method Summary
 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

MlgRouter

public MlgRouter()
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.

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