public RoutingNetwork(MemoryMap map, RoutingNetworkProfile profile, float maxEdgeDistance = 5000f) { this._maxEdgeDistance = maxEdgeDistance; if (profile == null) { this._graph = new GeometricGraph(map, 1); this._edgeData = (ArrayBase <uint>) new Array <uint>(map, (long)this._edgeDataSize * this._graph.EdgeCount); } else { this._graph = new GeometricGraph(map, profile.GeometricGraphProfile, 1); this._edgeData = (ArrayBase <uint>) new Array <uint>(map, (long)this._edgeDataSize * this._graph.EdgeCount, profile.EdgeDataProfile); } }
public static RoutingNetwork Deserialize(Stream stream, RoutingNetworkProfile profile) { int num1 = stream.ReadByte(); if (num1 > 2) { throw new Exception(string.Format("Cannot deserialize routing network: Invalid version #: {0}, upgrade OsmSharp.Routing.", (object)num1)); } long position1 = stream.Position; long position2 = stream.Position; float num2 = 5000f; if (num1 == 2) { byte[] buffer = new byte[4]; stream.Read(buffer, 0, 4); num2 = BitConverter.ToSingle(buffer, 0); } GeometricGraph graph = GeometricGraph.Deserialize(stream, profile == null ? (GeometricGraphProfile)null : profile.GeometricGraphProfile); long num3 = stream.Position - position1; long edgeCount = graph.EdgeCount; int num4 = 1; ArrayBase <uint> arrayBase; long num5; if (profile == null) { arrayBase = (ArrayBase <uint>) new MemoryArray <uint>(edgeCount * (long)num4); arrayBase.CopyFrom(stream); num5 = num3 + edgeCount * (long)num4 * 4L; } else { long position3 = stream.Position; arrayBase = (ArrayBase <uint>) new Array <uint>(((MemoryMap) new MemoryMapStream((Stream) new CappedStream(stream, position3, edgeCount * (long)num4 * 4L))).CreateUInt32(edgeCount * (long)num4), profile.EdgeDataProfile); num5 = num3 + edgeCount * (long)num4 * 4L; } stream.Seek(position2 + num5, SeekOrigin.Begin); ArrayBase <uint> edgeData = arrayBase; double num6 = (double)num2; return(new RoutingNetwork(graph, edgeData, (float)num6)); }