/** * Tests whether any component of the test Geometry intersects the interior of the target * geometry. Handles test geometries with both linear and point components. * * @param geom a geometry to test * @return true if any component of the argument intersects the prepared area geometry interior */ protected boolean isAnyTestComponentInTargetInterior(Geometry testGeom) { List coords = ComponentCoordinateExtracter.getCoordinates(testGeom); for (Iterator i = coords.iterator(); i.hasNext(); ) { Coordinate p = (Coordinate) i.next(); int loc = targetPointLocator.locate(p); if (loc == Location.INTERIOR) return true; } return false; }
/** * Tests whether any representative point of the test Geometry intersects the target geometry. * Only handles test geometries which are Puntal (dimension 0) * * @param geom a Puntal geometry to test * @return true if any point of the argument intersects the prepared geometry */ protected boolean isAnyTestPointInTarget(Geometry testGeom) { /** * This could be optimized by using the segment index on the lineal target. However, it seems * like the L/P case would be pretty rare in practice. */ PointLocator locator = new PointLocator(); List coords = ComponentCoordinateExtracter.getCoordinates(testGeom); for (Iterator i = coords.iterator(); i.hasNext(); ) { Coordinate p = (Coordinate) i.next(); if (locator.intersects(p, prepLine.getGeometry())) return true; } return false; }