using System.Drawing; using System.Drawing.Imaging; using OSMDatastructure; using OSMDatastructure.Graph; using Pathfinding; using RenderPath; using Region = OSMDatastructure.Region; namespace Server; public class Server { public static void Main(string[] args) { ConsoleWriter newConsole = new(); Console.SetOut(newConsole); Console.SetError(newConsole); string workingDir = "D:/stuttgart-regbez-latest"; //RegionConverter.ConvertXMLToRegions("D:/stuttgart-regbez-latest.osm", "D:/stuttgart-regbez-latest"); //RegionConverter.ConvertXMLToRegions("D:/map.osm", "D:/map"); //RegionConverter.ConvertXMLToRegions("D:/germany-latest.osm", "D:/germany-latest"); Coordinates start = new (48.7933798f, 9.8275859f); Coordinates finish = new (48.795918f, 9.021618f); Console.WriteLine("Preparing BaseRender"); string parentFolder = new DirectoryInfo(workingDir).Parent!.FullName; RegionManager allRegions = new(workingDir); for (float lat = 48.75f - Region.RegionSize / 2; lat < 48.85f + Region.RegionSize / 2; lat += Region.RegionSize / 2) { for (float lon = 9f - Region.RegionSize / 2; lon < 9.9f + Region.RegionSize / 2; lon += Region.RegionSize / 2) { allRegions.GetRegion(new Coordinates(lat, lon)); } } Console.WriteLine("Regions Loaded. Rendering."); ValueTuple baseRender = Renderer.DrawArea(allRegions); for (double sameRoadPriority = 0; sameRoadPriority < 0.4; sameRoadPriority += 0.015) { for (double roadLevelPriority = 0.4; roadLevelPriority > 0; roadLevelPriority -= 0.015) { for (double angleWeightFactor = 45; angleWeightFactor < 65; angleWeightFactor += 1.0) { Console.WriteLine($"{angleWeightFactor}/65 {roadLevelPriority}/0,4 {sameRoadPriority}/0,4"); Pathfinder testresult = new Pathfinder(workingDir).AStar(start, finish, Tag.SpeedType.car, roadLevelPriority, sameRoadPriority, 0, angleWeightFactor); string fileName = $"angle{angleWeightFactor}_level{roadLevelPriority}_same{sameRoadPriority}.png"; string path = Path.Join(parentFolder, fileName); Image areaHeur = Renderer.DrawGScores(testresult.gScore, baseRender.Item1, baseRender.Item2).Item1; Image areaHeurPath = Renderer.DrawPath(testresult.pathResult, areaHeur, baseRender.Item2).Item1; areaHeurPath.Save(path, ImageFormat.Png); } } } /* Pathfinder result = new Pathfinder(workingDir).AStar(start, finish, Tag.SpeedType.car, 0.03, 0.01, 0, 50); Console.WriteLine($"Calc-time {result.pathResult!.calcTime} Path-length: {result.pathResult.pathNodes.Count} Visited-nodes: {result.gScore!.Count}"); string fileName = DateTime.Now.ToFileTime().ToString(); string parentFolder = new DirectoryInfo(workingDir).Parent!.FullName; string resultFileName = $"{new DirectoryInfo(workingDir).Name}-{fileName}.result"; result.SaveResult(Path.Join(parentFolder, resultFileName)); string renderFileName = $"{new DirectoryInfo(workingDir).Name}-{fileName}.render.png"; Image render = Renderer.DrawPathfinder(result); #pragma warning disable CA1416 render.Save(Path.Join(parentFolder, renderFileName), ImageFormat.Png); #pragma warning restore CA1416*/ } }