private void prepareRestrictionRelation(ReaderRelation relation) { OSMTurnRelation turnRelation = createTurnRelation(relation); if (turnRelation != null) { getOsmWayIdSet().add(turnRelation.getOsmIdFrom()); getOsmWayIdSet().add(turnRelation.getOsmIdTo()); } }
public Collection<TurnCostTableEntry> analyzeTurnRelation(FlagEncoder encoder, OSMTurnRelation turnRelation) { if (!encoder.supports(TurnWeighting.class)) return Collections.emptyList(); EdgeExplorer edgeOutExplorer = outExplorerMap.get(encoder); EdgeExplorer edgeInExplorer = inExplorerMap.get(encoder); if (edgeOutExplorer == null || edgeInExplorer == null) { edgeOutExplorer = graph.createEdgeExplorer(DefaultEdgeFilter.outEdges(encoder)); outExplorerMap.put(encoder, edgeOutExplorer); edgeInExplorer = graph.createEdgeExplorer(DefaultEdgeFilter.inEdges(encoder)); inExplorerMap.put(encoder, edgeInExplorer); } return turnRelation.getRestrictionAsEntries(encoder, edgeOutExplorer, edgeInExplorer, this); }
/** * Creates an OSM turn relation out of an unspecified OSM relation * <p> * * @return the OSM turn relation, <code>null</code>, if unsupported turn relation */ OSMTurnRelation createTurnRelation(ReaderRelation relation) { OSMTurnRelation.Type type = OSMTurnRelation.Type.getRestrictionType(relation.getTag("restriction")); if (type != OSMTurnRelation.Type.UNSUPPORTED) { long fromWayID = -1; long viaNodeID = -1; long toWayID = -1; for (ReaderRelation.Member member : relation.getMembers()) { if (ReaderElement.WAY == member.getType()) { if ("from".equals(member.getRole())) { fromWayID = member.getRef(); } else if ("to".equals(member.getRole())) { toWayID = member.getRef(); } } else if (ReaderElement.NODE == member.getType() && "via".equals(member.getRole())) { viaNodeID = member.getRef(); } } if (fromWayID >= 0 && toWayID >= 0 && viaNodeID >= 0) { return new OSMTurnRelation(fromWayID, viaNodeID, toWayID, type); } } return null; }
/** * Creates an OSM turn relation out of an unspecified OSM relation * <p> * * @return the OSM turn relation, <code>null</code>, if unsupported turn relation */ OSMTurnRelation createTurnRelation(ReaderRelation relation) { OSMTurnRelation.Type type = OSMTurnRelation.Type.getRestrictionType(relation.getTag("restriction")); if (type != OSMTurnRelation.Type.UNSUPPORTED) { long fromWayID = -1; long viaNodeID = -1; long toWayID = -1; for (ReaderRelation.Member member : relation.getMembers()) { if (ReaderElement.WAY == member.getType()) { if ("from".equals(member.getRole())) { fromWayID = member.getRef(); } else if ("to".equals(member.getRole())) { toWayID = member.getRef(); } } else if (ReaderElement.NODE == member.getType() && "via".equals(member.getRole())) { viaNodeID = member.getRef(); } } if (fromWayID >= 0 && toWayID >= 0 && viaNodeID >= 0) { return new OSMTurnRelation(fromWayID, viaNodeID, toWayID, type); } } return null; }
private void prepareRestrictionRelation(ReaderRelation relation) { OSMTurnRelation turnRelation = createTurnRelation(relation); if (turnRelation != null) { getOsmWayIdSet().add(turnRelation.getOsmIdFrom()); getOsmWayIdSet().add(turnRelation.getOsmIdTo()); } }
public Collection<TurnCostTableEntry> analyzeTurnRelation(FlagEncoder encoder, OSMTurnRelation turnRelation) { if (!encoder.supports(TurnWeighting.class)) return Collections.emptyList(); EdgeExplorer edgeOutExplorer = outExplorerMap.get(encoder); EdgeExplorer edgeInExplorer = inExplorerMap.get(encoder); if (edgeOutExplorer == null || edgeInExplorer == null) { edgeOutExplorer = graph.createEdgeExplorer(new DefaultEdgeFilter(encoder, false, true)); outExplorerMap.put(encoder, edgeOutExplorer); edgeInExplorer = graph.createEdgeExplorer(new DefaultEdgeFilter(encoder, true, false)); inExplorerMap.put(encoder, edgeInExplorer); } return turnRelation.getRestrictionAsEntries(encoder, edgeOutExplorer, edgeInExplorer, this); }