/** * Creates an intersection finder using a {@link RobustLineIntersector}. */ public SegmentIntersectionDetector() { this(new RobustLineIntersector()); }
public static Geometry segmentIntersection(Geometry g1, Geometry g2) { Coordinate[] pt1 = g1.getCoordinates(); Coordinate[] pt2 = g2.getCoordinates(); RobustLineIntersector ri = new RobustLineIntersector(); ri.computeIntersection(pt1[0], pt1[1], pt2[0], pt2[1]); switch (ri.getIntersectionNum()) { case 0: // no intersection => return empty point return g1.getFactory().createPoint((Coordinate) null); case 1: // return point return g1.getFactory().createPoint(ri.getIntersection(0)); case 2: // return line return g1.getFactory().createLineString( new Coordinate[] { ri.getIntersection(0), ri.getIntersection(1) }); } return null; }
public static boolean segmentIntersects(Geometry g1, Geometry g2) { Coordinate[] pt1 = g1.getCoordinates(); Coordinate[] pt2 = g2.getCoordinates(); RobustLineIntersector ri = new RobustLineIntersector(); ri.computeIntersection(pt1[0], pt1[1], pt2[0], pt2[1]); return ri.hasIntersection(); }
Coordinate o2 = csOrig.getCoordinate(1); int origIdx = 0; RobustLineIntersector intersector = new RobustLineIntersector(); int matched = 0; boolean flipped = false; intersector.computeIntersection(c1, c2, o1, o2); int intersectionNum = intersector.getIntersectionNum();
public void testCollinear1() { RobustLineIntersector i = new RobustLineIntersector(); Coordinate p1 = new Coordinate(10, 10); Coordinate p2 = new Coordinate(20, 10); Coordinate q1 = new Coordinate(22, 10); Coordinate q2 = new Coordinate(30, 10); i.computeIntersection(p1, p2, q1, q2); assertEquals(RobustLineIntersector.NO_INTERSECTION, i.getIntersectionNum()); assertTrue(!i.isProper()); assertTrue(!i.hasIntersection()); }
public void testEndpointIntersection2() { i.computeIntersection(new Coordinate(190, 50), new Coordinate(120, 100), new Coordinate(120, 100), new Coordinate(50, 150)); assertTrue(i.hasIntersection()); assertEquals(1, i.getIntersectionNum()); assertEquals(new Coordinate(120, 100), i.getIntersection(1)); }
public void testEndpointIntersection() { i.computeIntersection(new Coordinate(100, 100), new Coordinate(10, 100), new Coordinate(100, 10), new Coordinate(100, 100)); assertTrue(i.hasIntersection()); assertEquals(1, i.getIntersectionNum()); }
public void testCollinear2() { RobustLineIntersector i = new RobustLineIntersector(); Coordinate p1 = new Coordinate(10, 10); Coordinate p2 = new Coordinate(20, 10); Coordinate q1 = new Coordinate(20, 10); Coordinate q2 = new Coordinate(30, 10); i.computeIntersection(p1, p2, q1, q2); assertEquals(RobustLineIntersector.POINT_INTERSECTION, i.getIntersectionNum()); assertTrue(!i.isProper()); assertTrue(i.hasIntersection()); }
public void testOverlap() { i.computeIntersection(new Coordinate(180, 200), new Coordinate(160, 180), new Coordinate(220, 240), new Coordinate(140, 160)); assertTrue(i.hasIntersection()); assertEquals(2, i.getIntersectionNum()); }
public void testCollinear3() { RobustLineIntersector i = new RobustLineIntersector(); Coordinate p1 = new Coordinate(10, 10); Coordinate p2 = new Coordinate(20, 10); Coordinate q1 = new Coordinate(15, 10); Coordinate q2 = new Coordinate(30, 10); i.computeIntersection(p1, p2, q1, q2); assertEquals(RobustLineIntersector.COLLINEAR_INTERSECTION, i.getIntersectionNum()); assertTrue(!i.isProper()); assertTrue(i.hasIntersection()); }
public IteratedNoder(PrecisionModel pm) { li = new RobustLineIntersector(); this.pm = pm; li.setPrecisionModel(pm); }
public static Geometry segmentIntersectionDD(Geometry g1, Geometry g2) { Coordinate[] pt1 = g1.getCoordinates(); Coordinate[] pt2 = g2.getCoordinates(); // first check if there actually is an intersection RobustLineIntersector ri = new RobustLineIntersector(); ri.computeIntersection(pt1[0], pt1[1], pt2[0], pt2[1]); if (! ri.hasIntersection()) { // no intersection => return empty point return g1.getFactory().createPoint((Coordinate) null); } Coordinate intPt = CGAlgorithmsDD.intersection(pt1[0], pt1[1], pt2[0], pt2[1]); return g1.getFactory().createPoint(intPt); } }
public void testCollinear4() { RobustLineIntersector i = new RobustLineIntersector(); Coordinate p1 = new Coordinate(30, 10); Coordinate p2 = new Coordinate(20, 10); Coordinate q1 = new Coordinate(10, 10); Coordinate q2 = new Coordinate(30, 10); i.computeIntersection(p1, p2, q1, q2); assertEquals(RobustLineIntersector.COLLINEAR_INTERSECTION, i.getIntersectionNum()); assertTrue(i.hasIntersection()); }
Coordinate c3 = new Coordinate(); Coordinate c4 = new Coordinate(); LineIntersector intersector = new RobustLineIntersector(); c1.x = data[0]; c1.y = data[1];
public void test2Lines() { RobustLineIntersector i = new RobustLineIntersector(); Coordinate p1 = new Coordinate(10, 10); Coordinate p2 = new Coordinate(20, 20); Coordinate q1 = new Coordinate(20, 10); Coordinate q2 = new Coordinate(10, 20); Coordinate x = new Coordinate(15, 15); i.computeIntersection(p1, p2, q1, q2); assertEquals(RobustLineIntersector.POINT_INTERSECTION, i.getIntersectionNum()); assertEquals(1, i.getIntersectionNum()); assertEquals(x, i.getIntersection(0)); assertTrue(i.isProper()); assertTrue(i.hasIntersection()); }
public MCIndexSnapRounder(PrecisionModel pm) { this.pm = pm; li = new RobustLineIntersector(); li.setPrecisionModel(pm); scaleFactor = pm.getScale(); }
public void testIsProper2() { i.computeIntersection(new Coordinate(10, 30), new Coordinate(10, 0), new Coordinate(11, 90), new Coordinate(10, 10)); assertTrue(i.hasIntersection()); assertEquals(1, i.getIntersectionNum()); assertTrue(! i.isProper()); }
public SimpleSnapRounder(PrecisionModel pm) { this.pm = pm; li = new RobustLineIntersector(); li.setPrecisionModel(pm); scaleFactor = pm.getScale(); }
public void testIsProper1() { i.computeIntersection(new Coordinate(30, 10), new Coordinate(30, 30), new Coordinate(10, 10), new Coordinate(90, 11)); assertTrue(i.hasIntersection()); assertEquals(1, i.getIntersectionNum()); assertTrue(i.isProper()); }
public static Geometry MCIndexNoding(Geometry geom) { Noder noder = new MCIndexNoder(new IntersectionAdder(new RobustLineIntersector())); noder.computeNodes( SegmentStringUtil.extractNodedSegmentStrings(geom) ); return SegmentStringUtil.toGeometry(noder.getNodedSubstrings(), FunctionsUtil.getFactoryOrDefault(geom)); }