Class BasicLineGraphGenerator

  • All Implemented Interfaces:
    GraphGenerator, LineGraphGenerator
    Direct Known Subclasses:
    BasicDirectedLineGraphGenerator, LineStringGraphGenerator

    public class BasicLineGraphGenerator
    extends Object
    implements LineGraphGenerator
    An implementation of GraphGenerator used to generate a graph representing a line network. Graphs are generated by supplying the generator with objects of type LineSegment via the add(Object) method.

    For each line segment added, an edge in the graph is created. The builder records the end coordinates of each line added, and maintains a map of coordinates to nodes, creating nodes when neccessary.

    If a tolerance distance is set, the end coordinates matched to nodes with a tolerance distance (using a spatial index).

    Edges created by the generator are of type BasicEdge and contain an object of type LineSegment.
    Nodes created by the generator are of type BasicXYNode and contain an object of type Coordinate.
    Author:
    Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net, Anders Bakkevold, Bouvet AS, bakkedev@gmail.com
    See Also:
    BasicXYNode, BasicEdge, LineSegment, Coordinate
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Graphable add​(Object obj)
      Adds a line to the graph.
      protected LineSegment alterLine​(LineSegment line, Node n1, Node n2)  
      Graphable get​(Object obj)
      Returns the edge which represents a line.
      Edge getEdge​(Coordinate c1, Coordinate c2)
      Retrieve edge between the two coordinates.
      Graph getGraph()
      Returns the graph being generated.
      GraphBuilder getGraphBuilder()
      Returns the underlying builder.
      Node getNode​(Coordinate c)
      Look up a Node for the provided coordinate.
      Map getNodeMap()
      Returns the coordinate to node map used to build nodes representing line endpoint coordinates.
      Graphable remove​(Object obj)
      Removes the edge from the graph that represents a line.
      void setGraphBuilder​(GraphBuilder builder)
      Sets the underlying builder used to physically construct the graph.
      protected void setObject​(Edge e, Object obj)  
      protected void setObject​(Node n, Object obj)  
      protected boolean useTolerance()  
      • Methods inherited from class Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • BasicLineGraphGenerator

        public BasicLineGraphGenerator()
        Constructs a new BasicLineGraphGenerator.

        Tolerance is 0.0 as default, meaning coordinates must be equal for lines to connect at a node.

      • BasicLineGraphGenerator

        public BasicLineGraphGenerator​(double tolerance)
        Constructs a new BasicLineGraphGenerator.

        If two coordinates are considered equal (and should be snapped to the same Node), the distance between them must be less than the tolerance value.

        Parameters:
        tolerance - threshold distance value for coordinates to be considered equal
    • Method Detail

      • alterLine

        protected LineSegment alterLine​(LineSegment line,
                                        Node n1,
                                        Node n2)
      • get

        public Graphable get​(Object obj)
        Returns the edge which represents a line. Note that if the exact same line has been added to the graph multiple times, then only one of the edges that represents it will be returned. It is undefined which edge will be returned.
        Specified by:
        get in interface GraphGenerator
        Parameters:
        obj - An instance of LineSegment.
        Returns:
        Edge that represents the line.
        See Also:
        GraphGenerator.get(Object)
      • remove

        public Graphable remove​(Object obj)
        Removes the edge from the graph that represents a line.
        Specified by:
        remove in interface GraphGenerator
        Parameters:
        obj - The object modelled by the component.
        Returns:
        Edge that represents the line.
        See Also:
        GraphGenerator.remove(Object)
      • getNodeMap

        public Map getNodeMap()
        Returns the coordinate to node map used to build nodes representing line endpoint coordinates.
        Returns:
        coordinate to node map.
      • setObject

        protected void setObject​(Edge e,
                                 Object obj)
      • setObject

        protected void setObject​(Node n,
                                 Object obj)
      • useTolerance

        protected boolean useTolerance()