/// <summary> /// Adds a new vertex. /// </summary> /// <param name="latitude"></param> /// <param name="longitude"></param> /// <returns></returns> public override uint AddVertex(float latitude, float longitude) { uint vertex = _graph.AddVertex(latitude, longitude); if (_vertexIndex != null) { _vertexIndex.Add(new GeoCoordinate(latitude, longitude), vertex); } return(vertex); }
/// <summary> /// Copies all data from the given graph. /// </summary> /// <typeparam name="TEdgeData"></typeparam> /// <param name="copyTo"></param> /// <param name="copyFrom"></param> public static void CopyFrom <TEdgeData>(this GraphBase <TEdgeData> copyTo, GraphBase <TEdgeData> copyFrom) where TEdgeData : struct, IGraphEdgeData { float latitude, longitude; for (uint vertex = 1; vertex <= copyFrom.VertexCount; vertex++) { copyFrom.GetVertex(vertex, out latitude, out longitude); uint newVertex = copyTo.AddVertex(latitude, longitude); if (newVertex != vertex) { throw new Exception("Graph should be empty when copy new data to it."); } } for (uint vertex = 1; vertex <= copyFrom.VertexCount; vertex++) { var edges = new List <Edge <TEdgeData> >(copyFrom.GetEdges(vertex)); foreach (var edge in edges) { copyTo.AddEdge(vertex, edge.Neighbour, edge.EdgeData, edge.Intermediates); } } }
/// <summary> /// Adds a new vertex. /// </summary> /// <param name="latitude"></param> /// <param name="longitude"></param> /// <returns></returns> public override uint AddVertex(float latitude, float longitude) { var vertex = _graph.AddVertex(latitude, longitude); return(vertex); }