boolean isAccurateResolutionComputationSafe(ReferencedEnvelope readEnvelope) throws MismatchedDimensionException, FactoryException, TransformException { // accurate resolution computation depends on reprojection working, we need // to make sure the read envelope is sane for the source data at hand CoordinateReferenceSystem readCRS = readEnvelope.getCoordinateReferenceSystem(); ProjectionHandler handler = ProjectionHandlerFinder.getHandler( new ReferencedEnvelope(readCRS), DefaultGeographicCRS.WGS84, true); if (handler != null) { // if there are no limits or the projection is periodic, assume it's fine to read // whatever if (handler.getValidAreaBounds() == null || handler instanceof WrappingProjectionHandler) { return true; } // in this case we need to make sure the area is actually safe to perform reprojections // on try { // when assertions are enabled accuracy tests might fail this path ReferencedEnvelope validBounds = handler.getValidAreaBounds().transform(readCRS, true); return validBounds.contains((Envelope) readEnvelope); } catch (Exception e) { return false; } } else { return false; } }
if (reprojectionNeeded && handler != null && handler.getValidAreaBounds() != null) { List<GridCoverage2D> cropped = new ArrayList<>(); ReferencedEnvelope validArea = handler.getValidAreaBounds(); GridGeometryReducer reducer = new GridGeometryReducer(validArea); for (GridCoverage2D coverage : coverages) {
final ReferencedEnvelope validAreaBounds = handler.getValidAreaBounds(); ReferencedEnvelope validArea = validAreaBounds.transform(targetCRS, true); ReferencedEnvelope reduced = transformed.intersection(validArea);
public CapabilitiesTransformerProjectionHandler(ProjectionHandler handler) throws FactoryException { super(handler.getSourceCRS(), handler.getValidAreaBounds(), handler.getRenderingEnvelope()); }
true); if (handler != null) { ReferencedEnvelope validArea = handler.getValidAreaBounds(); Envelope intersection = validArea.intersection(