public void Setup() { this.DataDirPath = Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), "../../../../../../../../../", "data")); var spatial = new GeographySpatialOperation(); var roads = this.ReadRoads(spatial); var mapBuilder = new RoadMapBuilder(spatial); _roadMap = mapBuilder.AddRoads(roads).Build(); { var naiveDijkstraRouter = new DijkstraRouter <Road, RoadPoint>(); _naiveDijkstraMatcher = new Matcher <MatcherCandidate, MatcherTransition, MatcherSample>( _roadMap, naiveDijkstraRouter, Costs.TimePriorityCost, spatial); _naiveDijkstraMatcher.MaxDistance = MaxDistance; // set maximum searching distance between two GPS points to 1000 meters. _naiveDijkstraMatcher.MaxRadius = MaxGpsRadius; // sets maximum radius for candidate selection to 200 meters } { var precomputedDijkstraRouter = new PrecomputedDijkstraRouter <Road, RoadPoint>(_roadMap, Costs.TimePriorityCost, Costs.DistanceCost, MaxDistance); _precomputedDijkstraMatcher = new Matcher <MatcherCandidate, MatcherTransition, MatcherSample>( _roadMap, precomputedDijkstraRouter, Costs.TimePriorityCost, spatial); _precomputedDijkstraMatcher.MaxDistance = MaxDistance; // set maximum searching distance between two GPS points to 1000 meters. _precomputedDijkstraMatcher.MaxRadius = MaxGpsRadius; // sets maximum radius for candidate selection to 200 meters } _samples = ReadSamples().OrderBy(s => s.Time).ToArray(); }
FindPaths( RoadPoint source, IEnumerable <RoadPoint> targets, Func <Road, double> cost, Func <Road, double> bound, double maxRadius) { var dijkstraRouter = new DijkstraRouter <Road, RoadPoint>(); var precomputedRouter = new PrecomputedDijkstraRouter <Road, RoadPoint>(_map, cost, bound, maxRadius); var expectedPath = dijkstraRouter.Route(source, targets, cost, bound, maxRadius); var actualPath = precomputedRouter.Route(source, targets, cost, bound, maxRadius); return(expectedPath, actualPath); }
public void SelfLoopTest1() { var max = 200D; var start = new RoadPoint(_map.GetEdge(0), 0.3); var targets = new RoadPoint[] { new RoadPoint(_map.GetEdge(0), 0.2), }; Func <Road, double> cost = r => r.Weight; var dijkstraRouter = new DijkstraRouter <Road, RoadPoint>(); var precomputedRouter = new PrecomputedDijkstraRouter <Road, RoadPoint>(_map, cost, cost, max); var expectedPath = dijkstraRouter.Route(start, targets, cost, cost, max); var actualPath = precomputedRouter.Route(start, targets, cost, cost, max); Assert.Equal(expectedPath, actualPath); }