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);
}
}
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);
}
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;
}
Aggregations