Class OptLineGraphGenerator

  • All Implemented Interfaces:
    GraphGenerator, LineGraphGenerator
    Direct Known Subclasses:
    OptDirectedLineGraphGenerator

    public class OptLineGraphGenerator
    extends Object
    implements LineGraphGenerator
    An implementation of GraphGenerator used to generate an optimized 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.

    Edges created by the generator are of type OptBasicEdge.
    Nodes created by the generator are of type OptXYNode.

    Since building optimized graphs requires knowing the degree of nodes before creating them, the physical construction of the graph is delayed until a call to generate() is made. No component is created with a call to add(Object), only information about the object is recorded.
    Author:
    Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net
    See Also:
    OptEdge, OptXYNode
    • Constructor Detail

      • OptLineGraphGenerator

        public OptLineGraphGenerator()
        Constructs a new OptLineGraphGenerator.
    • Method Detail

      • add

        public Graphable add​(Object obj)
        Adds a line to the graph. Note that this method returns null since actual building of the graph components is delayed until generate() is called.
        Specified by:
        add in interface GraphGenerator
        Parameters:
        obj - A LineSegment object.
        Returns:
        null because the actual building of the graph components is delayed until generate() is called.
      • get

        public Graphable get​(Object obj)
        Returns the edge which represents a line. This method must be called after the call to generate(). 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)
        Unsupported operation.
        Specified by:
        remove in interface GraphGenerator
        Parameters:
        obj - The object modelled by the component.
        Returns:
        The graph component used to model the object.
      • generate

        public void generate()
        Performs the actual generation of the graph.
      • getNodeMap

        public Map getNodeMap()
        Returns the coordinate to node map. Note that before the call to generate the map does not contain any nodes.
        Returns:
        Coordinate to node map.
      • getLines

        protected List<LineSegment> getLines()
        Returns the lines added to the graph.
        Returns:
        A list of LineSegment objects.
      • generateNodes

        protected void generateNodes()
      • generateEdges

        protected void generateEdges()
      • generateEdge

        protected Edge generateEdge​(LineSegment line)