protected SpatialRelation relate(Geometry oGeom) { //see http://docs.geotools.org/latest/userguide/library/jts/dim9.html#preparedgeometry if (oGeom instanceof com.vividsolutions.jts.geom.Point) { if (preparedGeometry != null) return preparedGeometry.disjoint(oGeom) ? SpatialRelation.DISJOINT : SpatialRelation.CONTAINS; return geom.disjoint(oGeom) ? SpatialRelation.DISJOINT : SpatialRelation.CONTAINS; } if (preparedGeometry == null) return intersectionMatrixToSpatialRelation(geom.relate(oGeom)); else if (preparedGeometry.covers(oGeom)) return SpatialRelation.CONTAINS; else if (preparedGeometry.coveredBy(oGeom)) return SpatialRelation.WITHIN; else if (preparedGeometry.intersects(oGeom)) return SpatialRelation.INTERSECTS; return SpatialRelation.DISJOINT; }
protected SpatialRelation relate(Geometry oGeom) { //see http://docs.geotools.org/latest/userguide/library/jts/dim9.html#preparedgeometry if (oGeom instanceof com.vividsolutions.jts.geom.Point) { if (preparedGeometry != null) return preparedGeometry.disjoint(oGeom) ? SpatialRelation.DISJOINT : SpatialRelation.CONTAINS; return geom.disjoint(oGeom) ? SpatialRelation.DISJOINT : SpatialRelation.CONTAINS; } if (preparedGeometry == null) return intersectionMatrixToSpatialRelation(geom.relate(oGeom)); else if (preparedGeometry.covers(oGeom)) return SpatialRelation.CONTAINS; else if (preparedGeometry.coveredBy(oGeom)) return SpatialRelation.WITHIN; else if (preparedGeometry.intersects(oGeom)) return SpatialRelation.INTERSECTS; return SpatialRelation.DISJOINT; }
private boolean covers(BoundaryCortage up, PreparedGeometry preparedUpGeometry, PreparedGeometry preparedUpGeometryBuffer, BoundaryCortage dwn) { try { // fast if(preparedUpGeometry.covers(dwn.getGeometry())) { return true; } if(preparedUpGeometryBuffer == null) { Envelope env = dwn.getGeometry().getEnvelopeInternal(); double hypot = Math.hypot(env.getWidth(), env.getHeight()); double buffer = -(hypot * 0.005); return preparedUpGeometry.intersects(dwn.getGeometry().buffer(buffer)); } else { return preparedUpGeometryBuffer.intersects(dwn.getGeometry()); } } catch (Exception e) { return false; } }
public double getCoverage(Cell cell, boolean simpleIntersection) { checkPreparedShape(); if (preparedShape == null) { if (simpleIntersection) { Geometry gm = makePoint(cell); return gm.intersects(value) ? 1.0 : 0.0; } Geometry gm = makeCell(cell.getMinX(), cell.getMinY(), cell.getMaxX(), cell .getMaxY()); return gm.covers(value) ? 1.0 : (gm.intersection(value).getArea() / gm.getArea()); } if (simpleIntersection) { return preparedShape.covers(makePoint(cell)) ? 1 : 0; } Geometry gm = makeCell(cell.getMinX(), cell.getMinY(), cell.getMaxX(), cell .getMaxY()); return preparedShape.covers(gm) ? 1.0 : (gm.intersection(value).getArea() / gm.getArea()); }