This is similar to your other request in it revolves around handling of "no data" defined by a mask or in this case an area of validity for the projection.
Some recent work was done to allow data stores to provide a clipping area (to respect tile boundaries) perhaps a similar change is needed to for raster data (which could default in this case to area of defined by spatial reference system area of validity). -- Jody Garnett On Wed, 1 Apr 2020 at 21:33, Andrew Miskelly <amiske...@weatherzone.com.au> wrote: > Hi everyone, > > Is there a way of having StreamingRenderer.paint(...) handle the > ProjectionException that is thrown by Resample.doOperation() when you > request an envelope that extends outside the valid domain of the projection > of the source coverage? Sample stack trace below. > > I'm working with imagery from geostationary satellites and the projection > is handled by > https://github.com/geotools/geotools/blob/master/modules/library/referencing/src/main/java/org/geotools/referencing/operation/projection/GeostationarySatellite.java > . > > The aim is to be able to extract sub-images in, say, WGS84 from a (cloud > optimised) GeoTIFF. When the requested envelope is in the middle of the > source image it all works seamlessly but I can't request an image from the > edge of the satellite's field of view. > > A successful request would, of course, have empty pixels through the part > of the destination image that was outside of the source projection's valid > domain. > > Thanks in advance for any help. > > Andrew > > org.geotools.renderer.lite.StreamingRenderer$RenderCoverageReaderRequest > execute > WARNING: Can't reproject grid coverage .... > org.geotools.coverage.processing.CannotReprojectException: Can't reproject > grid coverage .... > at > org.geotools.coverage.processing.operation.Resample.doOperation(Resample.java:260) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRendererUtilities.resample(GridCoverageRendererUtilities.java:129) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRendererUtilities.reproject(GridCoverageRendererUtilities.java:182) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRendererUtilities.reproject(GridCoverageRendererUtilities.java:150) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.renderImage(GridCoverageRenderer.java:733) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.paint(GridCoverageRenderer.java:897) > at > org.geotools.renderer.lite.StreamingRenderer$RenderCoverageReaderRequest.execute(StreamingRenderer.java:3880) > at > org.geotools.renderer.lite.StreamingRenderer$PainterThread.run(StreamingRenderer.java:3991) > at > java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at java.base/java.lang.Thread.run(Thread.java:830) > Caused by: > org.geotools.referencing.operation.projection.ProjectionException > at > org.geotools.referencing.operation.projection.GeostationarySatellite$Ellipsoidal.inverseTransformNormalized(GeostationarySatellite.java:230) > at > org.geotools.referencing.operation.projection.MapProjection$Inverse.transform(MapProjection.java:1047) > at > org.geotools.referencing.operation.projection.MapProjection$Inverse.transform(MapProjection.java:1106) > at > org.geotools.referencing.operation.transform.AbstractMathTransform.transform(AbstractMathTransform.java:215) > at > org.geotools.referencing.operation.transform.ConcatenatedTransformDirect.transform(ConcatenatedTransformDirect.java:55) > at org.geotools.referencing.CRS.transform(CRS.java:1397) > at org.geotools.referencing.CRS.transform(CRS.java:1477) > at > org.geotools.coverage.processing.operation.Resampler2D.reproject(Resampler2D.java:478) > at > org.geotools.coverage.processing.operation.Resample.doOperation(Resample.java:248) > ... 12 more > > _______________________________________________ > GeoTools-GT2-Users mailing list > GeoTools-GT2-Users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users >
_______________________________________________ GeoTools-GT2-Users mailing list GeoTools-GT2-Users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users