package com.revolsys.geometry.graph.linemerge; import com.revolsys.collection.list.Lists; import com.revolsys.geometry.graph.Edge; import com.revolsys.geometry.graph.Graph; import com.revolsys.geometry.graph.Node; import com.revolsys.geometry.model.LineString; import com.revolsys.geometry.model.Point; public class LineStringsGraph extends Graph<LineString> { public void addEdge(LineString line) { if (!line.isEmpty()) { line = line.removeDuplicatePoints(); final int vertexCount = line.getVertexCount(); if (vertexCount > 1) { addEdge(line, line); } } } public void removeEdge(final LineString line) { final Point point = line.getFromPoint(); final Node<LineString> node = findNode(point); if (node != null) { for (final Edge<LineString> edge : Lists.toArray(node.getOutEdges())) { final LineString edgeLine = edge.getLine(); if (line.equals(edgeLine)) { remove(edge); } } } } public void removeEdges(final Iterable<LineString> lines) { for (final LineString line : lines) { removeEdge(line); } } }