private Network getTestNetwork() { int numOfLinks = 5; Network network = NetworkUtils.createNetwork(); Node[] nodes = new Node[numOfLinks+1]; for (int i = 0; i <= numOfLinks; i++) { nodes[i] = NetworkUtils.createAndAddNode(network, Id.create(i, Node.class), new Coord((double) (1000 * i), (double) 0)); } for (int i = 0; i < numOfLinks; i++) { NetworkUtils.createAndAddLink(network,Id.create(i, Link.class), nodes[i], nodes[i+1], 1000.0, 10.0, 3600.0, (double) 1 ); } return network; }
private Coord getCenter(final Collection<? extends Node> nodes) { double[] bBox = NetworkUtils.getBoundingBox(nodes); double minX = bBox[0]; double minY = bBox[1]; double maxX = bBox[2]; double maxY = bBox[3]; double centerX = (maxX - minX) / 2 + minX; double centerY = (maxY - minY) / 2 + minY; return new Coord(centerX, centerY); }
@Override public void setRouteDescription(String routeDescription) { List<Id<Link>> linkIds = NetworkUtils.getLinkIds(routeDescription); Id<Link> startLinkId = getStartLinkId(); Id<Link> endLinkId = getEndLinkId(); if (linkIds.size() > 0) { startLinkId = linkIds.remove(0); setStartLinkId(startLinkId); } if (linkIds.size() > 0) { endLinkId = linkIds.remove(linkIds.size() - 1); setEndLinkId(endLinkId); } this.setLinkIds(startLinkId, linkIds, endLinkId); }
AbstractPersonReRouteStuck(final PlanAlgorithm router, final MutableScenario scenario, Set<Id<Person>> agentsStuck) { super(); this.router = router; Network network = scenario.getNetwork(); Network net = network; if (NetworkUtils.isMultimodal(network)) { log.info("Network seems to be multimodal. XY2Links will only use car links."); TransportModeNetworkFilter filter = new TransportModeNetworkFilter(network); net = NetworkUtils.createNetwork(); HashSet<String> modes = new HashSet<>(); modes.add(TransportMode.car); filter.filter(net, modes); } this.agentsStuck = agentsStuck; log.info("initialized"); }
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; }
final Network network = NetworkUtils.createNetwork(); NetworkFactory nf = network.getFactory(); nf.setLinkFactory(lf); Node node1 = NetworkUtils.createAndAddNode(network, Id.create("1", Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create("2", Node.class), new Coord((double) 100, (double) 0)); Node node3 = NetworkUtils.createAndAddNode(network, Id.create("3", Node.class), new Coord((double) 200, (double) 0)); Node node4 = NetworkUtils.createAndAddNode(network, Id.create("4", Node.class), new Coord((double) 300, (double) 0)); final Node fromNode = node1; final Node toNode = node2; Link link1 = NetworkUtils.createAndAddLink(network,Id.create("1", Link.class), fromNode, toNode, (double) 100, (double) 10, (double) 3600, (double) 1 ); final Node fromNode1 = node2; final Node toNode1 = node3; Link link2 = NetworkUtils.createAndAddLink(network,Id.create("2", Link.class), fromNode1, toNode1, (double) 100, (double) 10, (double) 3600, (double) 1 ); final Node fromNode2 = node3; final Node toNode2 = node4; NetworkUtils.createAndAddLink(network,Id.create("3", Link.class), fromNode2, toNode2, (double) 100, (double) 10, (double) 3600, (double) 1 ); change.setFreespeedChange(new ChangeValue(ChangeType.ABSOLUTE_IN_SI_UNITS, 20)); final NetworkChangeEvent event = change; NetworkUtils.addNetworkChangeEvent(network,event);
public MultimodalFixture() { for (int i = 0; i < this.nodes.length; i++) { this.nodes[i] = NetworkUtils.createAndAddNode(this.network, Id.create(i, Node.class), new Coord((double) (1000 * i), (double) 0)); } for (int i = 0; i < this.links.length; i++) { this.links[i] = NetworkUtils.createAndAddLink(this.network,Id.create(i, Link.class), this.nodes[i], this.nodes[i+1], 1000.0, 10.0, 3600.0, (double) 1 ); } } }
@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 } }
@Test public void testGetSubRoute_CircleAtStart() { Network network = createTestNetwork(); NetworkUtils.createAndAddLink(network,Id.create(-3, Link.class), network.getNodes().get(Id.create(4, Node.class)), network.getNodes().get(Id.create(3, Node.class)), 1000.0, 100.0, 3600.0, (double) 1 ); Id<Link> id13 = Id.create("13", Link.class); Id<Link> id15 = Id.create("15", Link.class); NetworkRoute route = getNetworkRouteInstance(id13, id15, network); route.setLinkIds(id13, NetworkUtils.getLinkIds("-24 -3 23 13 14"), id15); NetworkRoute subRoute = route.getSubRoute(id13, id15); List<Id<Link>> linkIds = subRoute.getLinkIds(); Assert.assertEquals("number of links in subRoute.", 1, linkIds.size()); Assert.assertEquals("wrong link.", Id.create("14", Link.class), subRoute.getLinkIds().get(0)); Assert.assertEquals("wrong start link.", id13, subRoute.getStartLinkId()); Assert.assertEquals("wrong end link.", id15, subRoute.getEndLinkId()); }
public static Network createNetwork(Config config) { return createNetwork(config.network()); }
public static Link getNearestLink(Network network, Coord coord) { return NetworkUtils.getNearestLink(network, coord) ; } public static Link getNearestLinkExactly( Network network, Coord coord ) {
@Test public void testSetAttributes() { Network network = new NetworkImpl(); network.setCapacityPeriod(3600.0); Node node1 = NetworkUtils.createAndAddNode(network, Id.create(1, Node.class), new Coord((double) 0, (double) 0)); Node node2 = NetworkUtils.createAndAddNode(network, Id.create(2, Node.class), new Coord((double) 50, (double) 50)); final Node fromNode = node1; final Node toNode = node2; Link link1 = (Link) NetworkUtils.createAndAddLink(network,Id.create(1, Link.class), fromNode, toNode, 500.0, 10.0, 1000.0, 1.0 ); Assert.assertEquals("wrong freespeed traveltime.", 50.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); link1.setLength(1000.0); Assert.assertEquals("wrong freespeed traveltime.", 100.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); link1.setFreespeed(20.0); Assert.assertEquals("wrong freespeed traveltime.", 50.0, NetworkUtils.getFreespeedTravelTime(link1), EPSILON); }
/** * MATSIM-278, 10jun2015: adding a node if quadtree only contained one node * * @author mrieser / Senozon AG */ @Test public void testAddNode_singleNodeFirstOnly() { Network network = new NetworkImpl(); Node node1 = NetworkUtils.createNode(Id.create(1, Node.class), new Coord((double) 500, (double) 400)); Node node2 = NetworkUtils.createNode(Id.create(2, Node.class), new Coord((double) 600, (double) 500)); network.addNode(node1); Assert.assertEquals(1, network.getNodes().size()); Node n = NetworkUtils.getNearestNode(network,new Coord((double) 550, (double) 450)); Assert.assertEquals(node1, n); network.addNode(node2); Assert.assertEquals(2, network.getNodes().size()); n = NetworkUtils.getNearestNode(network,new Coord((double) 590, (double) 490)); Assert.assertEquals(node2, n); }
private Network reshuffleNodesAndReturnNetwork(List<Node> nodes) { Network network = NetworkUtils.createNetwork(); Collections.shuffle(nodes); for (Node n : nodes) { System.out.println("Adding node "+ n.getId()); network.addNode(NetworkUtils.createNode(n.getId(), n.getCoord())); } return network; }
if ( fromLink==null ) { Gbl.assertNotNull( fromFacility.getCoord() ) ; fromLink = NetworkUtils.getNearestLink( network, fromFacility.getCoord()) ; toLink = NetworkUtils.getNearestLink(network, toFacility.getCoord()); throw new RuntimeException("No route found from node " + startNode.getId() + " to node " + endNode.getId() + "."); NetworkRoute route = this.populationFactory.getRouteFactories().createRoute(NetworkRoute.class, fromLink.getId(), toLink.getId()); route.setLinkIds(fromLink.getId(), NetworkUtils.getLinkIds(path.links), toLink.getId()); route.setTravelTime(path.travelTime); route.setTravelCost(path.travelCost);
public void testLinkEnterEventHandler() { EventsManager events = EventsUtils.createEventsManager(); MyLinkEnterEventHandler handler = new MyLinkEnterEventHandler(); events.addHandler(handler); Network network = NetworkUtils.createNetwork(); Node node1 = network.getFactory().createNode(Id.create(1, Node.class), new Coord((double) 0, (double) 0)); Node node2 = network.getFactory().createNode(Id.create(2, Node.class), new Coord((double) 1000, (double) 0)); final Node from = node1; final Node to = node2; final Network network1 = network; NetworkFactory r = network.getFactory(); Link link1 = NetworkUtils.createLink(Id.create(1, Link.class), from, to, network1, 1000.0, 10.0, 3600.0, (double) 0); events.processEvent(new LinkEnterEvent(8.0*3600, Id.create("veh", Vehicle.class), link1.getId())); assertEquals("expected number of handled events wrong.", 1, handler.counter); }
private int createInvertedLink(Link inLink, Link outLink, int numberOfLinksGenerated, Set<String> modes){ Link link = NetworkUtils.createAndAddLink(this.invertedNetwork,Id.create(numberOfLinksGenerated + 1, Link.class), this.invertedNetwork.getNodes().get(Id.create(inLink.getId(), Node.class)), this.invertedNetwork.getNodes().get(Id.create(outLink.getId(), Node.class)), outLink.getLength(), outLink.getFreespeed(), outLink.getCapacity(), outLink.getNumberOfLanes() ); link.setAllowedModes(modes); // log.error("created inverted link " + link.getId() + " from " + inLink.getId() + " to " + outLink.getId() + " with modes " + modes); NetworkUtils.setType( ((Link) link), NetworkUtils.getType(((Link) outLink))); return numberOfLinksGenerated + 1; }
public static Node getNearestNode(Network network, Coord coord) { return NetworkUtils.getNearestNode(network, coord) ; } public static Collection<Node> getNearestNodes(Network network, Coord coord, double distance) {
progressBar.update(); Node nearestNode = NetworkUtils.getNearestNode(network, opportunity.getCoord()); double distance_m = NetworkUtils.getEuclideanDistance(opportunity.getCoord(), nearestNode.getCoord());
/** * returns the euclidean distance between two points (x1,y1) and (x2,y2) */ public static double getEuclideanDistance(double x1, double y1, double x2, double y2){ return getEuclideanDistance(new Coord(x1,y1), new Coord(x2, y2)); }