Search in sources :

Example 1 with Edge

use of com.revolsys.geometry.planargraph.Edge in project com.revolsys.open by revolsys.

the class LineMergeGraph method addEdge.

/**
 * Adds an Edge, DirectedEdges, and Nodes for the given LineString representation
 * of an edge.
 * Empty lines or lines with all coordinates equal are not added.
 *
 * @param line the linestring to add to the graph
 */
public void addEdge(final LineString line) {
    if (line.isEmpty()) {
        return;
    }
    final LineString points = line.removeDuplicatePoints();
    final int vertexCount = points.getVertexCount();
    if (vertexCount > 1) {
        final Point fromPoint = points.getPoint(0);
        final Point toPoint = points.getPoint(vertexCount - 1);
        final Node startNode = getNode(fromPoint);
        final Node endNode = getNode(toPoint);
        final DirectedEdge directedEdge0 = new LineMergeDirectedEdge(startNode, endNode, points.getPoint(1).newPoint(), true);
        final DirectedEdge directedEdge1 = new LineMergeDirectedEdge(endNode, startNode, points.getPoint(vertexCount - 2).newPoint(), false);
        final Edge edge = new LineMergeEdge(line);
        edge.setDirectedEdges(directedEdge0, directedEdge1);
        add(edge);
    }
}
Also used : DirectedEdge(com.revolsys.geometry.planargraph.DirectedEdge) LineString(com.revolsys.geometry.model.LineString) Node(com.revolsys.geometry.planargraph.Node) Point(com.revolsys.geometry.model.Point) DirectedEdge(com.revolsys.geometry.planargraph.DirectedEdge) Edge(com.revolsys.geometry.planargraph.Edge) Point(com.revolsys.geometry.model.Point)

Example 2 with Edge

use of com.revolsys.geometry.planargraph.Edge in project com.revolsys.open by revolsys.

the class PolygonizeGraph method addEdge.

/**
 * Add a {@link LineString} forming an edge of the polygon graph.
 * @param line the line to add
 */
public void addEdge(final LineString line) {
    final LineString cleanLine = line.removeDuplicatePoints();
    if (cleanLine.isEmpty()) {
        return;
    }
    if (cleanLine.getVertexCount() < 2) {
        return;
    }
    final Point startPt = cleanLine.getVertex(0).newPoint2D();
    final Point endPt = cleanLine.getToVertex(0).newPoint2D();
    final Node nStart = getNode(startPt);
    final Node nEnd = getNode(endPt);
    final DirectedEdge de0 = new PolygonizeDirectedEdge(nStart, nEnd, cleanLine.getVertex(1).newPoint2D(), true);
    final DirectedEdge de1 = new PolygonizeDirectedEdge(nEnd, nStart, cleanLine.getVertex(-2).newPoint2D(), false);
    final Edge edge = new PolygonizeEdge(line);
    edge.setDirectedEdges(de0, de1);
    add(edge);
}
Also used : DirectedEdge(com.revolsys.geometry.planargraph.DirectedEdge) LineString(com.revolsys.geometry.model.LineString) Node(com.revolsys.geometry.planargraph.Node) Point(com.revolsys.geometry.model.Point) Edge(com.revolsys.geometry.planargraph.Edge) DirectedEdge(com.revolsys.geometry.planargraph.DirectedEdge)

Example 3 with Edge

use of com.revolsys.geometry.planargraph.Edge in project com.revolsys.open by revolsys.

the class ConnectedSubgraphFinder method getConnectedSubgraphs.

public List getConnectedSubgraphs() {
    final List subgraphs = new ArrayList();
    GraphComponent.setVisited(this.graph.nodeIterator(), false);
    for (final Iterator i = this.graph.edgeIterator(); i.hasNext(); ) {
        final Edge e = (Edge) i.next();
        final Node node = e.getDirEdge(0).getFromNode();
        if (!node.isVisited()) {
            subgraphs.add(findSubgraph(node));
        }
    }
    return subgraphs;
}
Also used : Node(com.revolsys.geometry.planargraph.Node) ArrayList(java.util.ArrayList) Iterator(java.util.Iterator) List(java.util.List) ArrayList(java.util.ArrayList) DirectedEdge(com.revolsys.geometry.planargraph.DirectedEdge) Edge(com.revolsys.geometry.planargraph.Edge)

Aggregations

DirectedEdge (com.revolsys.geometry.planargraph.DirectedEdge)3 Edge (com.revolsys.geometry.planargraph.Edge)3 Node (com.revolsys.geometry.planargraph.Node)3 LineString (com.revolsys.geometry.model.LineString)2 Point (com.revolsys.geometry.model.Point)2 ArrayList (java.util.ArrayList)1 Iterator (java.util.Iterator)1 List (java.util.List)1