use of org.onebusaway.transit_data_federation.impl.transit_graph.StopTimeEntryImpl in project onebusaway-application-modules by camsys.
the class BlockConfigurationEntryImplTest method test.
@Test
public void test() {
ServiceIdActivation serviceIds = serviceIds(lsids("sA"), lsids("sB"));
StopEntryImpl stopA = stop("stopA", 47.0, -122.0);
StopEntryImpl stopB = stop("stopB", 47.1, -122.0);
BlockEntryImpl block = block("blockA");
TripEntryImpl tripA = trip("tripA", 1000);
TripEntryImpl tripB = trip("tripB", 2000);
TripEntryImpl tripC = trip("tripB", 1500);
List<TripEntry> trips = Arrays.asList((TripEntry) tripA, tripB, tripC);
StopTimeEntryImpl st1 = stopTime(1, stopA, tripA, time(6, 30), time(6, 35), 200);
StopTimeEntryImpl st2 = stopTime(2, stopB, tripA, time(7, 00), time(7, 10), 800);
StopTimeEntryImpl st3 = stopTime(3, stopB, tripB, time(7, 30), time(7, 35), 400);
StopTimeEntryImpl st4 = stopTime(4, stopA, tripB, time(8, 00), time(8, 07), 1600);
StopTimeEntryImpl st5 = stopTime(5, stopA, tripC, time(8, 30), time(8, 35), 300);
StopTimeEntryImpl st6 = stopTime(6, stopB, tripC, time(9, 00), time(9, 02), 1200);
Builder builder = BlockConfigurationEntryImpl.builder();
builder.setBlock(block);
builder.setTrips(trips);
builder.setServiceIds(serviceIds);
builder.setTripGapDistances(new double[] { 10.0, 20.0, 0.0 });
BlockConfigurationEntry entry = builder.create();
assertSame(block, entry.getBlock());
assertSame(serviceIds, entry.getServiceIds());
assertEquals(4530.0, entry.getTotalBlockDistance(), 0.0);
/**
**
* Trips
***
*/
List<BlockTripEntry> blockTrips = entry.getTrips();
assertEquals(3, blockTrips.size());
BlockTripEntry blockTrip = blockTrips.get(0);
assertEquals(0, blockTrip.getSequence());
assertEquals(0, blockTrip.getAccumulatedStopTimeIndex());
assertEquals(0, blockTrip.getAccumulatedSlackTime());
assertEquals(0.0, blockTrip.getDistanceAlongBlock(), 0.0);
assertSame(blockTrips.get(1), blockTrip.getNextTrip());
assertNull(blockTrip.getPreviousTrip());
blockTrip = blockTrips.get(1);
assertEquals(1, blockTrip.getSequence());
assertEquals(2, blockTrip.getAccumulatedStopTimeIndex());
assertEquals(15 * 60, blockTrip.getAccumulatedSlackTime());
assertEquals(1010.0, blockTrip.getDistanceAlongBlock(), 0.0);
assertSame(blockTrips.get(2), blockTrip.getNextTrip());
assertSame(blockTrips.get(0), blockTrip.getPreviousTrip());
blockTrip = blockTrips.get(2);
assertEquals(2, blockTrip.getSequence());
assertEquals(4, blockTrip.getAccumulatedStopTimeIndex());
assertEquals(35 * 60, blockTrip.getAccumulatedSlackTime());
assertEquals(3030.0, blockTrip.getDistanceAlongBlock(), 0.0);
assertNull(blockTrip.getNextTrip());
assertSame(blockTrips.get(1), blockTrip.getPreviousTrip());
/**
**
* Stop Times
***
*/
List<BlockStopTimeEntry> stopTimes = entry.getStopTimes();
assertEquals(6, stopTimes.size());
BlockStopTimeEntry bst = stopTimes.get(0);
assertEquals(0, bst.getAccumulatedSlackTime());
assertEquals(0, bst.getBlockSequence());
assertEquals(200, bst.getDistanceAlongBlock(), 0.0);
assertSame(st1, bst.getStopTime());
assertSame(blockTrips.get(0), bst.getTrip());
bst = stopTimes.get(1);
assertEquals(300, bst.getAccumulatedSlackTime());
assertEquals(1, bst.getBlockSequence());
assertEquals(800, bst.getDistanceAlongBlock(), 0.0);
assertSame(st2, bst.getStopTime());
assertSame(blockTrips.get(0), bst.getTrip());
bst = stopTimes.get(2);
assertEquals(15 * 60, bst.getAccumulatedSlackTime());
assertEquals(2, bst.getBlockSequence());
assertEquals(1410, bst.getDistanceAlongBlock(), 0.0);
assertSame(st3, bst.getStopTime());
assertSame(blockTrips.get(1), bst.getTrip());
bst = stopTimes.get(3);
assertEquals(20 * 60, bst.getAccumulatedSlackTime());
assertEquals(3, bst.getBlockSequence());
assertEquals(2610, bst.getDistanceAlongBlock(), 0.0);
assertSame(st4, bst.getStopTime());
assertSame(blockTrips.get(1), bst.getTrip());
bst = stopTimes.get(4);
assertEquals(35 * 60, bst.getAccumulatedSlackTime());
assertEquals(4, bst.getBlockSequence());
assertEquals(3330, bst.getDistanceAlongBlock(), 0.0);
assertSame(st5, bst.getStopTime());
assertSame(blockTrips.get(2), bst.getTrip());
bst = stopTimes.get(5);
assertEquals(40 * 60, bst.getAccumulatedSlackTime());
assertEquals(5, bst.getBlockSequence());
assertEquals(4230, bst.getDistanceAlongBlock(), 0.0);
assertSame(st6, bst.getStopTime());
assertSame(blockTrips.get(2), bst.getTrip());
}
use of org.onebusaway.transit_data_federation.impl.transit_graph.StopTimeEntryImpl in project onebusaway-application-modules by camsys.
the class DistanceAlongShapeLibraryTest method test01.
@Test
public void test01() throws IOException, DistanceAlongShapeException {
ShapePoints shapePoints = readShapePoints("shapes-01.txt");
List<StopTimeEntryImpl> stopTimes = readStopTimes("stops-01.txt");
DistanceAlongShapeLibrary library = new DistanceAlongShapeLibrary();
PointAndIndex[] points = library.getDistancesAlongShape(shapePoints, stopTimes);
assertEquals(70, points.length);
// Let's check a few tricky ones, including the stops that appear multiple
// times
// STOP 1610
assertEquals(127.6, points[0].distanceAlongShape, 0.1);
assertEquals(2, points[0].index);
// STOP 9390
assertEquals(3074.4, points[10].distanceAlongShape, 0.1);
assertEquals(95, points[10].index);
// STOP 29952
assertEquals(13759.9, points[50].distanceAlongShape, 0.1);
assertEquals(452, points[50].index);
// STOP 29090
assertEquals(18015.3, points[68].distanceAlongShape, 0.1);
assertEquals(616, points[68].index);
// assertEquals(18046.3, points[69].distanceAlongShape, 0.1); // STOP 29952
assertEquals(618, points[69].index);
}
use of org.onebusaway.transit_data_federation.impl.transit_graph.StopTimeEntryImpl in project onebusaway-application-modules by camsys.
the class StopTimeEntriesFactoryTest method testDuplicateRemoval.
@Test
public void testDuplicateRemoval() {
TransitGraphImpl graph = new TransitGraphImpl();
Stop stopA = new Stop();
stopA.setId(aid("stopA"));
graph.putStopEntry(stop("stopA", 47.672207391799056, -122.387855896286));
Stop stopB = new Stop();
stopB.setId(aid("stopB"));
graph.putStopEntry(stop("stopB", 47.66852277218285, -122.3853882639923));
Stop stopC = new Stop();
stopC.setId(aid("stopC"));
graph.putStopEntry(stop("stopC", 47.66847942216854, -122.37545336180114));
graph.refreshStopMapping();
Agency agency = new Agency();
agency.setId("1");
agency.setTimezone("America/Los_Angeles");
Route route = new Route();
route.setAgency(agency);
Trip trip = new Trip();
trip.setRoute(route);
trip.setServiceId(aid("serviceId"));
TripEntryImpl tripEntry = trip("trip");
StopTime stA = new StopTime();
stA.setId(100);
stA.setArrivalTime(time(9, 00));
stA.setDepartureTime(time(9, 05));
stA.setStopSequence(100);
stA.setStop(stopA);
stA.setTrip(trip);
StopTime stB = new StopTime();
stB.setId(101);
stB.setArrivalTime(time(9, 00));
stB.setDepartureTime(time(9, 05));
stB.setStopSequence(101);
stB.setStop(stopB);
stB.setTrip(trip);
StopTime stC = new StopTime();
stC.setId(102);
stC.setArrivalTime(time(10, 00));
stC.setDepartureTime(time(10, 05));
stC.setStopSequence(102);
stC.setStop(stopC);
stC.setTrip(trip);
StopTimeEntriesFactory factory = new StopTimeEntriesFactory();
factory.setDistanceAlongShapeLibrary(new DistanceAlongShapeLibrary());
List<StopTime> stopTimes = Arrays.asList(stA, stB, stC);
ShapePointsFactory shapePointsFactory = new ShapePointsFactory();
shapePointsFactory.addPoint(47.673840100841396, -122.38756621771239);
shapePointsFactory.addPoint(47.668667271970484, -122.38756621771239);
shapePointsFactory.addPoint(47.66868172192725, -122.3661729186096);
ShapePoints shapePoints = shapePointsFactory.create();
List<StopTimeEntryImpl> entries = factory.processStopTimes(graph, stopTimes, tripEntry, shapePoints);
assertEquals(stopTimes.size(), entries.size());
StopTimeEntryImpl entry = entries.get(0);
assertEquals(0, entry.getAccumulatedSlackTime());
assertEquals(time(9, 00), entry.getArrivalTime());
assertEquals(time(9, 05), entry.getDepartureTime());
assertEquals(0, entry.getSequence());
assertEquals(181.5, entry.getShapeDistTraveled(), 0.1);
assertEquals(5 * 60, entry.getSlackTime());
entry = entries.get(1);
assertEquals(5 * 60, entry.getAccumulatedSlackTime());
assertEquals(time(9, 28, 31), entry.getArrivalTime());
assertEquals(time(9, 28, 31), entry.getDepartureTime());
assertEquals(1, entry.getSequence());
assertEquals(738.7, entry.getShapeDistTraveled(), 0.1);
assertEquals(0, entry.getSlackTime());
entry = entries.get(2);
assertEquals(5 * 60, entry.getAccumulatedSlackTime());
assertEquals(time(10, 00), entry.getArrivalTime());
assertEquals(time(10, 05), entry.getDepartureTime());
assertEquals(2, entry.getSequence());
assertEquals(1484.5, entry.getShapeDistTraveled(), 0.1);
assertEquals(5 * 60, entry.getSlackTime());
}
use of org.onebusaway.transit_data_federation.impl.transit_graph.StopTimeEntryImpl in project onebusaway-application-modules by camsys.
the class StopTimeEntriesFactoryTest method test.
@Test
public void test() {
TransitGraphImpl graph = new TransitGraphImpl();
Stop stopA = new Stop();
stopA.setId(aid("stopA"));
graph.putStopEntry(stop("stopA", 47.672207391799056, -122.387855896286));
Stop stopB = new Stop();
stopB.setId(aid("stopB"));
graph.putStopEntry(stop("stopB", 47.66852277218285, -122.3853882639923));
Stop stopC = new Stop();
stopC.setId(aid("stopC"));
graph.putStopEntry(stop("stopC", 47.66847942216854, -122.37545336180114));
graph.refreshStopMapping();
Agency agency = new Agency();
agency.setId("1");
agency.setTimezone("America/Los_Angeles");
Route route = new Route();
route.setAgency(agency);
Trip trip = new Trip();
trip.setRoute(route);
trip.setServiceId(aid("serviceId"));
TripEntryImpl tripEntry = trip("trip");
StopTime stA = new StopTime();
stA.setId(100);
stA.setArrivalTime(time(9, 00));
stA.setDepartureTime(time(9, 05));
stA.setStopSequence(100);
stA.setStop(stopA);
stA.setTrip(trip);
StopTime stB = new StopTime();
stB.setId(101);
stB.setStopSequence(101);
stB.setStop(stopB);
stB.setTrip(trip);
StopTime stC = new StopTime();
stC.setId(102);
stC.setArrivalTime(time(10, 00));
stC.setDepartureTime(time(10, 05));
stC.setStopSequence(102);
stC.setStop(stopC);
stC.setTrip(trip);
StopTimeEntriesFactory factory = new StopTimeEntriesFactory();
factory.setDistanceAlongShapeLibrary(new DistanceAlongShapeLibrary());
List<StopTime> stopTimes = Arrays.asList(stA, stB, stC);
ShapePointsFactory shapePointsFactory = new ShapePointsFactory();
shapePointsFactory.addPoint(47.673840100841396, -122.38756621771239);
shapePointsFactory.addPoint(47.668667271970484, -122.38756621771239);
shapePointsFactory.addPoint(47.66868172192725, -122.3661729186096);
ShapePoints shapePoints = shapePointsFactory.create();
List<StopTimeEntryImpl> entries = factory.processStopTimes(graph, stopTimes, tripEntry, shapePoints);
assertEquals(stopTimes.size(), entries.size());
StopTimeEntryImpl entry = entries.get(0);
assertEquals(0, entry.getAccumulatedSlackTime());
assertEquals(time(9, 00), entry.getArrivalTime());
assertEquals(time(9, 05), entry.getDepartureTime());
assertEquals(0, entry.getSequence());
assertEquals(181.5, entry.getShapeDistTraveled(), 0.1);
assertEquals(5 * 60, entry.getSlackTime());
entry = entries.get(1);
assertEquals(5 * 60, entry.getAccumulatedSlackTime());
assertEquals(time(9, 28, 31), entry.getArrivalTime());
assertEquals(time(9, 28, 31), entry.getDepartureTime());
assertEquals(1, entry.getSequence());
assertEquals(738.7, entry.getShapeDistTraveled(), 0.1);
assertEquals(0, entry.getSlackTime());
entry = entries.get(2);
assertEquals(5 * 60, entry.getAccumulatedSlackTime());
assertEquals(time(10, 00), entry.getArrivalTime());
assertEquals(time(10, 05), entry.getDepartureTime());
assertEquals(2, entry.getSequence());
assertEquals(1484.5, entry.getShapeDistTraveled(), 0.1);
assertEquals(5 * 60, entry.getSlackTime());
}
use of org.onebusaway.transit_data_federation.impl.transit_graph.StopTimeEntryImpl in project onebusaway-application-modules by camsys.
the class TripEntriesFactory method getTripDistance.
private double getTripDistance(List<StopTimeEntryImpl> stopTimes, ShapePoints shapePoints) {
StopTimeEntryImpl lastStopTime = null;
try {
lastStopTime = stopTimes.get(stopTimes.size() - 1);
} catch (ArrayIndexOutOfBoundsException e) {
_log.error("FATAL: missing last stop " + stopTimes);
}
if (shapePoints != null) {
double[] distances = shapePoints.getDistTraveled();
double distance = distances[shapePoints.getSize() - 1];
return Math.max(lastStopTime.getShapeDistTraveled(), distance);
}
return lastStopTime.getShapeDistTraveled();
}
Aggregations