private void processEventVehicleArrives(final TransitStopFacility stop, final double now) { if (this.currentStop == null) { this.currentStop = this.nextStop; double delay = now - this.getDeparture().getDepartureTime(); if (! ( Double.isNaN(this.currentStop.getArrivalOffset()) && Double.isInfinite(this.currentStop.getArrivalOffset())) ){ delay = delay - this.currentStop.getArrivalOffset(); } else if (! (Double.isNaN(this.currentStop.getDepartureOffset()) && Double.isInfinite(this.currentStop.getDepartureOffset()))) { delay = delay - this.currentStop.getDepartureOffset(); } else { log.warn("Could not calculate delay!"); } eventsManager.processEvent(new VehicleArrivesAtFacilityEvent(now, this.vehicle.getVehicle().getId(), stop.getId(), delay)); } }
} else if (VehicleArrivesAtFacilityEvent.EVENT_TYPE.equals(eventType)) { String delay = atts.getValue(VehicleArrivesAtFacilityEvent.ATTRIBUTE_DELAY); this.events.processEvent(new VehicleArrivesAtFacilityEvent(time, Id.create(atts.getValue(VehicleArrivesAtFacilityEvent.ATTRIBUTE_VEHICLE), Vehicle.class), Id.create(atts.getValue(VehicleArrivesAtFacilityEvent.ATTRIBUTE_FACILITY), TransitStopFacility.class), delay == null ? 0.0 : Double.parseDouble(delay))); } else if (VehicleDepartsAtFacilityEvent.EVENT_TYPE.equals(eventType)) { String delay = atts.getValue(VehicleDepartsAtFacilityEvent.ATTRIBUTE_DELAY);
public void testWriteReadXml() { VehicleArrivesAtFacilityEvent event = new VehicleArrivesAtFacilityEvent(Time.parseTime("10:55:00"), Id.create(5, Vehicle.class), Id.create(11, TransitStopFacility.class), -1.2); VehicleArrivesAtFacilityEvent event2 = XmlEventsTester.testWriteReadXml(getOutputDirectory() + "events.xml", event); assertEquals(Time.parseTime("10:55:00"), event2.getTime(), EPSILON); assertEquals(Id.create(5, Vehicle.class), event2.getVehicleId()); assertEquals(Id.create(11, TransitStopFacility.class), event2.getFacilityId()); assertEquals(Double.valueOf(-1.2), Double.valueOf(event2.getDelay())); } }
tl.handleEvent(new PersonEntersVehicleEvent(7.0*3600-20, Id.create("ptDriver1", Person.class), vehicleIdDep1)); tl.handleEvent(new VehicleArrivesAtFacilityEvent(7.0*3600-10, vehicleIdDep1, stop1.getId(), 0)); tl.handleEvent(new PersonEntersVehicleEvent(7.0*3600-5, Id.create(0, Person.class), vehicleIdDep1)); tl.handleEvent(new VehicleDepartsAtFacilityEvent(7.0*3600+10, vehicleIdDep1, stop1.getId(), 0)); tl.handleEvent(new VehicleArrivesAtFacilityEvent(7.1*3600-25, vehicleIdDep1, stop2.getId(), 0)); tl.handleEvent(new PersonLeavesVehicleEvent(7.1*3600-5, Id.create(0, Person.class), vehicleIdDep1)); tl.handleEvent(new PersonEntersVehicleEvent(7.1*3600, Id.create(1, Person.class), vehicleIdDep1)); tl.handleEvent(new VehicleDepartsAtFacilityEvent(7.1*3600+25, vehicleIdDep1, stop2.getId(), 0)); tl.handleEvent(new VehicleArrivesAtFacilityEvent(7.2*3600-15, vehicleIdDep1, stop3.getId(), 0)); tl.handleEvent(new PersonLeavesVehicleEvent(7.2*3600-5, Id.create(2, Person.class), vehicleIdDep1)); tl.handleEvent(new PersonEntersVehicleEvent(7.2*3600, Id.create(3, Person.class), vehicleIdDep1)); tl.handleEvent(new VehicleArrivesAtFacilityEvent(7.3*3600-20, vehicleIdDep1, stop4.getId(), 0)); tl.handleEvent(new VehicleDepartsAtFacilityEvent(7.3*3600+5, vehicleIdDep1, stop4.getId(), 0)); tl.handleEvent(new VehicleArrivesAtFacilityEvent(7.4*3600-20, vehicleIdDep1, stop1.getId(), 0)); tl.handleEvent(new PersonLeavesVehicleEvent(7.4*3600-5, Id.create(1, Person.class), vehicleIdDep1)); tl.handleEvent(new PersonLeavesVehicleEvent(7.4*3600, Id.create(3, Person.class), vehicleIdDep1));
/** * @author mrieser / senozon */ public void testGetLinkTravelTime_ignorePtVehiclesAtStop() { Network network = NetworkUtils.createNetwork(); TravelTimeCalculatorConfigGroup config = new TravelTimeCalculatorConfigGroup(); config.setTraveltimeBinSize(900); TravelTimeCalculator ttc = new TravelTimeCalculator(network, config); Node n1 = network.getFactory().createNode(Id.create(1, Node.class), new Coord(0, 0)); Node n2 = network.getFactory().createNode(Id.create(2, Node.class), new Coord(1000, 0)); network.addNode(n1); network.addNode(n2); Link link1 = network.getFactory().createLink(Id.create(1, Link.class), n1, n2); network.addLink(link1); Id<Vehicle> ptVehId = Id.create("ptVeh", Vehicle.class); Id<Vehicle> ivVehId = Id.create("ivVeh", Vehicle.class); ttc.handleEvent(new LinkEnterEvent(100, ivVehId, link1.getId())); ttc.handleEvent(new LinkEnterEvent(150, ptVehId, link1.getId())); ttc.handleEvent(new LinkLeaveEvent(200, ivVehId, link1.getId())); ttc.handleEvent(new VehicleArrivesAtFacilityEvent(240, ptVehId, Id.create("stop", TransitStopFacility.class), 0)); ttc.handleEvent(new LinkLeaveEvent(350, ptVehId, link1.getId())); Assert.assertEquals("The time of transit vehicles at stop should not be counted", 100.0, ttc.getLinkTravelTimes().getLinkTravelTime(link1, 200, null, null), 1e-8); }