Changeset 8462 for branches/RoutePlanning
- Timestamp:
- 08/09/12 16:20:19 (12 years ago)
- Location:
- branches/RoutePlanning
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning.Test/Program.cs
r8438 r8462 21 21 string file5 = @"..\..\OsmTestFiles\test_mid.osm"; 22 22 string file6 = @"C:\dev\osmfiles\oberosterreich.highway.osm"; 23 string file7 = @"C:\dev\osmfiles\austria.highway.osm"; 23 24 24 IDataSource ds = TestLoad(file 6);25 IDataSource ds = TestLoad(file5); 25 26 OsmGraph graph = new OsmGraph(ds); 26 TestRouter(new DijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb 27 TestRouter(new AStarAlgorithm(graph), 529102170, 31372732, false); // inz - hgb 28 TestRouter(new AStarAlgorithmV2(graph), 529102170, 31372732, false); // inz - hgb 29 TestRouter(new BidrectionalDijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb 27 IGraph graphNew = TestGetRoutingGraph(ds); 28 TestRouter(new DijkstraAlgorithm(graph), 529102170, 1001363194, true); 29 TestRouter(new DijkstraAlgorithmV2(graphNew), 529102170, 1001363194, true); 30 //TestRouter(new DijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb 31 //TestRouter(new DijkstraAlgorithmV2(graphNew), 529102170, 31372732, false); // inz - hgb 32 //TestRouter(new AStarAlgorithm(graph), 529102170, 31372732, false); // inz - hgb 33 //TestRouter(new AStarAlgorithmV2(graph), 529102170, 31372732, false); // inz - hgb 34 //TestRouter(new BidrectionalDijkstraAlgorithm(graph), 529102170, 31372732, false); // inz - hgb 35 36 //TestRouter(new AStarAlgorithmV2(graph), 346151602, 33196510, false); // bregenz (bahnhofstr) - wien (stepansplatz) 30 37 31 38 //TestLoadAndRouter(file6, typeof(DijkstraAlgorithm), 529102170, 31372732, false, false); // inz - hgb … … 33 40 //TestLoadAndRouter(file6, typeof(AStarAlgorithmV2), 529102170, 31372732, false, true); // inz - hgb 34 41 42 //TestLoadAndRouter(file6, typeof(DijkstraAlgorithm), 529102170, 1001363194, true, false); 35 43 //TestLoadAndRouter(file6, typeof(DijkstraAlgorithm), 529102170, 1001363194, true, false); 36 44 //TestLoadAndRouter(file6, typeof(AStarAlgorithm), 529102170, 1001363194, true, false); … … 41 49 //TestLoadAndRouter(file5, typeof(BidrectionalDijkstraAlgorithm), 529102170, 1001363194, true, true); 42 50 //TestLoadAndRouter(file6, typeof(BidrectionalDijkstraAlgorithm), 529102170, 31372732, false, true); // inz - hgb 51 52 53 54 43 55 44 56 System.Console.Read(); … … 167 179 } 168 180 } 181 182 private static IGraph TestGetRoutingGraph(IDataSource ds) { 183 Console.WriteLine("Test GetRoutingGraph BEGIN ------------------------"); 184 Console.WriteLine(); 185 Console.Write("Construct graph ... "); 186 var sw = Stopwatch.StartNew(); 187 IGraph graph = ds.GetRoutingGraph(); 188 sw.Stop(); 189 Console.WriteLine("done."); 190 Console.WriteLine("Time: {0}", sw.Elapsed); 191 Console.WriteLine(); 192 Console.WriteLine("==================================================="); 193 Console.WriteLine(); 194 return graph; 195 } 169 196 } 170 197 } -
branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Graph/OsmGraph.cs
r8434 r8462 71 71 public float GetWeight(Way edge, OsmVertex<Node> source, OsmVertex<Node> target) { 72 72 double distance = Utils.Distance(source.Node.Point, target.Node.Point); 73 //double distance = Utils.LocationDistance(source.Node.Point, target.Node.Point); 73 74 int speed = edge.GetMaxSpeed(); 74 75 double weight = (distance / speed) * 3.6; 76 //double weight = (distance / speed); 75 77 return (float)weight; 76 78 } … … 84 86 public float EstimatedCosts(OsmVertex<Node> source, OsmVertex<Node> target) { 85 87 double distance = Utils.Distance(source.Node.Point, target.Node.Point); 88 //double distance = Utils.LocationDistance(source.Node.Point, target.Node.Point); 86 89 int speed = 130; 87 90 double costs = (distance / speed) * 3.6; 91 //double costs = (distance / speed); 88 92 return (float)costs; 89 93 } -
branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Osm.Data/XmlDataSource.cs
r8316 r8462 1 1 2 using System; 2 3 using System.Collections.Generic; 3 4 using System.IO; 4 5 using System.Xml; 6 using HeuristicLab.Problems.RoutePlanning.Graph; 5 7 namespace HeuristicLab.Problems.RoutePlanning.Osm.Data { 6 8 public class XmlDataSource : IDataSource { … … 82 84 } 83 85 84 #endregion 86 public IGraph GetRoutingGraph() { 87 IGraph graph = new Graph.Graph(); 88 foreach (Way way in ways.Values) { 89 List<Node> nodes = way.Nodes; 90 for (int i = 0; i < way.Nodes.Count - 1; i++) { 91 Vertex v1 = new Vertex(nodes[i].Id, nodes[i].Longitude, nodes[i].Latitude); 92 graph.AddVertex(v1); 93 Vertex v2 = new Vertex(nodes[i + 1].Id, nodes[i + 1].Longitude, nodes[i + 1].Latitude); 94 if (v1.Id == 370626403) { 95 Console.WriteLine(); 96 } 97 graph.AddVertex(v2); 98 if (way.OneWay) { 99 Edge<Vertex> edge = new Edge<Vertex>(v1, v2); 100 edge.Category = (short)way.HighwayTag; 101 graph.AddEdge(edge); 102 } else { 103 Edge<Vertex> edgeForward = new Edge<Vertex>(v1, v2); 104 edgeForward.Category = (short)way.HighwayTag; 105 graph.AddEdge(edgeForward); 106 107 Edge<Vertex> edgeBackward = new Edge<Vertex>(v2, v1); 108 edgeForward.Category = (short)way.HighwayTag; 109 graph.AddEdge(edgeBackward); 110 } 111 112 } 113 } 114 return graph; 115 } 116 117 #endregion 118 119 #region Private Methods 85 120 86 121 private void ReadData() { … … 214 249 } 215 250 } 251 252 #endregion 216 253 } 217 254 } -
branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Osm/IDataSource.cs
r8300 r8462 1 1 2 2 using System.Collections.Generic; 3 using HeuristicLab.Problems.RoutePlanning.Graph; 3 4 namespace HeuristicLab.Problems.RoutePlanning.Osm { 4 5 public interface IDataSource { … … 8 9 List<Way> GetWays(Node node); 9 10 Relation GetRelation(long relationId); 11 IGraph GetRoutingGraph(); 10 12 } 11 13 } -
branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning/3.3/Osm/Utils.cs
r8308 r8462 8 8 double dy = p2.Y - p1.Y; 9 9 return Math.Sqrt(dx * dx + dy * dy); 10 } 11 12 public static double LocationDistance(PointD p1, PointD p2) { 13 // The Haversine formula 14 /* dlon = lon2 - lon1 15 dlat = lat2 - lat1 16 a = (sin(dlat/2))^2 + cos(lat1) * cos(lat2) * (sin(dlon/2))^2 17 c = 2 * atan2(sqrt(a), sqrt(1-a)) 18 d = R * c 19 */ 20 21 double lat1Rad = p1.Y * (Math.PI / 180.0); 22 double long1Rad = p1.X * (Math.PI / 180.0); 23 double lat2Rad = p2.Y * (Math.PI / 180.0); 24 double long2Rad = p2.X * (Math.PI / 180.0); 25 26 double longitude = long2Rad - long1Rad; 27 double latitude = lat2Rad - lat1Rad; 28 29 double a = Math.Pow(Math.Sin(latitude / 2.0), 2.0) + 30 Math.Cos(lat1Rad) * Math.Cos(lat2Rad) * 31 Math.Pow(Math.Sin(longitude / 2.0), 2.0); 32 33 double c = 2.0 * Math.Asin(Math.Sqrt(a)); 34 35 const double earthRadiusKms = 6376.5; 36 double distance = earthRadiusKms * c; 37 38 return distance; 10 39 } 11 40
Note: See TracChangeset
for help on using the changeset viewer.