From 58aac549c7b3a7581f4bb36e422176c1dccec379 Mon Sep 17 00:00:00 2001 From: C9Glax <13404778+C9Glax@users.noreply.github.com> Date: Thu, 2 Feb 2023 22:30:43 +0100 Subject: [PATCH] Naming Changes --- Importer/Connection.cs | 42 ---- Importer/Coordinates.cs | 27 --- Importer/Importer.cs | 138 ------------- Importer/Node.cs | 21 -- Importer/Region.cs | 33 --- Importer/RegionManager.cs | 28 --- OSMImporter/Coordinates.cs | 50 +++++ OSMImporter/Importer.cs | 188 ++++++++++++++++++ OSMImporter/Node.cs | 44 ++++ .../OSMImporter.csproj | 4 - OSMImporter/Region.cs | 29 +++ OSMImporter/RegionManager.cs | 29 +++ OSMServer.sln | 8 +- OSMServer.sln.DotSettings | 4 + OSMServer.sln.DotSettings.user | 5 +- Server/Server.cs | 10 +- Server/Server.csproj | 4 + 17 files changed, 366 insertions(+), 298 deletions(-) delete mode 100644 Importer/Connection.cs delete mode 100644 Importer/Coordinates.cs delete mode 100644 Importer/Importer.cs delete mode 100644 Importer/Node.cs delete mode 100644 Importer/Region.cs delete mode 100644 Importer/RegionManager.cs create mode 100644 OSMImporter/Coordinates.cs create mode 100644 OSMImporter/Importer.cs create mode 100644 OSMImporter/Node.cs rename Importer/Importer.csproj => OSMImporter/OSMImporter.csproj (72%) create mode 100644 OSMImporter/Region.cs create mode 100644 OSMImporter/RegionManager.cs create mode 100644 OSMServer.sln.DotSettings diff --git a/Importer/Connection.cs b/Importer/Connection.cs deleted file mode 100644 index 3f1ed01..0000000 --- a/Importer/Connection.cs +++ /dev/null @@ -1,42 +0,0 @@ -namespace OSMServer; - -public class Connection -{ - public Coordinates end { get; } - - private Dictionary tags; - - - public Connection(Coordinates end) - { - this.end = end; - this.tags = new Dictionary(); - } - - public Connection(Coordinates end, Dictionary tags) - { - this.end = end; - this.tags = tags; - } - - public bool AddTag(string key, string value) - { - return this.tags.TryAdd(key, value); - } - - public string? TryGetTagValue(string key) - { - return this.tags.ContainsKey(key) ? this.tags[key] : null; - } - - public bool ContainsTag(string key) - { - return this.tags.ContainsKey(key); - } - - public void UpdateTag(string key, string value) - { - if(!this.AddTag(key, value)) - this.tags[key] = value; - } -} \ No newline at end of file diff --git a/Importer/Coordinates.cs b/Importer/Coordinates.cs deleted file mode 100644 index e752f55..0000000 --- a/Importer/Coordinates.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Diagnostics; - -namespace OSMServer; - -public class Coordinates -{ - public float lat { get; } - public float lon { get; } - - public Coordinates(float lat, float lon) - { - this.lat = lat; - this.lon = lon; - } - - public uint GetHash() - { - return Convert.ToUInt32((this.lat * 10000f + this.lon) * 10000f); - } - - public uint GetRegionHash() - { - float latRegion = this.lat % Importer.regionSize; - float lonRegion = this.lon % Importer.regionSize; - return new Coordinates(latRegion, lonRegion).GetHash(); - } -} \ No newline at end of file diff --git a/Importer/Importer.cs b/Importer/Importer.cs deleted file mode 100644 index 4060797..0000000 --- a/Importer/Importer.cs +++ /dev/null @@ -1,138 +0,0 @@ -using System.Xml; -using Newtonsoft.Json; - -namespace OSMServer; - -public class Importer -{ - - public const float regionSize = 0.01f; - - public static void Split(string xmlFilePath, string outputFolderPath) - { - if (!File.Exists(xmlFilePath)) - throw new FileNotFoundException(); - FileStream xmlFileStream = File.OpenRead(xmlFilePath); - HashSet nodesToImport = ReturnGraphNodes(XmlReader.Create(xmlFileStream)); - - xmlFileStream.Position = 0; - XmlReader xmlReader = XmlReader.Create(xmlFileStream); - Dictionary nodes = new Dictionary(); - RegionManager regionManager = new RegionManager(); - - while (xmlReader.ReadToFollowing("node")) - { - ulong id = Convert.ToUInt64(xmlReader.GetAttribute("id")); - if (nodesToImport.Contains(id)) - { - float lat = Convert.ToSingle(xmlReader.GetAttribute("lat")!.Replace('.', ',')); - float lon = Convert.ToSingle(xmlReader.GetAttribute("lon")!.Replace('.', ',')); - Node newNode = new Node(lat, lon); - nodes.Add(id, newNode); - regionManager.GetRegion(newNode).AddNode(id, newNode); - } - } - - xmlReader.Close(); - xmlFileStream.Position = 0; - xmlReader = XmlReader.Create(xmlFileStream); - - while (xmlReader.ReadToFollowing("way")) - { - XmlReader wayReader = xmlReader.ReadSubtree(); - HashSet nodesInWay = new HashSet(); - Dictionary tags = new Dictionary(); - while (wayReader.Read()) - { - if (wayReader.IsStartElement() && wayReader.Name.Equals("nd")) - { - nodesInWay.Add(Convert.ToUInt64(wayReader.GetAttribute("ref"))); - } - else if (wayReader.IsStartElement() && wayReader.Name.Equals("tag")) - { - tags.Add(wayReader.GetAttribute("k")!, wayReader.GetAttribute("v")!); - } - } - if (tags.ContainsKey("highway")) - { - AddConnections(nodes, nodesInWay.ToArray(), tags); - } - } - - foreach(Region region in regionManager.GetAllRegions()) - WriteRegion(region, outputFolderPath); - } - - private static HashSet ReturnGraphNodes(XmlReader xmlReader) - { - HashSet retSet = new HashSet(); - while (xmlReader.ReadToFollowing("way")) - { - XmlReader wayReader = xmlReader.ReadSubtree(); - HashSet tmpList = new HashSet(); - bool addNodes = false; - while (wayReader.Read()) - { - if (wayReader.IsStartElement()) - { - if (wayReader.Name.Equals("nd")) - { - tmpList.Add(Convert.ToUInt64(wayReader.GetAttribute("ref"))); - } - else if (wayReader.Name.Equals("tag")) - { - if (wayReader.GetAttribute("v")!.Equals("highway")) - addNodes = true; - } - } - } - if(addNodes) - retSet.UnionWith(tmpList); - } - - return retSet; - } - - private static void AddConnections(Dictionary nodes, ulong[] nodeIds, - Dictionary tags) - { - string oneWayString = tags.ContainsKey("oneway") ? tags["oneway"] : "no"; - bool oneWay = false; - bool forward = true; - switch (oneWayString) - { - case "yes": - oneWay = true; - break; - case "-1": - forward = false; - break; - } - - for (int i = 0; i < nodeIds.Length - 1; i++) - { - if (oneWay) - { - nodes[nodeIds[i]].AddConnection(new Connection(nodes[nodeIds[i + 1]], tags)); - nodes[nodeIds[i + 1]].AddConnection(new Connection(nodes[nodeIds[i]], tags)); - } - else if (forward) - { - nodes[nodeIds[i]].AddConnection(new Connection(nodes[nodeIds[i + 1]], tags)); - } - else - { - nodes[nodeIds[i + 1]].AddConnection(new Connection(nodes[nodeIds[i]], tags)); - } - } - } - - private static void WriteRegion(Region region, string outputFolderPath) - { - if (!Directory.Exists(outputFolderPath)) - Directory.CreateDirectory(outputFolderPath); - string jsonString = JsonConvert.SerializeObject(region); - string fileName = region.regionHash.ToString(); - File.WriteAllText(Path.Combine(outputFolderPath, fileName), jsonString); - } -} \ No newline at end of file diff --git a/Importer/Node.cs b/Importer/Node.cs deleted file mode 100644 index 9a91eed..0000000 --- a/Importer/Node.cs +++ /dev/null @@ -1,21 +0,0 @@ -namespace OSMServer; - -public class Node : Coordinates -{ - private HashSet connections = new HashSet(); - - public Node(float lat, float lon) : base(lat, lon) - { - - } - - public void AddConnection(Connection connection) - { - this.connections.Add(connection); - } - - public Connection[] GetConnections() - { - return this.connections.ToArray(); - } -} \ No newline at end of file diff --git a/Importer/Region.cs b/Importer/Region.cs deleted file mode 100644 index baaf5fc..0000000 --- a/Importer/Region.cs +++ /dev/null @@ -1,33 +0,0 @@ -namespace OSMServer; - -public class Region -{ - private Dictionary nodesInRegion = new Dictionary(); - public uint regionHash; - - public Region(uint regionHash) - { - this.regionHash = this.regionHash; - } - - public Region(Coordinates regionCoordinates) - { - this.regionHash = regionCoordinates.GetRegionHash(); - } - - public Region(ulong nodeId, Node firstNode) - { - this.regionHash = firstNode.GetRegionHash(); - this.nodesInRegion.Add(nodeId, firstNode); - } - - public void AddNode(ulong nodeId, Node node) - { - this.nodesInRegion.Add(nodeId, node); - } - - public Node[] GetNodes() - { - return this.nodesInRegion.Values.ToArray(); - } -} \ No newline at end of file diff --git a/Importer/RegionManager.cs b/Importer/RegionManager.cs deleted file mode 100644 index 9af454d..0000000 --- a/Importer/RegionManager.cs +++ /dev/null @@ -1,28 +0,0 @@ -namespace OSMServer; - -public class RegionManager -{ - private Dictionary regions; - - public RegionManager() - { - this.regions = new Dictionary(); - } - - public Region GetRegion(Coordinates coordinates) - { - if(this.regions.ContainsKey(coordinates.GetRegionHash())) - return this.regions[coordinates.GetRegionHash()]; - else - { - Region newRegion = new Region(coordinates.GetRegionHash()); - this.regions.Add(newRegion.regionHash, newRegion); - return newRegion; - } - } - - public Region[] GetAllRegions() - { - return this.regions.Values.ToArray(); - } -} \ No newline at end of file diff --git a/OSMImporter/Coordinates.cs b/OSMImporter/Coordinates.cs new file mode 100644 index 0000000..6e465a7 --- /dev/null +++ b/OSMImporter/Coordinates.cs @@ -0,0 +1,50 @@ +using System.Globalization; + +namespace OSMImporter +{ + public class Coordinates + { + public float lat { get; } + public float lon { get; } + + public Coordinates(float lat, float lon) + { + this.lat = lat; + this.lon = lon; + } + + private const float decimalCoordsSave = 10000; + private const ulong offset = 10000000; + //Latitude maxChars = 7 + //Longitude maxChars = 8 + public ulong GetHash() + { + ulong latHash = Convert.ToUInt64((this.lat + 90) * decimalCoordsSave); + ulong lonHash = Convert.ToUInt64((this.lon + 180) * decimalCoordsSave); + return latHash * offset + lonHash; + } + + public ulong GetRegionHash() + { + float latRegion = this.lat - this.lat % Importer.regionSize; + float lonRegion = this.lon - this.lon % Importer.regionSize; + ulong latHash = Convert.ToUInt64((latRegion + 90) * decimalCoordsSave); + ulong lonHash = Convert.ToUInt64((lonRegion + 180) * decimalCoordsSave); + return latHash * offset + lonHash; + } + + public static Coordinates GetFromHash(ulong hash) + { + ulong latHash = (hash / offset) - 90; + ulong lonHash = (hash % offset) - 180; + float lat = Convert.ToSingle(latHash) / decimalCoordsSave; + float lon = Convert.ToSingle(lonHash) / decimalCoordsSave; + return new Coordinates(lat, lon); + } + + public override string ToString() + { + return string.Format("{0} {1}", this.lat.ToString(CultureInfo.InvariantCulture), this.lon.ToString(CultureInfo.InvariantCulture)); + } + } +} \ No newline at end of file diff --git a/OSMImporter/Importer.cs b/OSMImporter/Importer.cs new file mode 100644 index 0000000..f3c5f67 --- /dev/null +++ b/OSMImporter/Importer.cs @@ -0,0 +1,188 @@ +using System.Globalization; +using System.Text; +using System.Xml; + +namespace OSMImporter +{ + public static class Importer + { + + public const float regionSize = 0.01f; + private static readonly XmlReaderSettings readerSettings = new() + { + IgnoreWhitespace = true, + IgnoreComments = true + }; + + private static readonly NumberFormatInfo coordinateFormat = new NumberFormatInfo() + { + NumberDecimalSeparator = "." + }; + + public static void Split(string xmlFilePath, string outputFolderPath) + { + if (!File.Exists(xmlFilePath)) + throw new FileNotFoundException(); + FileStream xmlFileStream = File.OpenRead(xmlFilePath); + + Console.WriteLine("Reading ways once..."); + Dictionary nodes = ReturnNodeIdDictionary(XmlReader.Create(xmlFileStream, readerSettings)); + + xmlFileStream.Position = 0; + RegionManager regionManager = new RegionManager(); + + Console.WriteLine("Reading nodes..."); + LoadNodesIntoDictionary(ref nodes, XmlReader.Create(xmlFileStream, readerSettings), ref regionManager); + + xmlFileStream.Position = 0; + + Console.WriteLine("Reading ways twice..."); + CreateConnections(XmlReader.Create(xmlFileStream, readerSettings), ref nodes); + + Console.WriteLine("Writing..."); + + foreach(Region region in regionManager.GetAllRegions()) + WriteRegion(region, outputFolderPath); + } + + private static Dictionary ReturnNodeIdDictionary(XmlReader xmlReader) + { + Dictionary retSet = new Dictionary(); + while (xmlReader.ReadToFollowing("way")) + { + byte[] byteArray = Encoding.ASCII.GetBytes(xmlReader.ReadOuterXml()); + MemoryStream wayStream = new MemoryStream(byteArray); + XmlReader wayReader = XmlReader.Create(wayStream); + bool addNodes = false; + while (wayReader.ReadToFollowing("tag") && !addNodes) + { + if (wayReader.GetAttribute("v")!.Equals("highway")) + { + addNodes = true; + break; + } + } + + if (addNodes) + { + wayStream.Position = 0; + wayReader = XmlReader.Create(wayStream); + while (wayReader.ReadToFollowing("nd")) + { + retSet.TryAdd(Convert.ToUInt64(wayReader.GetAttribute("ref")!), null); + } + } + } + + xmlReader.Close(); + return retSet; + } + + private static void LoadNodesIntoDictionary(ref Dictionary nodes, XmlReader xmlReader, ref RegionManager regionManager) + { + while (xmlReader.ReadToFollowing("node")) + { + ulong id = Convert.ToUInt64(xmlReader.GetAttribute("id")); + if (nodes.ContainsKey(id)) + { + float lat = Convert.ToSingle(xmlReader.GetAttribute("lat")!, coordinateFormat); + float lon = Convert.ToSingle(xmlReader.GetAttribute("lon")!, coordinateFormat); + Node newNode = new Node(lat, lon); + nodes[id] = newNode; + regionManager.GetRegion(newNode).AddNode(id, newNode); + } + } + xmlReader.Close(); + } + + private static void CreateConnections(XmlReader xmlReader, ref Dictionary nodes) + { + while (xmlReader.ReadToFollowing("way")) + { + byte[] byteArray = Encoding.ASCII.GetBytes(xmlReader.ReadOuterXml()); + MemoryStream wayStream = new MemoryStream(byteArray); + XmlReader wayReader = XmlReader.Create(wayStream); + Dictionary tags = new Dictionary(); + + bool addNodes = false; + while (wayReader.ReadToFollowing("tag")) + { + if (wayReader.GetAttribute("v")!.Equals("highway")) + { + addNodes = true; + } + tags.Add(wayReader.GetAttribute("k")!, value: wayReader.GetAttribute("v")!); + } + + + if (addNodes) + { + HashSet nodesInWay = new HashSet(); + wayStream.Position = 0; + wayReader = XmlReader.Create(wayStream); + while (wayReader.ReadToFollowing("nd")) + { + nodesInWay.Add(Convert.ToUInt64(wayReader.GetAttribute("ref"))); + } + ConnectNodesOfWay(nodes, nodesInWay.ToArray(), tags); + } + } + xmlReader.Close(); + } + + private static void ConnectNodesOfWay(Dictionary nodes, ulong[] nodeIds, + Dictionary tags) + { + string oneWayString = tags.ContainsKey("oneway") ? tags["oneway"] : "no"; + bool oneWay = false; + bool forward = true; + switch (oneWayString) + { + case "yes": + oneWay = true; + break; + case "-1": + forward = false; + break; + } + + for (int i = 0; i < nodeIds.Length - 1; i++) + { + if (oneWay) + { + if(nodes.ContainsKey(nodeIds[i])) + nodes[nodeIds[i]]!.AddConnection(new Connection(nodeIds[i + 1], tags)); + if(nodes.ContainsKey(nodeIds[i + 1])) + nodes[nodeIds[i + 1]]!.AddConnection(new Connection(nodeIds[i], tags)); + } + else if (forward) + { + if(nodes.ContainsKey(nodeIds[i])) + nodes[nodeIds[i]]!.AddConnection(new Connection(nodeIds[i + 1], tags)); + } + else + { + if(nodes.ContainsKey(nodeIds[i + 1])) + nodes[nodeIds[i + 1]]!.AddConnection(new Connection(nodeIds[i], tags)); + } + } + } + + private static void WriteRegion(Region region, string outputFolderPath) + { + if (!Directory.Exists(outputFolderPath)) + Directory.CreateDirectory(outputFolderPath); + string fileName = region.regionHash.ToString(); + string fullPath = Path.Combine(outputFolderPath, fileName); + if (!File.Exists(fullPath)) + File.Create(fullPath).Close(); + FileStream fileStream = new FileStream(fullPath, FileMode.Append); + foreach (Node node in region.GetNodes()) + { + byte[] nodeByte = node.ToByte(); + fileStream.Write(nodeByte, 0, nodeByte.Length ); + } + fileStream.Close(); + } + } +} \ No newline at end of file diff --git a/OSMImporter/Node.cs b/OSMImporter/Node.cs new file mode 100644 index 0000000..b63ef74 --- /dev/null +++ b/OSMImporter/Node.cs @@ -0,0 +1,44 @@ +namespace OSMImporter +{ + public class Node : Coordinates + { + private readonly HashSet _connections = new HashSet(); + + public Node(float lat, float lon) : base(lat, lon) + { + + } + + public void AddConnection(Connection connection) + { + this._connections.Add(connection); + } + + public Connection[] GetConnections() + { + return this._connections.ToArray(); + } + + /* + * Returns byte array in order: + * Value 1: Latitude (4bytes) + * Value 2: Longitude (4bytes) + * Value 3: Connections-Count (1 byte) + * Value x: Connection (8bytes) //TODO + */ + public byte[] ToByte() + { + float[] coords = { this.lat, this.lon }; + byte[] ret = new byte[sizeof(float) * coords.Length + 1 + _connections.Count * sizeof(ulong)]; + Buffer.BlockCopy(coords, 0, ret, 0, sizeof(float) * coords.Length ); + byte countConnections = Convert.ToByte(_connections.Count); + Connection[] conns = this._connections.ToArray(); + for (int i = 0; i < conns.Length; i++) + { + byte[] connection = conns[i].ToByte(); + Buffer.BlockCopy(connection, 0, ret, sizeof(float) * coords.Length + 1 + i * connection.Length, connection.Length); + } + return ret; + } + } +} \ No newline at end of file diff --git a/Importer/Importer.csproj b/OSMImporter/OSMImporter.csproj similarity index 72% rename from Importer/Importer.csproj rename to OSMImporter/OSMImporter.csproj index 7a4eeea..b458d6d 100644 --- a/Importer/Importer.csproj +++ b/OSMImporter/OSMImporter.csproj @@ -7,8 +7,4 @@ OSMServer - - - - diff --git a/OSMImporter/Region.cs b/OSMImporter/Region.cs new file mode 100644 index 0000000..66bd70d --- /dev/null +++ b/OSMImporter/Region.cs @@ -0,0 +1,29 @@ +namespace OSMImporter +{ + public class Region + { + private readonly Dictionary _nodesInRegion = new Dictionary(); + public ulong regionHash { get; } + + public Region(Coordinates regionCoordinates) + { + this.regionHash = regionCoordinates.GetRegionHash(); + } + + public Region(ulong nodeId, Node firstNode) + { + this.regionHash = firstNode.GetRegionHash(); + this._nodesInRegion.Add(nodeId, value: firstNode); + } + + public void AddNode(ulong nodeId, Node node) + { + this._nodesInRegion.Add(nodeId, value: node); + } + + public Node[] GetNodes() + { + return this._nodesInRegion.Values.ToArray(); + } + } +} \ No newline at end of file diff --git a/OSMImporter/RegionManager.cs b/OSMImporter/RegionManager.cs new file mode 100644 index 0000000..a80974e --- /dev/null +++ b/OSMImporter/RegionManager.cs @@ -0,0 +1,29 @@ +namespace OSMImporter +{ + public class RegionManager + { + private readonly Dictionary _regions; + + public RegionManager() + { + this._regions = new Dictionary(); + } + + public Region GetRegion(Coordinates coordinates) + { + if(this._regions.ContainsKey(coordinates.GetRegionHash())) + return this._regions[coordinates.GetRegionHash()]; + else + { + Region newRegion = new Region(coordinates); + this._regions.Add(newRegion.regionHash, value: newRegion); + return newRegion; + } + } + + public Region[] GetAllRegions() + { + return this._regions.Values.ToArray(); + } + } +} \ No newline at end of file diff --git a/OSMServer.sln b/OSMServer.sln index 7393a17..9d85930 100644 --- a/OSMServer.sln +++ b/OSMServer.sln @@ -1,6 +1,8 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSMServer", "OSMServer\OSMServer.csproj", "{BE5C111D-AD61-433A-AE7E-F02B78551347}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OSMImporter", "OSMImporter\OSMImporter.csproj", "{BE5C111D-AD61-433A-AE7E-F02B78551347}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csproj", "{7E025EFC-B889-4B57-A03F-EF294CFFBCD6}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -12,5 +14,9 @@ Global {BE5C111D-AD61-433A-AE7E-F02B78551347}.Debug|Any CPU.Build.0 = Debug|Any CPU {BE5C111D-AD61-433A-AE7E-F02B78551347}.Release|Any CPU.ActiveCfg = Release|Any CPU {BE5C111D-AD61-433A-AE7E-F02B78551347}.Release|Any CPU.Build.0 = Release|Any CPU + {7E025EFC-B889-4B57-A03F-EF294CFFBCD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {7E025EFC-B889-4B57-A03F-EF294CFFBCD6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {7E025EFC-B889-4B57-A03F-EF294CFFBCD6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {7E025EFC-B889-4B57-A03F-EF294CFFBCD6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal diff --git a/OSMServer.sln.DotSettings b/OSMServer.sln.DotSettings new file mode 100644 index 0000000..cdd044d --- /dev/null +++ b/OSMServer.sln.DotSettings @@ -0,0 +1,4 @@ + + True + True + True \ No newline at end of file diff --git a/OSMServer.sln.DotSettings.user b/OSMServer.sln.DotSettings.user index 8cf0f80..a3cdf0a 100644 --- a/OSMServer.sln.DotSettings.user +++ b/OSMServer.sln.DotSettings.user @@ -1,2 +1,5 @@  - True \ No newline at end of file + True + True + True + True \ No newline at end of file diff --git a/Server/Server.cs b/Server/Server.cs index f657f4d..5ead8ce 100644 --- a/Server/Server.cs +++ b/Server/Server.cs @@ -1,9 +1,13 @@ -namespace OSMServer; +using OSMImporter; + +namespace Server; public class Server { - public Server() + + + public static void Main(string[] args) { - Importer.Split("/home/glax/Downloads/bayern-latest.osm.bz2", "/home/glax/Downloads/split"); + Importer.Split("/home/glax/Downloads/oberbayern-latest.osm", "/home/glax/Downloads/split"); } } \ No newline at end of file diff --git a/Server/Server.csproj b/Server/Server.csproj index 2b14c81..8952f42 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -7,4 +7,8 @@ enable + + + +