/// <summary> /// Deserializes a graph router data source from the given stream. /// </summary> /// <param name="stream"></param> /// <param name="edgeDataSize"></param> /// <param name="mapFrom"></param> /// <param name="mapTo"></param> /// <returns></returns> public new static RouterDataSource <TEdgeData> Deserialize(System.IO.Stream stream, int edgeDataSize, MappedHugeArray <TEdgeData, uint> .MapFrom mapFrom, MappedHugeArray <TEdgeData, uint> .MapTo mapTo, bool copy) { // read size of graph and start location of tags. var longBytes = new byte[8]; stream.Read(longBytes, 0, 8); var position = BitConverter.ToInt64(longBytes, 0); // deserialize graph. var graph = GraphBase <TEdgeData> .Deserialize(new CappedStream(stream, 8, position - 8), edgeDataSize, mapFrom, mapTo, copy); // deserialize tags. stream.Seek(position, System.IO.SeekOrigin.Begin); var tagsIndex = global::OsmSharp.Collections.Tags.Index.TagsIndex.Deserialize( new LimitedStream(stream)); return(new RouterDataSource <TEdgeData>(graph, tagsIndex)); }