Free cookie consent management tool by TermsFeed Policy Generator

source: branches/RoutePlanning/HeuristicLab.Problems.RoutePlanning.Test/Program.cs @ 8350

Last change on this file since 8350 was 8350, checked in by spimming, 12 years ago

#1894:

  • new implementation for priority queue
  • based on heap data structure
  • allow multiple keys
  • adapted test program
File size: 4.7 KB
RevLine 
[8293]1
[8314]2using System;
[8316]3using System.Diagnostics;
4using System.IO;
[8315]5using System.Xml;
[8314]6using HeuristicLab.Algorithms.GraphRouting;
[8315]7using HeuristicLab.Problems.RoutePlanning.Graph;
8using HeuristicLab.Problems.RoutePlanning.Osm;
[8293]9using HeuristicLab.Problems.RoutePlanning.Osm.Data;
10namespace HeuristicLab.Problems.RoutePlanning.Test {
11  class Program {
12    static void Main(string[] args) {
[8316]13      string file1 = @"..\..\OsmTestFiles\test.osm";
14      string file2 = @"..\..\OsmTestFiles\testNode1.osm";
15      string file3 = @"..\..\OsmTestFiles\testWay1.osm";
16      string file4 = @"..\..\OsmTestFiles\testRelation1.osm";
17      string file5 = @"..\..\OsmTestFiles\test_mid.osm";
18      string file6 = @"C:\dev\osmfiles\oberosterreich.highway.osm";
[8314]19
[8316]20      Test(file5, 529102170, 1001363194, true, false);
21      //Test(file6, 529102170, 1001363194, true, false);
22      //Test(file6, 529102170, 31372732, false, true); // inz - hgb
[8314]23      System.Console.Read();
24    }
25
[8316]26    private static void Test(string filepath, long sourceNodeId, long targetNodeId, bool showResult, bool writeResultFile) {
27      FileInfo file = new FileInfo(filepath);
28      Console.WriteLine("Test BEGIN ------------------------------");
29      Console.WriteLine("File name: {0}", file.Name);
30      Console.WriteLine();
[8314]31      Console.Write("Loading data ... ");
[8316]32      var sw = Stopwatch.StartNew();
[8293]33      XmlDataSource xmlDs = new XmlDataSource(filepath);
[8316]34      sw.Stop();
[8314]35      Console.WriteLine("done.");
[8316]36      Console.WriteLine("Loading Time: {0}", sw.Elapsed);
37      Console.WriteLine();
[8314]38      Graph.Graph graph = new Graph.Graph(xmlDs);
[8350]39      //IRouter router = new DijkstraAlgorithm(graph);
40      IRouter router = new AStarAlgorithm(graph);
[8314]41      Console.Write("Calculate route ... ");
[8316]42      sw = Stopwatch.StartNew();
43      long[] result = router.Calculate(sourceNodeId, targetNodeId);
44      sw.Stop();
45      Console.WriteLine("done.");
46      Console.WriteLine("Execution Time: {0}", sw.Elapsed);
[8314]47      Console.WriteLine();
[8316]48      if (showResult) {
49        Console.WriteLine("Result: ");
50        foreach (long i in result) System.Console.Write(i + "; ");
51        Console.WriteLine();
52        Console.WriteLine();
53      }
54      if (writeResultFile) {
55        string dt = DateTime.Now.ToString("yyyyMMddhhmmss_");
56        string fn = Path.GetFileNameWithoutExtension(file.Name);
57        string resultFile = dt + fn + "_" + sourceNodeId + "-" + targetNodeId + ".gpx";
58        Console.WriteLine("Result file: {0}", resultFile);
59        WriteGPXFile(graph, result, resultFile);
60      }
61      Console.WriteLine("=========================================");
62      Console.WriteLine();
[8293]63    }
[8315]64
[8316]65    private static void WriteGPXFile(Graph.Graph graph, long[] route, string file) {
[8315]66      XmlWriterSettings settings = new XmlWriterSettings();
67      settings.Indent = true;
68      settings.IndentChars = ("   ");
69
[8316]70      using (XmlWriter writer = XmlWriter.Create(file, settings)) {
[8315]71        writer.WriteStartElement("gpx", "http://www.topografix.com/GPX/1/0");
72        writer.WriteAttributeString("version", "1.1");
73        writer.WriteAttributeString("creator", "cloudia");
74
75        foreach (long nodeId in route) {
76          Vertex<Node> node = graph.GetVertex(nodeId);
77          writer.WriteStartElement("wpt");
78          writer.WriteAttributeString("lat", XmlConvert.ToString(node.Node.Latitude));
79          writer.WriteAttributeString("lon", XmlConvert.ToString(node.Node.Longitude));
80          writer.WriteEndElement(); // wpt
81        }
82
83        //writer.WriteStartElement("rte");
84        //foreach (long nodeId in route) {
85        //  Vertex<Node> node = graph.GetVertex(nodeId);
86        //  writer.WriteStartElement("rtept");
87        //  writer.WriteAttributeString("lat", XmlConvert.ToString(node.Node.Latitude));
88        //  writer.WriteAttributeString("lon", XmlConvert.ToString(node.Node.Longitude));
89        //  writer.WriteEndElement(); // rtept
90        //}
91        //writer.WriteEndElement(); // rte
92
93        //writer.WriteStartElement("trk");
94        //writer.WriteElementString("name", "RoutePath");
95        ////writer.WriteEndElement(); // name
96        //writer.WriteStartElement("trkseq");
97        //foreach (long nodeId in route) {
98        //  Vertex<Node> node = graph.GetVertex(nodeId);
99        //  writer.WriteStartElement("trkpt");
100        //  writer.WriteAttributeString("lat", XmlConvert.ToString(node.Node.Latitude));
101        //  writer.WriteAttributeString("lon", XmlConvert.ToString(node.Node.Longitude));
102        //  writer.WriteEndElement(); // trkpt
103        //}
104        //writer.WriteEndElement(); // trkseq
105        //writer.WriteEndElement(); // trk
106
107        writer.WriteEndElement(); // gpx
108      }
109    }
[8293]110  }
111}
Note: See TracBrowser for help on using the repository browser.