Class PolygonGraphGenerator

  • All Implemented Interfaces:
    GraphGenerator

    public class PolygonGraphGenerator
    extends Object
    implements GraphGenerator
    An implementation of GraphGenerator used to build graphs from a set of polygons.

    This graph generator takes Polygon objects as input when constructing a graph. The following code constructs a graph from a set of polygons.

            
      //get some polygons
      Polygon[] polygons = ...
    
      //determine what the relationship will be
      PolygonGraphGenerator rel = new PolygonGraphGenerator.PolygonRelationship() {
    
         public boolean related(Polygon p1, Polygon p2) {
          return p1.intersects(p2);
         }
    
         public boolean equal(Polygon p1, Polygon p2) {
            return p1.equals(p2);
         }
      }
      //create the generator
      PolygonGraphGenerator gg = new PolygonGraphGenerator(new BasicGraphBuilder(),rel);
    
      //start building
      for (int i = 0; i < polygons.length; i++) {
        gg.add(polygons[i]);
      }
            
     
    For each distinct polygon added to the graph, a node is created. If two polygons are considered equal, only a single node is created. If two polygons are considered related, the associated nodes share an edge. Equality and relationship is determined by PolygonGraphGenerator.PolygonRelationship interface. An instance of this interface is passed to the generator at construction.
    Author:
    Justin Deoliveira, The Open Planning Project
    • Method Detail

      • add

        public Graphable add​(Object obj)
        Description copied from interface: GraphGenerator
        Adds an object to the graph.
        Specified by:
        add in interface GraphGenerator
        Parameters:
        obj - The object to be modelled in the graph.
        Returns:
        The graph component used to model the object.
      • get

        public Graphable get​(Object obj)
        Description copied from interface: GraphGenerator
        Retrieves a component of the graph.
        Specified by:
        get in interface GraphGenerator
        Parameters:
        obj - The object modelled by the component.
        Returns:
        The graph component used to model the object.
      • remove

        public Graphable remove​(Object obj)
        Description copied from interface: GraphGenerator
        Removes an object from the graph.
        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.
      • getGraph

        public Graph getGraph()
        Description copied from interface: GraphGenerator
        Returns the graph being generated.
        Specified by:
        getGraph in interface GraphGenerator
        Returns:
        The generated graph.
      • relate

        protected void relate​(Node node)