コード例 #1
0
 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);
     }
 }
コード例 #2
0
        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));
        }