Class OptLineGraphGenerator

Object
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:
  • Constructor Details

    • OptLineGraphGenerator

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

    • 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:
    • 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.
    • setGraphBuilder

      public void setGraphBuilder(GraphBuilder builder)
      Description copied from interface: GraphGenerator
      Sets the underlying builder used to physically construct the graph.
      Specified by:
      setGraphBuilder in interface GraphGenerator
      Parameters:
      builder - The new underlying GraphBuilder.
      See Also:
    • getGraphBuilder

      public GraphBuilder getGraphBuilder()
      Description copied from interface: GraphGenerator
      Returns the underlying builder.
      Specified by:
      getGraphBuilder in interface GraphGenerator
      Returns:
      The underyling builder.
      See Also:
    • getGraph

      public Graph getGraph()
      Description copied from interface: GraphGenerator
      Returns the graph being generated.
      Specified by:
      getGraph in interface GraphGenerator
      Returns:
      The generated graph.
      See Also:
    • 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)
    • getNode

      public Node getNode(Coordinate c)
      Description copied from interface: LineGraphGenerator
      Look up a Node for the provided coordinate.
      Specified by:
      getNode in interface LineGraphGenerator
      Returns:
      Node
    • getEdge

      public Edge getEdge(Coordinate c1, Coordinate c2)
      Description copied from interface: LineGraphGenerator
      Retrieve edge between the two coordinates.
      Specified by:
      getEdge in interface LineGraphGenerator
      Returns:
      Edge