/// <summary> /// Adds an Edge, DirectedEdges, and Nodes for the given LineString representation /// of an edge. /// </summary> public void AddEdge(ILineString lineString) { if (lineString.IsEmpty) return; ICoordinate[] coordinates = CoordinateArrays.RemoveRepeatedPoints(lineString.Coordinates); ICoordinate startCoordinate = coordinates[0]; ICoordinate endCoordinate = coordinates[coordinates.Length - 1]; Node startNode = GetNode(startCoordinate); Node endNode = GetNode(endCoordinate); DirectedEdge directedEdge0 = new LineMergeDirectedEdge(startNode, endNode, coordinates[1], true); DirectedEdge directedEdge1 = new LineMergeDirectedEdge(endNode, startNode, coordinates[coordinates.Length - 2], false); Edge edge = new LineMergeEdge(lineString); edge.SetDirectedEdges(directedEdge0, directedEdge1); Add(edge); }