本文整理了Java中com.graphhopper.storage.Graph
类的一些代码示例,展示了Graph
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Graph
类的具体详情如下:
包路径:com.graphhopper.storage.Graph
类名称:Graph
[英]An interface to represent a (geo) graph - suited for efficient storage as it can be requested via indices called node IDs. To get the lat,lon point you need to set up a LocationIndex instance.
[中]
代码示例来源:origin: graphhopper/graphhopper
/**
* @param graph specifies the graph where this algorithm will run on
* @param weighting set the used weight calculation (e.g. fastest, shortest).
* @param traversalMode how the graph is traversed e.g. if via nodes or edges.
*/
public AbstractRoutingAlgorithm(Graph graph, Weighting weighting, TraversalMode traversalMode) {
this.weighting = weighting;
this.flagEncoder = weighting.getFlagEncoder();
this.traversalMode = traversalMode;
this.graph = graph;
this.nodeAccess = graph.getNodeAccess();
outEdgeExplorer = graph.createEdgeExplorer(DefaultEdgeFilter.outEdges(flagEncoder));
inEdgeExplorer = graph.createEdgeExplorer(DefaultEdgeFilter.inEdges(flagEncoder));
}
代码示例来源:origin: graphhopper/graphhopper
public QueryGraph(Graph graph) {
mainGraph = graph;
mainNodeAccess = graph.getNodeAccess();
mainNodes = graph.getNodes();
mainEdges = graph.getAllEdges().length();
if (mainGraph.getExtension() instanceof TurnCostExtension)
wrappedExtension = new QueryGraphTurnExt();
else
wrappedExtension = mainGraph.getExtension();
// create very lightweight QueryGraph which uses variables from this QueryGraph (same virtual edges)
baseGraph = new QueryGraph(graph.getBaseGraph(), this) {
// override method to avoid stackoverflow
@Override
public QueryGraph setUseEdgeExplorerCache(boolean useEECache) {
baseGraph.useEdgeExplorerCache = useEECache;
return baseGraph;
}
};
}
代码示例来源:origin: graphhopper/graphhopper
public static void initGraph(Graph g) {
g.edge(0, 1, 3, true);
g.edge(0, 2, 1, true);
g.edge(1, 3, 1, true);
g.edge(2, 3, 1, true);
g.edge(3, 4, 1, true);
g.edge(2, 5, .5, true);
g.edge(3, 6, 1, true);
g.edge(4, 7, 1, true);
g.edge(5, 6, 1, true);
g.edge(6, 7, 1, true);
}
代码示例来源:origin: graphhopper/graphhopper
public GraphicsWrapper(Graph g) {
this.na = g.getNodeAccess();
BBox b = g.getBounds();
scaleX = scaleY = 0.002 * (b.maxLat - b.minLat);
offsetY = b.maxLat - 90;
offsetX = -b.minLon;
}
代码示例来源:origin: graphhopper/graphhopper
/**
* @return the specified toGraph which is now filled with data from fromGraph
*/
// TODO very similar to createSortedGraph -> use a 'int map(int)' interface
public static Graph copyTo(Graph fromGraph, Graph toGraph) {
AllEdgesIterator eIter = fromGraph.getAllEdges();
while (eIter.next()) {
int base = eIter.getBaseNode();
int adj = eIter.getAdjNode();
eIter.copyPropertiesTo(toGraph.edge(base, adj));
}
NodeAccess fna = fromGraph.getNodeAccess();
NodeAccess tna = toGraph.getNodeAccess();
int nodes = fromGraph.getNodes();
for (int node = 0; node < nodes; node++) {
if (tna.is3D())
tna.setNode(node, fna.getLatitude(node), fna.getLongitude(node), fna.getElevation(node));
else
tna.setNode(node, fna.getLatitude(node), fna.getLongitude(node));
}
return toGraph;
}
代码示例来源:origin: graphhopper/graphhopper
@Test
public void testClone() {
graph = createGHStorage();
graph.edge(1, 2, 10, true);
NodeAccess na = graph.getNodeAccess();
na.setNode(0, 12, 23);
na.setNode(1, 8, 13);
na.setNode(2, 2, 10);
na.setNode(3, 5, 9);
graph.edge(1, 3, 10, true);
Graph cloneGraph = graph.copyTo(AbstractGraphStorageTester.this.createGHStorage(locationParent + "/clone", false));
assertEquals(graph.getNodes(), cloneGraph.getNodes());
assertEquals(count(carOutExplorer.setBaseNode(1)), count(cloneGraph.createEdgeExplorer(carOutFilter).setBaseNode(1)));
cloneGraph.edge(1, 4, 10, true);
assertEquals(3, count(cloneGraph.createEdgeExplorer(carOutFilter).setBaseNode(1)));
assertEquals(graph.getBounds(), cloneGraph.getBounds());
Helper.close((Closeable) cloneGraph);
}
代码示例来源:origin: graphhopper/graphhopper
void initGraph(Graph g) {
//
// /*-*\
// 0 1
// |
// 2
NodeAccess na = g.getNodeAccess();
na.setNode(0, 1, 0);
na.setNode(1, 1, 2.5);
na.setNode(2, 0, 0);
g.edge(0, 2, 10, true);
g.edge(0, 1, 10, true).setWayGeometry(Helper.createPointList(1.5, 1, 1.5, 1.5));
}
代码示例来源:origin: graphhopper/graphhopper
public static int getIdOf(Graph g, double latitude) {
int s = g.getNodes();
NodeAccess na = g.getNodeAccess();
for (int i = 0; i < s; i++) {
if (Math.abs(na.getLatitude(i) - latitude) < 1e-4) {
return i;
}
}
return -1;
}
代码示例来源:origin: graphhopper/graphhopper
@Test
public void testMediumRead() throws IOException {
Graph graph = new GraphBuilder(encodingManager).create();
new PrincetonReader(graph).setStream(new GZIPInputStream(PrincetonReader.class.getResourceAsStream("mediumEWD.txt.gz"))).read();
assertEquals(250, graph.getNodes());
EdgeExplorer explorer = graph.createEdgeExplorer(carOutEdges);
assertEquals(13, count(explorer.setBaseNode(244)));
assertEquals(11, count(explorer.setBaseNode(16)));
}
}
代码示例来源:origin: graphhopper/graphhopper
public static void printGraphForUnitTest(Graph g, FlagEncoder encoder, BBox bBox) {
NodeAccess na = g.getNodeAccess();
for (int node = 0; node < g.getNodes(); ++node) {
if (bBox.contains(na.getLat(node), na.getLon(node))) {
System.out.printf(Locale.ROOT, "na.setNode(%d, %f, %f);\n", node, na.getLat(node), na.getLon(node));
}
}
AllEdgesIterator iter = g.getAllEdges();
while (iter.next()) {
if (bBox.contains(na.getLat(iter.getBaseNode()), na.getLon(iter.getBaseNode())) &&
bBox.contains(na.getLat(iter.getAdjNode()), na.getLon(iter.getAdjNode()))) {
printUnitTestEdge(encoder, iter);
}
}
}
代码示例来源:origin: graphhopper/graphhopper
protected void checkGraph(Graph g) {
NodeAccess na = g.getNodeAccess();
assertTrue(na.is3D());
assertTrue(g.getBounds().isValid());
assertEquals(new BBox(10, 20, 10, 12, 0, 1), g.getBounds());
assertEquals(10, na.getLatitude(0), 1e-2);
assertEquals(10, na.getLongitude(0), 1e-2);
EdgeExplorer explorer = g.createEdgeExplorer(carOutFilter);
assertEquals(2, GHUtility.count(explorer.setBaseNode(0)));
assertEquals(GHUtility.asSet(2, 1), GHUtility.getNeighbors(explorer.setBaseNode(0)));
代码示例来源:origin: graphhopper/graphhopper
@Override
public EdgeExplorer createEdgeExplorer(EdgeFilter filter) {
return baseGraph.createEdgeExplorer(filter);
}
代码示例来源:origin: graphhopper/graphhopper
private void insertOutboundTransfers(String toStopId, String toRouteId, int minimumTransferTime, NavigableMap<Integer, Integer> fromStopTimelineNodes) {
int stationNode = gtfsStorage.getStationNodes().get(toStopId);
EdgeIterator i = graph.getBaseGraph().createEdgeExplorer().setBaseNode(stationNode);
while (i.next()) {
GtfsStorage.EdgeType edgeType = encoder.getEdgeType(i.getFlags());
if (edgeType == GtfsStorage.EdgeType.ENTER_PT) {
GtfsStorageI.PlatformDescriptor routeId = gtfsStorage.getRoutes().get(i.getEdge());
if (toRouteId == null || routeId instanceof GtfsStorageI.RouteTypePlatform || GtfsStorageI.PlatformDescriptor.route(toRouteId).equals(routeId)) {
fromStopTimelineNodes.forEach((time, e) -> {
EdgeIterator j = graph.getBaseGraph().createEdgeExplorer().setBaseNode(i.getAdjNode());
while (j.next()) {
GtfsStorage.EdgeType edgeType2 = encoder.getEdgeType(j.getFlags());
if (edgeType2 == GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK) {
int departureTime = (int) encoder.getTime(j.getFlags());
if (departureTime < time + minimumTransferTime) {
continue;
}
EdgeIteratorState edge = graph.edge(e, j.getAdjNode());
edge.setFlags(encoder.setAccess(edge.getFlags(), true, false));
setEdgeTypeAndClearDistance(edge, GtfsStorage.EdgeType.TRANSFER);
edge.setFlags(encoder.setTime(edge.getFlags(), departureTime - time));
break;
}
}
});
}
}
}
}
代码示例来源:origin: graphhopper/graphhopper
public DijkstraOneToMany(Graph graph, Weighting weighting, TraversalMode tMode) {
super(graph, weighting, tMode);
parents = new int[graph.getNodes()];
Arrays.fill(parents, EMPTY_PARENT);
edgeIds = new int[graph.getNodes()];
Arrays.fill(edgeIds, EdgeIterator.NO_EDGE);
weights = new double[graph.getNodes()];
Arrays.fill(weights, Double.MAX_VALUE);
heap = new IntDoubleBinaryHeap(1000);
changedNodes = new IntArrayListWithCap();
}
代码示例来源:origin: graphhopper/graphhopper
public DebugAStar(Graph graph, Weighting type, TraversalMode tMode, GraphicsWrapper mg) {
super(graph, type, tMode);
this.mg = mg;
na = graph.getNodeAccess();
}
代码示例来源:origin: graphhopper/graphhopper
NodeAccess na = graph.getNodeAccess();
na.setNode(index, 0.01 * latIdx, 0.01 * lonIdx);
if (latIdx < MAX - 1)
graph.edge(index, index + 1, 1000, true);
graph.edge(index, index + 10, 1000, true);
AllEdgesIterator iter = graph.getAllEdges();
while (iter.next()) {
iter.setFlags(bikeEncoder.setAccess(iter.getFlags(), false, false));
代码示例来源:origin: graphhopper/graphhopper
public static void printEdgeInfo(final Graph g, FlagEncoder encoder) {
System.out.println("-- Graph nodes:" + g.getNodes() + " edges:" + g.getAllEdges().length() + " ---");
AllEdgesIterator iter = g.getAllEdges();
while (iter.next()) {
String prefix = (iter instanceof AllCHEdgesIterator && ((AllCHEdgesIterator) iter).isShortcut()) ? "sc" : " ";
String fwdStr = iter.isForward(encoder) ? "fwd" : " ";
String bwdStr = iter.isBackward(encoder) ? "bwd" : " ";
System.out.println(prefix + " " + iter + " " + fwdStr + " " + bwdStr + " " + iter.getDistance());
}
}
代码示例来源:origin: graphhopper/graphhopper
private NavigableMap<Integer, Integer> findDepartureTimelineForPlatform(int platformEnterNode) {
TreeMap<Integer, Integer> result = new TreeMap<>();
if (platformEnterNode == -1) {
return result;
}
EdgeIterator edge = graph.getBaseGraph().createEdgeExplorer(DefaultEdgeFilter.outEdges(encoder)).setBaseNode(platformEnterNode);
while (edge.next()) {
if (encoder.getEdgeType(edge.getFlags()) == GtfsStorage.EdgeType.ENTER_TIME_EXPANDED_NETWORK) {
result.put((int) encoder.getTime(edge.getFlags()), edge.getAdjNode());
}
}
return result;
}
代码示例来源:origin: graphhopper/graphhopper
@Override
public BBox getBounds() {
return mainGraph.getBounds();
}
代码示例来源:origin: graphhopper/graphhopper
private CHEdgeIteratorState getEdge(int edgeId, int adjNode) {
return (CHEdgeIteratorState) routingGraph.getEdgeIteratorState(edgeId, adjNode);
}
}
内容来源于网络,如有侵权,请联系作者删除!