public static Link getNearestLinkExactly( Network network, Coord coord ) { return NetworkUtils.getNearestLinkExactly(network, coord) ; } public static Node getNearestNode(Network network, Coord coord) {
private Map<Id<Node>, ArrayList<ActivityFacility>> aggregateMeasurePointsWithSameNearestNode() { Map<Id<Node>,ArrayList<ActivityFacility>> aggregatedOrigins = new ConcurrentHashMap<>(); Gbl.assertNotNull(measuringPoints); Gbl.assertNotNull(measuringPoints.getFacilities()) ; for (ActivityFacility measuringPoint : measuringPoints.getFacilities().values()) { // Determine nearest network node (from- or toNode) based on the link Node nearestNode = NetworkUtils.getCloserNodeOnLink(measuringPoint.getCoord(), NetworkUtils.getNearestLinkExactly(network, measuringPoint.getCoord())); Id<Node> nearestNodeId = nearestNode.getId(); // Create new entry if key does not exist! if(!aggregatedOrigins.containsKey(nearestNodeId)) { aggregatedOrigins.put(nearestNodeId, new ArrayList<ActivityFacility>()); } // Assign measure point (origin) to it's nearest node aggregatedOrigins.get(nearestNodeId).add(measuringPoint); } LOG.info("Number of measuring points: " + measuringPoints.getFacilities().values().size()); LOG.info("Number of aggregated measuring points: " + aggregatedOrigins.size()); return aggregatedOrigins; }
@Override public double computeContributionOfOpportunity(ActivityFacility origin, AggregationObject destination, Double departureTime) { Link nearestLinkToOrigin = NetworkUtils.getNearestLinkExactly(network, origin.getCoord());
linkId = NetworkUtils.getNearestLinkExactly(this.network, c).getId();
Link nearestLink = NetworkUtils.getNearestLinkExactly(network, origin.getCoord());
@Test public void testRemoveLink_alsoInQuadTrees() { Network network = new NetworkImpl(); Node node1 = NetworkUtils.createNode(Id.create(1, Node.class), new Coord(100, 100)); Node node2 = NetworkUtils.createNode(Id.create(2, Node.class), new Coord(1000, 200)); Node node3 = NetworkUtils.createNode(Id.create(3, Node.class), new Coord(500, 700)); network.addNode(node1); network.addNode(node2); network.addNode(node3); Link link1 = NetworkUtils.createLink(Id.create(1, Link.class), node1, node2, network, 800, 13.4, 2000, 1); Link link2 = NetworkUtils.createLink(Id.create(2, Link.class), node2, node3, network, 800, 13.4, 2000, 1); Link link3 = NetworkUtils.createLink(Id.create(3, Link.class), node3, node1, network, 800, 13.4, 2000, 1); network.addLink(link1); network.addLink(link2); network.addLink(link3); Assert.assertEquals(3, network.getLinks().size()); Assert.assertEquals(link1, NetworkUtils.getNearestLink(network, new Coord(300, 200))); Assert.assertEquals(link1, NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); network.removeLink(link1.getId()); Assert.assertEquals(2, network.getLinks().size()); Assert.assertEquals(link3, NetworkUtils.getNearestLink(network, new Coord(300, 200))); Assert.assertEquals(link3, NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); network.removeLink(link3.getId()); Assert.assertEquals(1, network.getLinks().size()); Assert.assertEquals(link2, NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); network.removeLink(link2.getId()); Assert.assertEquals(0, network.getLinks().size()); Assert.assertNull(NetworkUtils.getNearestLink(network, new Coord(300, 200))); Assert.assertNull(NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); }
@Test public void testAddLink_alsoInQuadTrees() { Network network = new NetworkImpl(); Node node1 = NetworkUtils.createNode(Id.create(1, Node.class), new Coord(100, 100)); Node node2 = NetworkUtils.createNode(Id.create(2, Node.class), new Coord(1000, 200)); Node node3 = NetworkUtils.createNode(Id.create(3, Node.class), new Coord(500, 700)); network.addNode(node1); network.addNode(node2); network.addNode(node3); Link link1 = NetworkUtils.createLink(Id.create(1, Link.class), node1, node2, network, 800, 13.4, 2000, 1); Link link2 = NetworkUtils.createLink(Id.create(2, Link.class), node2, node3, network, 800, 13.4, 2000, 1); Link link3 = NetworkUtils.createLink(Id.create(3, Link.class), node3, node1, network, 800, 13.4, 2000, 1); // do not yet add link1 network.addLink(link2); network.addLink(link3); Assert.assertEquals(2, network.getLinks().size()); Assert.assertEquals(link3, NetworkUtils.getNearestLink(network, new Coord(300, 200))); Assert.assertEquals(link3, NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); // this will force the LinkQuadTree to be built network.addLink(link1); Assert.assertEquals(3, network.getLinks().size()); // check that the quad trees were correctly updated with the new link Assert.assertEquals(link1, NetworkUtils.getNearestLink(network, new Coord(300, 200))); Assert.assertEquals(link1, NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); // this will force the LinkQuadTree to be built }
@Test public void testAddLink_intoEmptyQuadTree() { Network network = new NetworkImpl(); Assert.assertEquals(0, network.getLinks().size()); Assert.assertNull(NetworkUtils.getNearestLink(network, new Coord(300, 200))); // this will force the node QuadTree to be built Assert.assertNull(NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); // this will force the LinkQuadTree to be built Node node1 = NetworkUtils.createNode(Id.create(1, Node.class), new Coord(100, 100)); Node node2 = NetworkUtils.createNode(Id.create(2, Node.class), new Coord(1000, 200)); Node node3 = NetworkUtils.createNode(Id.create(3, Node.class), new Coord(500, 700)); network.addNode(node1); network.addNode(node2); network.addNode(node3); Link link1 = NetworkUtils.createLink(Id.create(1, Link.class), node1, node2, network, 800, 13.4, 2000, 1); Link link2 = NetworkUtils.createLink(Id.create(2, Link.class), node2, node3, network, 800, 13.4, 2000, 1); Link link3 = NetworkUtils.createLink(Id.create(3, Link.class), node3, node1, network, 800, 13.4, 2000, 1); network.addLink(link1); network.addLink(link2); network.addLink(link3); Assert.assertEquals(3, network.getLinks().size()); Assert.assertEquals(link1, NetworkUtils.getNearestLink(network, new Coord(300, 200))); Assert.assertEquals(link1, NetworkUtils.getNearestLinkExactly(network, new Coord(300, 200))); // this will force the LinkQuadTree to be built } }