use of org.onebusaway.transit_data_federation.model.ShapePoints in project onebusaway-application-modules by camsys.
the class ShapeGeospatialIndexTaskTest method test.
@Test
public void test() throws IOException, ClassNotFoundException {
ShapeGeospatialIndexTask task = new ShapeGeospatialIndexTask();
File path = File.createTempFile(ShapeGeospatialIndexTaskTest.class.getName(), ".tmp");
path.delete();
path.deleteOnExit();
FederatedTransitDataBundle bundle = Mockito.mock(FederatedTransitDataBundle.class);
Mockito.when(bundle.getShapeGeospatialIndexDataPath()).thenReturn(path);
task.setBundle(bundle);
RefreshService refreshService = Mockito.mock(RefreshService.class);
task.setRefreshService(refreshService);
ShapePointHelper shapePointHelper = Mockito.mock(ShapePointHelper.class);
task.setShapePointHelper(shapePointHelper);
TransitGraphDao transitGraphDao = Mockito.mock(TransitGraphDao.class);
task.setTransitGraphDao(transitGraphDao);
StopEntry stopA = stop("stopA", 47.65, -122.32);
StopEntry stopB = stop("stopB", 47.67, -122.30);
Mockito.when(transitGraphDao.getAllStops()).thenReturn(Arrays.asList(stopA, stopB));
TripEntryImpl tripA = trip("tripA");
AgencyAndId shapeIdA = aid("shapeA");
tripA.setShapeId(shapeIdA);
TripEntryImpl tripB = trip("tripB");
AgencyAndId shapeIdB = aid("shapeB");
tripB.setShapeId(shapeIdB);
Mockito.when(transitGraphDao.getAllTrips()).thenReturn(Arrays.asList((TripEntry) tripA, tripB));
ShapePointsFactory factory = new ShapePointsFactory();
factory.addPoint(47.652300128129454, -122.30622018270873);
factory.addPoint(47.653181844549394, -122.30523312979125);
factory.addPoint(47.654265901710744, -122.30511511259459);
ShapePoints shapeA = factory.create();
factory = new ShapePointsFactory();
factory.addPoint(47.661275594717026, -122.31189573698424);
factory.addPoint(47.661347854692465, -122.3240622370758);
factory.addPoint(47.661368177792546, -122.32508885257624);
factory.addPoint(47.66496659665593, -122.32501375072383);
ShapePoints shapeB = factory.create();
Mockito.when(shapePointHelper.getShapePointsForShapeId(shapeIdA)).thenReturn(shapeA);
Mockito.when(shapePointHelper.getShapePointsForShapeId(shapeIdB)).thenReturn(shapeB);
task.run();
Mockito.verify(refreshService).refresh(RefreshableResources.SHAPE_GEOSPATIAL_INDEX);
Map<CoordinateBounds, List<AgencyAndId>> shapeIdsByBounds = ObjectSerializationLibrary.readObject(path);
assertEquals(5, shapeIdsByBounds.size());
CoordinateBounds b = new CoordinateBounds(47.65048049686506, -122.30767397879845, 47.654977097836735, -122.300997795721);
assertEquals(Arrays.asList(shapeIdA), shapeIdsByBounds.get(b));
b = new CoordinateBounds(47.65947369880841, -122.32102634495334, 47.66397029978009, -122.3143501618759);
assertEquals(Arrays.asList(shapeIdB), shapeIdsByBounds.get(b));
b = new CoordinateBounds(47.66397029978009, -122.32770252803078, 47.66846690075177, -122.32102634495334);
assertEquals(Arrays.asList(shapeIdB), shapeIdsByBounds.get(b));
b = new CoordinateBounds(47.65947369880841, -122.3143501618759, 47.66397029978009, -122.30767397879845);
assertEquals(Arrays.asList(shapeIdB), shapeIdsByBounds.get(b));
b = new CoordinateBounds(47.65947369880841, -122.32770252803078, 47.66397029978009, -122.32102634495334);
assertEquals(Arrays.asList(shapeIdB), shapeIdsByBounds.get(b));
}
use of org.onebusaway.transit_data_federation.model.ShapePoints in project onebusaway-application-modules by camsys.
the class ShapePointHelperTest method test.
@Test
public void test() {
ShapePointHelper helper = new ShapePointHelper();
GtfsRelationalDao gtfsDao = Mockito.mock(GtfsRelationalDao.class);
helper.setGtfsRelationalDao(gtfsDao);
AgencyAndId shapeId = new AgencyAndId("1", "shapeA");
ShapePoint p1 = point(47.652300128129454, -122.30622018270873);
ShapePoint p2 = point(47.653181844549394, -122.30523312979125);
ShapePoint p3 = point(47.654265901710744, -122.30511511259459);
List<ShapePoint> points = Arrays.asList(p1, p2, p3);
Mockito.when(gtfsDao.getShapePointsForShapeId(shapeId)).thenReturn(points);
ShapePoints shapePoints = helper.getShapePointsForShapeId(shapeId);
assertEquals(3, shapePoints.getSize());
for (int i = 0; i < 3; i++) {
assertEquals(points.get(i).getLat(), shapePoints.getLatForIndex(i), 1e-7);
assertEquals(points.get(i).getLon(), shapePoints.getLonForIndex(i), 1e-7);
}
assertEquals(0.0, shapePoints.getDistTraveledForIndex(0), 0.01);
assertEquals(122.79, shapePoints.getDistTraveledForIndex(1), 0.01);
assertEquals(243.66, shapePoints.getDistTraveledForIndex(2), 0.01);
helper.getShapePointsForShapeId(shapeId);
// The second call should be cached
Mockito.verify(gtfsDao, Mockito.times(1)).getShapePointsForShapeId(shapeId);
}
use of org.onebusaway.transit_data_federation.model.ShapePoints 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.model.ShapePoints 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.model.ShapePoints 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());
}
Aggregations