Ejemplo n.º 1
0
 /// <summary>
 /// Adds an Edge, DirectedEdges, and Nodes for the given LineString representation
 /// of an edge. 
 /// </summary>
 public virtual void AddEdge(LineString lineString)
 {
     if (lineString.IsEmpty)
         return;
     IList<Coordinate> coordinates = CoordinateArrays.RemoveRepeatedPoints(lineString.Coordinates);
     Coordinate startCoordinate = coordinates[0];
     Coordinate endCoordinate = coordinates[coordinates.Count - 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.Count - 2], false);
     Edge edge = new LineMergeEdge(lineString);
     edge.SetDirectedEdges(directedEdge0, directedEdge1);
     Add(edge);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="start"></param>
 /// <returns></returns>
 private EdgeString BuildEdgeStringStartingWith(LineMergeDirectedEdge start) 
 {    
     EdgeString edgeString = new EdgeString(factory);
     LineMergeDirectedEdge current = start;
     do 
     {
         edgeString.Add(current);
         current.Edge.IsMarked = true;
         current = current.Next;      
     }
     while (current != null && current != start);
     return edgeString;
 }
Ejemplo n.º 3
0
 /// <summary>
 /// Adds a directed edge which is known to form part of this line.
 /// </summary>
 /// <param name="directedEdge"></param>
 public virtual void Add(LineMergeDirectedEdge directedEdge)
 {
     directedEdges.Add(directedEdge);
 }