public class Graph
extends java.lang.Object
GraphBuilder
Modifier and Type | Field and Description |
---|---|
static byte |
EXTENSION_SKIP_CLAZZ
Extensions ab dieser Clazz nicht ins RAM cachen
|
static int |
SUPPORT_BARRIERS
Barriers werden in die TurnRestrictions gemergt
|
static int |
SUPPORT_EDGEFLAGS
Unterstuetzung von EdgeFlags.
|
static int |
SUPPORT_EXTENSIONS
Extensions werden gecacht
|
static int |
SUPPORT_INMEMORY
Es wird versucht alle Segmente in den Speicher zu laden.
|
static int |
SUPPORT_LATLON
Untestuetzung von Koordinaten. z.B. fuer AStar oder Vertex-Lookups.
|
static int |
SUPPORT_NOTHING
Keine Unterstuetzung zusaetzlicher Features.
|
static int |
SUPPORT_RASTER_EDGE
Dynamische Einsortierung von Segmenten in ein Raster.
|
static int |
SUPPORT_RASTER_VERTEX
Dynamische Einsortierung von Vertices in ein Raster.
|
static int |
SUPPORT_REVERSE
Dynamische Anreicherung des Graphen um Reverse-Routing-Infos.
|
Constructor and Description |
---|
Graph(java.io.File graphFile)
CTOR.
|
Graph(java.io.File graphFile,
Log log,
int supports,
boolean async,
java.util.Properties props)
CTOR.
|
Graph(java.io.InputStream graphInputStream)
CTOR.
|
Graph(InStream graphInStream)
CTOR.
|
Graph(InStream graphInStream,
Log log,
int supports,
boolean async,
java.util.Properties props)
CTOR.
|
Modifier and Type | Method and Description |
---|---|
double |
calcPathLength(int[] path)
Berechnet die Laenge eines Pfades.
|
double |
calcPathTime(int[] path)
Berechnet die Fahrzeit eines Pfades.
|
protected java.lang.Object |
clone() |
void |
close()
Schliesst den Graphen und raeumt den Speicher frei.
|
boolean |
containsWrongWays() |
int[] |
createTransformedEdgeIndex()
Erzeugt ein Index-Array fuer eine umgekehrte Zugriffssicht,
naemlich von einer bekannten EdgeId zum EdgeIdx innerhalb
der Adjazenz-Liste.
|
int[] |
findCloseEdges(float lat,
float lon,
int minCount)
Findet nahe Edges zu einer Koordinate im Umkreis.
|
int |
findClosestVertexId(float lat,
float lon)
Findet den naechsten Vertex zu einer Koordinate im Umkreis
von etwa 5 km.
|
int[] |
findClosestVertexIds(float lat,
float lon,
int zoneRadius,
int n)
Findet die naechsten Vertices (IDs) zu einer Koordinate im Umkreis
und liefert diese sortiert nach Distanz (kuerzeste vorne) zurueck.
|
int[] |
findClosestVertexIdsSphere(float lat,
float lon,
float maxDist,
int n)
Findet die naechsten Vertices (IDs) zu einer Koordinate im Umkreis
und liefert diese sortiert nach Distanz (kuerzeste vorne) zurueck.
|
GraphHeader.ExtensionEntry |
findExtensionEntry(byte id,
byte clazz)
Liefert eine Extension-Info.
|
int[] |
findIncomingEdges(int targetId)
Findet alle ankommenden Edges zu einem Vertex.
|
int[] |
findOutgoingEdges(int sourceId)
Findet alle wegfuehrenden Edges zu einem Vertex.
|
int |
findReverseEdge(int edgeIdx)
Findet die gespiegelte Rueckwaers-Kante, wenn vorhanden.
|
int[] |
findVerticesByClazz(byte clazz)
Findet die Indizes aller Vertices einer bestimmten Klasse.
|
float[] |
getEdgeCostsH() |
float[] |
getEdgeCostsKm() |
int[] |
getEdgeEntries() |
int[] |
getEdgeEntriesR() |
int[] |
getEdgeFlags() |
int[] |
getEdgeIds() |
int[] |
getEdgeIdxsR() |
byte[] |
getEdgeNoTurnBits() |
byte[] |
getEdgeNoTurnBitsR() |
IntIntBag |
getEdgeRasterBag() |
int[] |
getEdgeSourceIds() |
int[] |
getEdgeTargetIds() |
Var<?> |
getExtension(byte id,
byte clazz)
Liefert eine bereits gecachte Extension.
|
<T> T |
getFirstExtensionByClass(java.lang.Class<?> clazz)
Bequemlichkeits-Methode, welche die erste Extension im Graphen
findet, die von einem bestimmten Typ ist.
|
int |
getGraphId() |
float[] |
getLats() |
float[] |
getLons() |
float |
getMaxLat() |
float |
getMaxLon() |
float |
getMinLat() |
float |
getMinLon() |
byte[] |
getVertexClazzes() |
static boolean |
isGraphFile(java.io.File file) |
boolean |
isInitializing() |
static boolean |
isOneWay(int edgeId)
Ermittelt aus der EdgeId, ob es sich um eine
Einbahnstrasse handelt.
|
static boolean |
isReverse(int edgeId)
Ermittelt aus der EdgeId, ob dies eine Rueckwaerts-Kante
ist, es sich hier also um die Spiegelung des
Original-Segments handelt.
|
boolean |
isSupported(int SUPPORT)
Prueft ob der Graph ein oder mehrere Zusatzfeatures unterstuetzt.
|
int |
isTurnRestricted(int fromEdgeIdx,
int toEdgeIdx)
Ermittelt, ob zwischen zwei Edges einer Kreuzung eine
NoTurn-Restriktion vorhanden ist.
|
static boolean |
isWrongWay(int edgeId)
Ermittelt aus der EdgeId, ob es sich um eine
Einbahnstrasse in Gegenrichung handelt.
|
Var<?> |
loadExtension(byte id,
byte clazz)
Sucht eine Extension in der Graphdatei und ruft
fuer diese
Var.readFromStream(InStream) . |
Var<?> |
loadExtension(byte id,
byte clazz,
java.util.Properties props)
Sucht eine Extension in der Graphdatei und ruft
fuer diese
Var.readFromStream(InStream) . |
<T> T |
loadFirstExtensionByClass(java.lang.Class<? extends Var<?>> clazz)
Bequemlichkeits-Methode, welche die erste Extension im Graphen
laedt, die von einem bestimmten Typ ist.
|
VarString |
lookupEdgeName(int edgeIdx)
Liefert den Strassennamen zu einer Edge.
|
LatLons |
lookupGeometry(int edgeIdx)
Liefert alle Koordinaten zu einer Edge.
|
RoutingResultSegment |
lookupSegment(int edgeIdx)
Rekonstruiert alle Segmentinformationen aus einer Edge.
|
boolean |
sync()
Wartet bis der Konstruktor den Graphen
im asynchronen Modus geladen hat.
|
static int |
toEdgeId(int segmentId,
boolean reverse)
Ermittelt aus einer SegmentId die EdgeId ohne
Beruecksichtigung der Information OneWay (Bit 32).
|
static int |
toSegmentId(int edgeId)
Ermittelt aus der EdgeId die SegmentId.
|
public static final byte EXTENSION_SKIP_CLAZZ
public static final int SUPPORT_NOTHING
public static final int SUPPORT_LATLON
public static final int SUPPORT_EDGEFLAGS
public static final int SUPPORT_INMEMORY
public static final int SUPPORT_REVERSE
public static final int SUPPORT_RASTER_EDGE
public static final int SUPPORT_RASTER_VERTEX
public static final int SUPPORT_BARRIERS
public static final int SUPPORT_EXTENSIONS
public Graph(java.io.File graphFile)
Graph(File, Log, int, boolean, Properties)
mit
new Log(), SUPPORT_LATLON
, false
.graphFile
- File
Graph-Datei.public Graph(InStream graphInStream)
Graph(InStream, Log, int, boolean, Properties)
mit
new Log(), SUPPORT_LATLON
, false
.graphInStream
- InStream
public Graph(java.io.InputStream graphInputStream)
graphInputStream
- InputStream
public Graph(InStream graphInStream, Log log, int supports, boolean async, java.util.Properties props)
graphInStream
- InStream
Graph-als Stream NOT NULL.log
- Log
NULLABLE.supports
- int Flags. z.B SUPPORT_LATLON
.async
- true: Der Graph wird asynchron geladen.props
- zusaetzliche Properties
NULLABLE.public Graph(java.io.File graphFile, Log log, int supports, boolean async, java.util.Properties props)
graphFile
- File
Graph-Datei NOT NULL.log
- Log
NULLABLE.supports
- int Flags. z.B SUPPORT_LATLON
.async
- true: Der Graph wird asynchron geladen.props
- zusaetzliche Properties
NULLABLE.protected java.lang.Object clone() throws java.lang.CloneNotSupportedException
clone
in class java.lang.Object
java.lang.CloneNotSupportedException
public boolean sync()
public boolean isSupported(int SUPPORT)
SUPPORT
- int-Flags, z.B 1public boolean containsWrongWays()
public int getGraphId()
public final int[] getEdgeEntries()
public final int[] getEdgeIds()
public final int[] getEdgeSourceIds()
public final int[] getEdgeTargetIds()
public final float[] getEdgeCostsKm()
public final float[] getEdgeCostsH()
public final byte[] getEdgeNoTurnBits()
public final int[] getEdgeFlags()
public final int[] getEdgeIdxsR()
public final int[] getEdgeEntriesR()
public final byte[] getEdgeNoTurnBitsR()
public final float[] getLats()
public final float[] getLons()
public final float getMinLat()
public final float getMinLon()
public final float getMaxLat()
public final float getMaxLon()
public final byte[] getVertexClazzes()
public final GraphHeader.ExtensionEntry findExtensionEntry(byte id, byte clazz)
id
- byte ExtensionIdclazz
- byte ExtensionClazzVar
GraphHeader.ExtensionEntry
oder null.public final <T> T getFirstExtensionByClass(java.lang.Class<?> clazz)
clazz
- Class of Var
Var
loadFirstExtensionByClass(Class)
,
getExtension(byte, byte)
,
ArrayUtils.csvBytesToBooleanArray(String)
public final <T> T loadFirstExtensionByClass(java.lang.Class<? extends Var<?>> clazz)
clazz
- Class of Var
Var
getFirstExtensionByClass(Class)
,
loadExtension(byte, byte)
public final Var<?> getExtension(byte id, byte clazz)
id
- byte ExtensionIdclazz
- byte ExtensionClazzVar
Extension oder nullloadExtension(byte, byte)
public final Var<?> loadExtension(byte id, byte clazz)
Var.readFromStream(InStream)
.
Delegiert an loadExtension(byte, byte, Properties)
mit Properties = null
id
- byte ExtensionIdclazz
- byte ExtensionClazzVar
Extension oder nullpublic final Var<?> loadExtension(byte id, byte clazz, java.util.Properties props)
Var.readFromStream(InStream)
.id
- byte ExtensionIdclazz
- byte ExtensionClazzprops
- Properties
, wenn GraphExtension
NULLABLEVar
Extension oder null
GraphExtension
, so wird vorher
GraphExtension.connect(File, long, Log, Properties)
aufgerufen. Jedoch Achtung! InStream.getReadIndex()
entspricht nicht der absoluten Dateiposition!public static int toSegmentId(int edgeId)
edgeId
- intpublic static int toEdgeId(int segmentId, boolean reverse)
segmentId
- intreverse
- boolean in Rueckwaertsrichungpublic static boolean isWrongWay(int edgeId)
edgeId
- intpublic static boolean isOneWay(int edgeId)
edgeId
- intpublic static boolean isReverse(int edgeId)
edgeId
- intpublic boolean isInitializing()
public void close()
GraphExtension.disconnect()
.
public static boolean isGraphFile(java.io.File file)
public int findClosestVertexId(float lat, float lon)
findClosestVertexIds(float, float, int, int)
auf.lat
- float Latitude (Breitengrad)lon
- float Longitude (Laengengrad)public int[] findClosestVertexIdsSphere(float lat, float lon, float maxDist, int n)
lat
- float Latitude (Breitengrad)lon
- float Longitude (Laengengrad)maxDist
- float Maximaler Suchradius in km.findClosestVertexIds(float, float, int, int)
public int[] findClosestVertexIds(float lat, float lon, int zoneRadius, int n)
lat
- float Latitude (Breitengrad)lon
- float Longitude (Laengengrad)zoneRadius
- int. Grober Suchradius. 1 entspricht 0.01 Grad.n
- Maximale Anzahl zurueckzuliefernder Vertices.public int[] findOutgoingEdges(int sourceId)
sourceId
- int Id des SourceVertex.public int[] findIncomingEdges(int targetId)
SUPPORT_REVERSE
, so
wird das Ergebnis mittels findOutgoingEdges(int)
und
findReverseEdge(int)
ermittelt. Um hier korrekte
Ergebnisse zu liefern, muss der Graph auch WrongWays beinhalten,
also Einbahnstrassen in Gegenrichtung.targetId
- int Id des TargetVertexpublic final LatLons lookupGeometry(int edgeIdx)
edgeIdx
- Index der Edge in der Adjazenzliste.LatLons
Koordinaten des korrespondierenden Segments.
public final VarString lookupEdgeName(int edgeIdx)
edgeIdx
- Index der Edge in der Adjazenzliste.public int findReverseEdge(int edgeIdx)
edgeIdx
- int Index-Position in der Adjazenzliste.public int isTurnRestricted(int fromEdgeIdx, int toEdgeIdx)
fromEdgeIdx
- Index der hinfuehrenden Edge.toEdgeIdx
- Index der wegfuehrenden Edge.public int[] createTransformedEdgeIndex()
public RoutingResultSegment lookupSegment(int edgeIdx)
edgeIdx
- Index (Position) der Edge im Graphen.RoutingResultSegment
Segment oder null, wenn nicht ermittelbar
oder edgeIdx <= 0.public double calcPathLength(int[] path)
path
- int[]-Arrray von EdgedIdx.public double calcPathTime(int[] path)
path
- int[]-Arrray von EdgedIdx.public int[] findVerticesByClazz(byte clazz)
clazz
- byte Klasse.public int[] findCloseEdges(float lat, float lon, int minCount)
lat
- float Latitude (Breitengrad)lon
- float Longitude (Laengengrad)minCount
- grobe minimale Anzahl zurueckgelieferter Edges.public IntIntBag getEdgeRasterBag()