public class OverlayGraph
extends java.lang.Object
Graph
und bildet die Grundlage fuer das Routing
mittels SingleTargetRouter
-Instanzen. Das heisst:
OverlayNode.snap(Graph, int[])
) als auch als reine
Koordinaten ergaenzt werden, und dies sogar pro Instanz.
Der grundsaetzliche Trick besteht darin, die im Routing benoetigten
Indizes bzw. IDs fuer Edges und Vertices beim Hinzufuegen,
ausgehend von den bereits vergebenen im statischen Graphen,
fortlaufend weiter hochzuzaehlen, wodurch eine einfache Unterscheidung
moeglich wird.Constructor and Description |
---|
OverlayGraph(Graph graph) |
Modifier and Type | Method and Description |
---|---|
double |
calcPathLength(int[] path)
Berechnet die Strecke einer Route.
|
double |
calcPathTime(int[] path)
Berechnet die Fahrzeit einer Route.
|
OverlayEdge |
getEdgeRamp(int edgeIdx)
Findet zu einer statischen Edge die gesplittete virtuelle
Variante, wenn vorhanden.
|
Graph |
getGraph() |
int |
getMaxEdgeIdx() |
int |
getMaxVertexId() |
OverlayEdge[] |
getOutgoingOverlayEdges(int sourceId)
Liefert die abgehenden Kanten zu einem Node.
|
OverlayEdge[] |
getOutgoingVirtualEdges(int sourceVertexId)
Liefert abgehende, rein virtuelle Kanten eines Vertex.
|
OverlayEdge |
getOverlayEdge(int virtualIdx)
Liefert eine OverlayEdge aufgrund ihrer virtuellen Idx.
|
OverlayNode |
getOverlayNode(int virtualId)
Liefert einen OverlayNode aufgrund seiner virtuellen Id.
|
void |
insertEdge(OverlayEdge overlayEdge)
Fuegt eine OverlayEdge in den Graphen ein.
|
OverlayNode |
insertNode(OverlayNode overlayNode)
Fuegt einen OverlayNode in den virtuellen Graphen ein.
|
static OverlayEdge[] |
translatePath(Graph graph,
int[] path)
Wandelt eine Liste von EdgeIdx in eine Liste von
Pseudo-
OverlayEdge s ohne Geometrien. |
OverlayEdge[] |
translatePath(int[] path)
Wandelt eine Liste von EdgeIdx in eine Liste von
OverlayEdge s. |
static OverlayEdge[] |
translatePath(OverlayGraph overlayGraph,
int[] path)
Wandelt eine Liste von EdgeIdx in eine Liste von
OverlayEdge s. |
public Graph getGraph()
public int getMaxVertexId()
public int getMaxEdgeIdx()
public OverlayNode insertNode(OverlayNode overlayNode)
overlayNode
- OverlayNode
OverlayNode
oder, wenn bereits
vorhanden, ein bereits gleicher aus dem Graphen.
Nodes, die lediglich Vertices aus dem Original-Graphen
repraesentieren, werden nicht eingefuegt und lediglich um
Koordinaten erweitert zurueckgeliefert.public void insertEdge(OverlayEdge overlayEdge)
overlayEdge
- OverlayEdge
public OverlayEdge getOverlayEdge(int virtualIdx)
virtualIdx
- int Idx.OverlayEdge
oder null, wenn nicht gefunden.public OverlayNode getOverlayNode(int virtualId)
virtualId
- int Id.OverlayNode
oder null, wenn nicht gefunden.public OverlayEdge[] getOutgoingOverlayEdges(int sourceId)
sourceId
- int Id des Vertex oder OverlayNodes.OverlayEdge
NULLABLE.public OverlayEdge[] getOutgoingVirtualEdges(int sourceVertexId)
sourceVertexId
- int Id des Vertex aus statischem Graphen.OverlayEdge
NULLABLE.java.lang.IllegalArgumentException
- wenn id nicht statischgetOutgoingOverlayEdges(int)
public OverlayEdge getEdgeRamp(int edgeIdx)
edgeIdx
- int Index der Edge im original Graphen.OverlayEdge
oder null, wenn nicht gefunden.public OverlayEdge[] translatePath(int[] path)
OverlayEdge
s.Graph
werden nicht mit Geometrien
angereichert und bleiben somit null
translatePath(OverlayGraph, int[])
mit this.path
- int[] Array von Referenzen auf Edges.OverlayEdge
[] Array oder null, wenn null uebergeben.public static OverlayEdge[] translatePath(OverlayGraph overlayGraph, int[] path)
OverlayEdge
s.Graph
werden nicht mit Geometrien
angereichert und bleiben somit null
overlayGraph
- OverlayGraph
path
- int[] Array von Referenzen auf Edges.OverlayEdge
[] Array oder null, wenn null uebergeben.public static OverlayEdge[] translatePath(Graph graph, int[] path)
OverlayEdge
s ohne Geometrien.graph
- Graph
path
- int[] Array von Referenzen auf Edges.OverlayEdge
[] Array oder null, wenn null uebergeben.public double calcPathLength(int[] path)
path
- int[] Array von Referenzen auf Edges.public double calcPathTime(int[] path)
path
- int[] Array von Referenzen auf Edges.