@Override public boolean removeRoute(final TransitRoute route) { return null != this.transitRoutes.remove(route.getId()); }
@Override public void addRoute(final TransitRoute transitRoute) { final Id<TransitRoute> id = transitRoute.getId(); if (this.transitRoutes.containsKey(id)) { throw new IllegalArgumentException("There is already a transit route with id " + id.toString() + " with line " + this.lineId); } this.transitRoutes.put(id, transitRoute); }
/** * Why do we need this constructor, if we only keep the id of the line/route? */ public ExperimentalTransitRoute(final TransitStopFacility accessFacility, final TransitLine line, final TransitRoute route, final TransitStopFacility egressFacility) { this(accessFacility, egressFacility, (line == null ? null : line.getId()), (route == null ? null : route.getId())); }
private static String getHash(TransitLine transitLine, TransitRoute transitRoute, TransitRouteStop transitRouteStop, int position){ return transitLine.getId().toString() + "-" + transitRoute.getId().toString() + "-" + transitRouteStop.getStopFacility().getId().toString() + "-" + position; } }
public VehicleOccupancyCalculator(final TransitSchedule transitSchedule, final Vehicles vehicles, final int timeSlot, final int totalTime) { this.timeSlot = timeSlot; for(TransitLine line:transitSchedule.getTransitLines().values()) for(TransitRoute route:line.getRoutes().values()) { Map<Id<TransitStopFacility>, VehicleOccupancyData> routeMap = new HashMap<Id<TransitStopFacility>, VehicleOccupancyData>(100); vehicleOccupancy.put(new Tuple<Id<TransitLine>, Id<TransitRoute>>(line.getId(), route.getId()), routeMap); for(int s=0; s<route.getStops().size()-1; s++) { routeMap.put(route.getStops().get(s).getStopFacility().getId(), new VehicleOccupancyDataArray((int) (totalTime/timeSlot)+1)); } } this.vehicles = vehicles; }
public static ValidationResult validateAllStopsExist(final TransitSchedule schedule) { ValidationResult result = new ValidationResult(); for (TransitLine line : schedule.getTransitLines().values()) { for (TransitRoute route : line.getRoutes().values()) { for (TransitRouteStop stop : route.getStops()) { if (stop.getStopFacility() == null) { result.addIssue(new ValidationResult.ValidationIssue(ValidationResult.Severity.ERROR, "Transit line " + line.getId() + ", route " + route.getId() + " contains a stop (dep-offset=" + stop.getDepartureOffset() + ") without stop-facility. Most likely, a wrong id was specified in the file.", ValidationResult.Type.HAS_MISSING_STOP_FACILITY, Collections.singletonList(route.getId()))); } else if (schedule.getFacilities().get(stop.getStopFacility().getId()) == null) { result.addIssue(new ValidationResult.ValidationIssue(ValidationResult.Severity.ERROR, "Transit line " + line.getId() + ", route " + route.getId() + " contains a stop (stop-facility " + stop.getStopFacility().getId() + ") that is not contained in the list of all stop facilities.", ValidationResult.Type.HAS_MISSING_STOP_FACILITY, Collections.singletonList(route.getId()))); } } } } return result; }
private double getDepartureOffsetFromRoute(TransitRoute transitRoute, Id<TransitStopFacility> accessStopId) { for (TransitRouteStop routeStop : transitRoute.getStops()) { if (accessStopId.equals(routeStop.getStopFacility().getId())) { return routeStop.getDepartureOffset(); } } log.error("Stop " + accessStopId + " not found in route " + transitRoute.getId()); // returning what??? return -1.0; }
private double getArrivalOffsetFromRoute(TransitRoute transitRoute, Id<TransitStopFacility> egressStopId) { for (TransitRouteStop routeStop : transitRoute.getStops()) { if (egressStopId.equals(routeStop.getStopFacility().getId())) { return routeStop.getArrivalOffset(); } } log.error("Stop " + egressStopId + " not found in route " + transitRoute.getId()); // returning what??? return -1.0; }
public List<StopInformation> getDepartureStopInformation(final TransitLine line, final TransitRoute route, final TransitStopFacility stopFacility, final Departure departure) { return getStopInformation(line.getId(), route.getId(), stopFacility.getId(), departure.getId(), false); }
@Override public Trip findTrip(Leg prevLeg, double earliestDepartureTime_s) { ExperimentalTransitRoute route = (ExperimentalTransitRoute) prevLeg.getRoute(); TransitLine line = this.transitLines.get(route.getLineId()); TransitRoute transitRoute = line.getRoutes().get(route.getRouteId()); final double accessTime_s = earliestDepartureTime_s + this.waitTimes.getRouteStopWaitTime(route.getLineId(), transitRoute.getId(), route.getAccessStopId(), earliestDepartureTime_s); final double egressTime_s = accessTime_s + this.findTransitTravelTime(route, accessTime_s); return new Trip(null, accessTime_s, egressTime_s); }
public void testGetRoutesImmutable() { TransitLine tLine = createTransitLine(Id.create("1980", TransitLine.class)); TransitRoute route1 = new TransitRouteImpl(Id.create("11", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); try { tLine.getRoutes().put(route1.getId(), route1); fail("missing exception"); } catch (UnsupportedOperationException e) { log.info("catched expected exception.", e); } }
public static ValidationResult validateUsedStopsHaveLinkId(final TransitSchedule schedule) { ValidationResult result = new ValidationResult(); for (TransitLine line : schedule.getTransitLines().values()) { for (TransitRoute route : line.getRoutes().values()) { for (TransitRouteStop stop : route.getStops()) { Id<Link> linkId = stop.getStopFacility().getLinkId(); if (linkId == null) { result.addIssue(new ValidationResult.ValidationIssue(ValidationResult.Severity.ERROR,"Transit Stop Facility " + stop.getStopFacility().getId() + " has no linkId, but is used by transit line " + line.getId() + ", route " + route.getId(), ValidationResult.Type.HAS_NO_LINK_REF, Collections.singleton(stop.getStopFacility().getId()))); } } } } return result; }
public void testAddRoute() { TransitLine tLine = createTransitLine(Id.create("0891", TransitLine.class)); TransitRoute route1 = new TransitRouteImpl(Id.create("1", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); TransitRoute route2 = new TransitRouteImpl(Id.create("2", TransitRoute.class), null, new ArrayList<TransitRouteStop>(), "bus"); assertEquals(0, tLine.getRoutes().size()); tLine.addRoute(route1); assertEquals(1, tLine.getRoutes().size()); assertNotNull(tLine.getRoutes().get(route1.getId())); tLine.addRoute(route2); assertEquals(2, tLine.getRoutes().size()); assertNotNull(tLine.getRoutes().get(route1.getId())); assertNotNull(tLine.getRoutes().get(route2.getId())); }
public TransitRouterNetworkTravelTimeAndDisutilityWS(final TransitRouterConfig config, TransitRouterNetworkWW routerNetwork, WaitTime waitTime, StopStopTime stopStopTime, TravelTimeCalculatorConfigGroup tTConfigGroup, double startTime, double endTime, PreparedTransitSchedule preparedTransitSchedule) { super(config, preparedTransitSchedule); timeSlot = tTConfigGroup.getTraveltimeBinSize(); numSlots = (int) ((endTime-startTime)/timeSlot); for(TransitRouterNetworkWW.TransitRouterNetworkLink link:routerNetwork.getLinks().values()) if(link.route!=null) { double[] times = new double[numSlots]; for(int slot = 0; slot<numSlots; slot++) times[slot] = stopStopTime.getStopStopTime(link.fromNode.stop.getStopFacility().getId(), link.toNode.stop.getStopFacility().getId(), startTime+slot*timeSlot); linkTravelTimes.put(link.getId(), times); } else if(link.toNode.route!=null) { double[] times = new double[numSlots]; for(int slot = 0; slot<numSlots; slot++) times[slot] = waitTime.getRouteStopWaitTime(link.toNode.line.getId(), link.toNode.route.getId(), link.fromNode.stop.getStopFacility().getId(), startTime+slot*timeSlot); linkWaitingTimes.put(link.getId(), times); } } @Override
private void writeTransitRoute(final TransitRoute route) throws UncheckedIOException { List<Tuple<String, String>> attributes = new ArrayList<Tuple<String, String>>(1); attributes.add(this.createTuple(Constants.ID, route.getId().toString())); this.writeStartTag(Constants.TRANSIT_ROUTE, attributes); if (route.getDescription() != null) { this.writeStartTag(Constants.DESCRIPTION, null); this.writeContent(route.getDescription(), false); this.writeEndTag(Constants.DESCRIPTION); } this.writeStartTag(Constants.TRANSPORT_MODE, null); this.writeContent(route.getTransportMode(), false); this.writeEndTag(Constants.TRANSPORT_MODE); this.writeRouteProfile(route.getStops()); this.writeRoute(route.getRoute()); this.writeDepartures(route.getDepartures()); this.writeEndTag(Constants.TRANSIT_ROUTE); }
private void writeTransitRoute(final TransitRoute route) throws IOException, UncheckedIOException { List<Tuple<String, String>> attributes = new ArrayList<>(1); attributes.add(createTuple(Constants.ID, route.getId().toString())); this.writeStartTag(Constants.TRANSIT_ROUTE, attributes); if (!AttributesUtils.isEmpty(route.getAttributes())) { this.writer.write(NL); this.attributesWriter.writeAttributes("\t\t\t", this.writer, route.getAttributes()); } if (route.getDescription() != null) { this.writeStartTag(Constants.DESCRIPTION, null); this.writeContent(route.getDescription(), false); this.writeEndTag(Constants.DESCRIPTION); } this.writeStartTag(Constants.TRANSPORT_MODE, null); this.writeContent(route.getTransportMode(), false); this.writeEndTag(Constants.TRANSPORT_MODE); this.writeRouteProfile(route.getStops()); this.writeRoute(route.getRoute()); this.writeDepartures(route.getDepartures()); this.writeEndTag(Constants.TRANSIT_ROUTE); }
public void testInitialization() { Id<TransitRoute> id = Id.create(9791, TransitRoute.class); Link fromLink = new FakeLink(Id.create(10, Link.class), null, null); Link toLink = new FakeLink(Id.create(5, Link.class), null, null); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(fromLink.getId(), toLink.getId()); List<TransitRouteStop> stops = new ArrayList<TransitRouteStop>(); TransitRouteStop stop = new TransitRouteStopImpl(null, 50, 60); stops.add(stop); TransitRoute tRoute = createTransitRoute(id, route, stops, "train"); assertEquals("wrong id.", id.toString(), tRoute.getId().toString()); assertEquals("wrong route.", route, tRoute.getRoute()); assertEquals(stops.size(), tRoute.getStops().size()); assertEquals(stop, tRoute.getStops().get(0)); assertEquals("train", tRoute.getTransportMode()); }
@Test public void testCreateTransitRoute() { TransitScheduleFactory builder = createTransitScheduleBuilder(); Id<TransitRoute> id = Id.create(2, TransitRoute.class); NetworkRoute route = RouteUtils.createLinkNetworkRouteImpl(Id.create(3, Link.class), Id.create(4, Link.class)); List<TransitRouteStop> stops = new ArrayList<TransitRouteStop>(); TransitRouteStop stop1 = new TransitRouteStopImpl(null, 50, 60); stops.add(stop1); String mode = TransportMode.pt; TransitRoute tRoute = builder.createTransitRoute(id, route, stops, mode); Assert.assertEquals(id, tRoute.getId()); Assert.assertEquals(route, tRoute.getRoute()); Assert.assertEquals(1, tRoute.getStops().size()); Assert.assertEquals(stop1, tRoute.getStops().get(0)); Assert.assertEquals(mode, tRoute.getTransportMode()); }
final void sendTransitDriverStartsEvent(final double now) { // A test initializes this Agent without internalInterface. // Actually, I am not sure if agents should send Events (or just be reactive, so they can be // tested / exercised as a unit, without a QSim. michaz if (internalInterface != null) { // check if "Wenden" if(getTransitLine() == null){ eventsManager.processEvent(new TransitDriverStartsEvent(now, this.dummyPerson.getId(), this.vehicle.getId(), Id.create("Wenden", TransitLine.class), Id.create("Wenden", TransitRoute.class), Id.create("Wenden", Departure.class))); } else { eventsManager.processEvent(new TransitDriverStartsEvent(now, this.dummyPerson.getId(), this.vehicle.getId(), getTransitLine().getId(), getTransitRoute().getId(), getDeparture().getId())); } } }
public void testInitializationStops() { TransitScheduleFactory builder = new TransitScheduleFactoryImpl(); TransitStopFacility stop1 = builder.createTransitStopFacility(Id.create(1, TransitStopFacility.class), new Coord(5, 11), false); TransitStopFacility stop2 = builder.createTransitStopFacility(Id.create(2, TransitStopFacility.class), new Coord(18, 7), false); Link link1 = new FakeLink(Id.create(3, Link.class)); Link link2 = new FakeLink(Id.create(4, Link.class)); stop1.setLinkId(link1.getId()); stop2.setLinkId(link2.getId()); TransitLine line = builder.createTransitLine(Id.create(5, TransitLine.class)); TransitRoute tRoute = builder.createTransitRoute(Id.create(6, TransitRoute.class), null, Collections.<TransitRouteStop>emptyList(), "bus"); ExperimentalTransitRoute route = new ExperimentalTransitRoute(stop1, line, tRoute, stop2); assertEquals(stop1.getId(), route.getAccessStopId()); assertEquals(line.getId(), route.getLineId()); assertEquals(tRoute.getId(), route.getRouteId()); assertEquals(stop2.getId(), route.getEgressStopId()); assertEquals(link1.getId(), route.getStartLinkId()); assertEquals(link2.getId(), route.getEndLinkId()); }