public interface GraphBuildInterceptor
SegmentedWay
s in mehrere Edge
s
zu transformieren bzw. diese fuer den Graph
zu verdichten.
Verdichten heisst, dass eine Vielzahl von Merkmalen des Weges
platzsparend in einem einzigen Integer (Edge.getFlags()
)
untergrebracht werden muessen.
GraphBuilder
errechnet Laenge und Zeit fuer
eine Kante direkt aus dem Weg. Als Flags wird lediglich die Clazz,
also der Weg-Typ als Byte uebertragen. Ein GraphBuildInterceptor
hat also nun die Moeglichkeit, bestimmte Parameter neu zu berechnen und
zu ueberschreiben. Iteriert wird ueber alle Wege, wobei fuer jeden
einzelnen folgendes aufgerufen wird:
Danach werden die Daten transformiert und sortiert, was ebenfalls fuer die
Vertices gilt. Daher werden abschliessend noch folgende Callbacks gerufen.
Vertex
1x onVertex(Vertex)
Edge
1x onEdgePosition(int, Edge)
DefaultGraphBuildInterceptor
Modifier and Type | Method and Description |
---|---|
void |
close(java.io.File graphFile)
Bietet die Moeglichkeit, Resourcen aufzuraeumen.
|
void |
onEdgeCreate(Edge edge,
int segmentIdx,
boolean reverse)
Wird fuer jede Kante 2 Mal, und zwar fuer die
Hin- und Rueckrichtung, aufgerufen.
|
void |
onEdgePosition(int edgeIdx,
Edge edge)
Wird vor dem endgueltigen Schreiben gerufen und informiert
ueber die finale Position der Kante im Graphen.
|
void |
onVertex(Vertex vertex)
Simpler callback, der fuer jeden Vertex 1 Mal ausgeloest wird.
|
void |
onWay(SegmentedWay way)
Wird vor allen Verarbeitungsschritten eines Weges genau 1 Mal aufgerufen.
|
void |
open(Config config)
Wird einmalig nach der Instanziierung aufgerufen.
|
void open(Config config)
config
- Config
Konfiguration.void close(java.io.File graphFile)
graphFile
- Pfad zur fertigen Graph-Datei.GraphBuilder.addExtension(File, byte, byte, de.cm.osm2po.primitives.Var)
void onWay(SegmentedWay way)
way
- SegmentedWay
void onEdgeCreate(Edge edge, int segmentIdx, boolean reverse)
edge
- Edge
die aus dem WaySegment
abgeleitete Kante.segmentIdx
- int Index im SegmentedWay
.reverse
- true/false Richtung der Edge
.onWay(SegmentedWay)
void onEdgePosition(int edgeIdx, Edge edge)
Graph.getEdgeFlags()
.edgeIdx
- fortlaufender Index der Edge in der Adjazenz-Listeedge
- Edge
Kante.