@Override public Coord getCoord() { return node.getCoord(); }
@Override public Node removeNode(final Id<Node> nodeId) { Node n = this.nodes.remove(nodeId); if (n == null) { return null; } HashSet<Link> links1 = new HashSet<>(); links1.addAll(n.getInLinks().values()); links1.addAll(n.getOutLinks().values()); for (Link l : links1) { removeLink(l.getId()); } if (this.nodeQuadTree != null) { this.nodeQuadTree.remove(n.getCoord().getX(),n.getCoord().getY(),n); } return n; }
public static Map<Id<Link>, ? extends Link> getIncidentLinks(Node node) { Map<Id<Link>, Link> links = new TreeMap<>(node.getInLinks()); links.putAll(node.getOutLinks()); return links; }
public static Map<Id<Node>, ? extends Node> getInNodes(Node node) { Map<Id<Node>, Node> nodes = new TreeMap<>(); for (Link link : node.getInLinks().values()) { Node inNode = link.getFromNode(); nodes.put(inNode.getId(), inNode); } return nodes; }
public static Map<Id<Node>, ? extends Node> getOutNodes(Node node) { Map<Id<Node>, Node> nodes = new TreeMap<>(); for (Link link : node.getOutLinks().values()) { Node outNode = link.getToNode(); nodes.put(outNode.getId(), outNode); } return nodes; }
/** * Removes nodes from the network that have no incoming or outgoing links attached to them. */ public void removeNodesWithoutLinks() { List<Node> toBeRemoved = new ArrayList<>(); for (Node node : this.network.getNodes().values()) { if ((node.getInLinks().size() == 0) && (node.getOutLinks().size() == 0)) { toBeRemoved.add(node); } } for (Node node : toBeRemoved) { this.network.removeNode(node.getId()); } }
@Override public String toString() { if (node == null) { return "[id=" + " null " + "]" + "[initialCost=" + this.initialCost + "]" + "[initialTime=" + this.initialTime + "]"; } else { return "[id=" + this.node.getId() + "]" + "[initialCost=" + this.initialCost + "]" + "[initialTime=" + this.initialTime + "]"; } } }
public static Link getConnectingLink(final Node fromNode, final Node toNode) { for (Link link : fromNode.getOutLinks().values()) { if (link.getToNode() == toNode) { return link; } } return null; }
Node from = l.getFromNode(); Node to = l.getToNode(); Coord cFrom = from.getCoord(); Coord cTo = to.getCoord(); double xTo = cTo.getX(); double yTo = cTo.getY(); double thetaL = Math.atan2(yTo - cFrom.getY(), xTo - cFrom.getX()); Collection<? extends Link> outLinks = to.getOutLinks().values(); absDeltaThetas.clear(); if (outLinks.size() > 1) { Coord cOut = out.getToNode().getCoord(); double deltaTheta = Math.atan2(cOut.getY() - yTo, cOut.getX() - xTo) - thetaL; while (deltaTheta < -Math.PI) {
/** * Loads the inLinks-array with the corresponding links. * Cannot be called in constructor, as the queueNetwork does not yet know * the queueLinks. Should be called by QueueNetwork, after creating all * QueueNodes and QueueLinks. */ @Override public void init() { int i = 0; for (Link l : this.node.getInLinks().values()) { QNetwork network = netsimEngine.getNetsimNetwork() ; this.inLinksArrayCache[i] = network.getNetsimLinks().get(l.getId()); i++; } /* As the order of links has an influence on the simulation results, * the nodes are sorted to avoid indeterministic simulations. dg[april08] */ Arrays.sort(this.inLinksArrayCache, new Comparator<NetsimLink>() { @Override public int compare(NetsimLink o1, NetsimLink o2) { return o1.getLink().getId().compareTo(o2.getLink().getId()); } }); }
@Override public Node createNode(final Id<Node> id, final Coord coord) { Node node = NetworkUtils.createNode(id); node.setCoord(coord) ; return node ; }
private int getNOfIncidentNodes(final Node node) { HashMap<Id<Node>, Node> nodes = new HashMap<>(); for (Link link : node.getInLinks().values()) { nodes.put(link.getFromNode().getId(), link.getFromNode()); } for (Link link : node.getOutLinks().values()) { nodes.put(link.getToNode().getId(), link.getToNode()); } return nodes.size(); } }
@Override public Id<Node> getId() { return node.getId(); }
@Override public void run(Network network) { for (Node n : network.getNodes().values()) { Iterator<? extends Link> l1_it = n.getOutLinks().values().iterator(); while (l1_it.hasNext()) { Link l1 = l1_it.next(); Iterator<? extends Link> l2_it = n.getOutLinks().values().iterator(); while (l2_it.hasNext()) { Link l2 = l2_it.next(); if (!l2.equals(l1)) { if (l2.getToNode().equals(l1.getToNode())) { if (logInfoLevel.equals(LogInfoLevel.MAXIMUM)) { log.info(" Node id=" + n.getId()); } this.mergeLink2IntoLink1(l1, l2, network); // restart l1_it = n.getOutLinks().values().iterator(); l2_it = n.getOutLinks().values().iterator(); } } } } } } }
@Override protected void setOrModifyNodeAttributes(Node n, OsmNode node) { if (this.elevationDataParser==null) return; Coord coord = n.getCoord(); double elevation = elevationDataParser.getElevation(n.getCoord()); Coord elevationCoord = CoordUtils.createCoord(coord.getX(), coord.getY(), elevation); n.setCoord(elevationCoord); }
List<TurnInfo> turnInfosForInLink = null; for (Node node : scenario.getNetwork().getNodes().values()) { for (Link inLink : node.getInLinks().values()) { turnInfosForInLink = inLinkTurnInfoMap.get(inLink.getId()); if (turnInfosForInLink == null) { for (Link outLink : node.getOutLinks().values()) { if (! inLink.getAllowedModes().isEmpty() && ! outLink.getAllowedModes().isEmpty()) { if (inLink.getAllowedModes().contains(mode) && outLink.getAllowedModes().contains(mode)) {
RoutingNetworkNode routingNode = createRoutingNetworkNode(node, node.getInLinks().size()); routingNetwork.addNode(routingNode); RoutingNetworkNode fromNode = routingNetwork.getNodes().get(link.getToNode().getId()); RoutingNetworkNode toNode = routingNetwork.getNodes().get(link.getFromNode().getId()); RoutingNetworkLink[] outLinks = new RoutingNetworkLink[node.getInLinks().size()]; for (Link inLink : node.getInLinks().values()) { outLinks[i] = routingLinks.remove(inLink.getId()); i++; RoutingNetworkNode dijkstraNode = routingNetwork.getNodes().get(node.getId()); dijkstraNode.setOutLinksArray(outLinks);
private static Link findLink(Node prevNode, Node node) { for (Link link : prevNode.getOutLinks().values()) { if (link.getToNode().equals(node)) { return link; } } return null; }