Package org.geotools.graph.structure

Examples of org.geotools.graph.structure.Edge


  public List getEdges(Node other) {
    //must explictley check that the edge has node other, and one node this,
    // just checking other is not good enough because of loops
    ArrayList edges = new ArrayList()
     for (int i = 0; i < m_edges.size(); i++) {
      Edge e = (Edge)m_edges.get(i);
      if (
        (e.getNodeA().equals(this) && e.getNodeB().equals(other)) ||
        (e.getNodeA().equals(other) && e.getNodeB().equals(this))
      ) edges.add(e);
    }
    return(edges);
  }
View Full Code Here


   * @see org.geotools.graph.structure.Graphable#getRelated()
   */
  public Iterator getRelated() {
    ArrayList related = new ArrayList(m_edges.size());
    for (int i = 0; i < m_edges.size(); i++) {
      Edge e = (Edge)m_edges.get(i);
      related.add(e.getOtherNode(this));
    }
    return(related.iterator());
  }
View Full Code Here

    else {
        ls = (LineString) obj;
    }
   
    //parent class expects a line segment
    Edge e = (Edge)super.add(
      new LineSegment(
        ls.getCoordinateN(0), ls.getCoordinateN(ls.getNumPoints()-1)
      )
    );
    //check if the LineSegment has been changed
    if (useTolerance()) {
      LineSegment lineSegment = (LineSegment) e.getObject();
      Coordinate[] coordinates = ls.getCoordinates();
      List<Coordinate> coordinateList = Arrays.asList(coordinates);
      // list from asList does not support add(index,object), must make an arraylist
      List<Coordinate> nCoordinateList = new ArrayList<Coordinate>(coordinateList);
      if (!ls.getCoordinateN(0).equals(lineSegment.p0)) {
        nCoordinateList.add(0, lineSegment.p0);
      } else if (!ls.getCoordinateN(ls.getNumPoints()-1).equals(lineSegment.p1)){
        nCoordinateList.add(lineSegment.p1);
      }
      Coordinate[] newCoordinates = nCoordinateList.toArray(new Coordinate[nCoordinateList.size()]);
      ls = gf.createLineString(newCoordinates);
    }
    //over write object to be the linestring
    e.setObject(ls);
    return(e);
  }
View Full Code Here

     * Returns the next related node.
     *
     * @see Iterator#next()
     */
    public Object next() {
      Edge e = m_edges[m_index++];
      return(e.getNodeA().equals(m_node) ? e.getNodeB() : e.getNodeA());
    }
View Full Code Here

   * node == this is searched for.
   *
   * @see Node#remove(Edge)
   */
  public Edge getEdge(Node other) {
    Edge e = getInEdge((DirectedNode)other);
    if (e != null) return(e);
    return(getOutEdge((DirectedNode)other));
  }
View Full Code Here

   */
  public Iterator getRelated() {
    ArrayList adj = new ArrayList();
   
    for (Iterator itr = m_nodeA.getEdges().iterator(); itr.hasNext();) {
      Edge e = (Edge)itr.next();
      switch(e.compareNodes(this)) {
        case EQUAL_NODE_ORIENTATION: //same node orientation
          if (e.equals(this)) continue;
        case OPPOSITE_NODE_ORIENTATION: //opposite node orientation
        case UNEQUAL_NODE_ORIENTATION: //different
          adj.add(e);   
      }
    }
   
    for (Iterator itr = m_nodeB.getEdges().iterator(); itr.hasNext();) {
      Edge e = (Edge)itr.next();
      switch(e.compareNodes(this)) {
        case EQUAL_NODE_ORIENTATION:
        case OPPOSITE_NODE_ORIENTATION:
          continue; //edges already added from other node
        case UNEQUAL_NODE_ORIENTATION:
          adj.add(e);   
View Full Code Here

       
        //calculate the cost of going through the node
        if ( nweighter != null ) {
            double ncost = 0d;
            if(currdn.parent != null) {
                Edge e1 = currdn.parent.node.getEdge(currdn.node);
                Edge e2 = currdn.node.getEdge(related);
                ncost = nweighter.getWeight(currdn.node,e1,e2);
            }
        }
        //if cost less than current cost of related node, update
        if (cost < reldn.cost) {
View Full Code Here

    Node n1 = builder.buildNode();
    builder.addNode(n1);
    n1.setID(0);
   
    Node n2 = null;
    Edge e = null;
    Node first = n1;
   
    for (int i = 1; i < nnodes; i++) {
      n2 = builder.buildNode();
      builder.addNode(n2);
      n2.setID(i);
     
      e = builder.buildEdge(n1,n2);
      builder.addEdge(e);
      e.setID(i-1);
   
      n1 = n2;
    }
   
    return(new Node[]{first,n1});
View Full Code Here

    Node[] ends = new Node[2];
     
    for (int i = 0; i < nnodes; i++) {
      nodes[i] = new String(String.valueOf(i))
      if (i > 0) {
        Edge e = (Edge)gen.add(new String[]{nodes[i-1], nodes[i]});
        if (i == 1) ends[0] = e.getNodeA();
        if (i == nnodes-1) ends[1] = e.getNodeB();
      }
    }
   
    return(ends);
  }
View Full Code Here

    
    builder.addNode(n1);
    node2id.put(n1, new Integer(0));
   
    OptNode n2 = null;
    Edge e = null;
    OptNode first = n1;
   
    for (int i = 1; i < nnodes; i++) {
      n2 = (OptNode)builder.buildNode();
      if (i < nnodes-1) n2.setDegree(2);
View Full Code Here

TOP

Related Classes of org.geotools.graph.structure.Edge

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.