Hello. Creating that email lead me to the solution. Sorry for the noise and have a nice week end.
The solution was to initiate the GridCoverageRenderer with the CRS read from the GeoTIFF instead of the one from the grid from the BAG file. Regards, Tore Halset. > On 20 Nov 2015, at 16:51, Tore Halset <[email protected]> wrote: > > Hello. > > This is with GeoTools 14.0. > > I have a GridCoverage2D that I have read from a BAG file using NetCDF. Not > using GeoTools NetCDFReader, but NetCDF-java directly. The GridCoverage2D > works fine with GridCoverageRenderer. > > I then write out the GridCoverage2D (from BAG) to a GeoTIFF file using > GeoTiffWriter and then read it back in using GeoTiffReader. The returned > GridCoverage2D seem to have all the same metadata like dimensions. The crs of > the grid from the read GeoTIFF is almost the same as the one in the grid from > the BAG. They are below. This new GridCoverage2D does not longer work with > the GridCoverageRenderer. > > The problem seem to be that the rendering process creates a very very large > image. The size of the BAG and the GeoTIFF on disc is 2901x5716. If I zoom > far in, I get an exception like "Dimensions (width=176427 height=247285) are > too large” as seen below. This is all with the same GeoTIFF file. If I zoom > even further in, I get an exception message like "Dimensions (width=194885 > height=273156) are too large”. If I zoom out to a more sensible zoom range, > then I get an exception with message "Cannot construct DataBuffer” also seen > below. > > I write out the GeoTIFF file like this: > GeoTiffWriter w = new GeoTiffWriter(file); > w.write(fromBag, null); > w.dispose(); > > And then read it back in like this: > GeoTiffReader r = new GeoTiffReader(file); > GridCoverage2D scaled = r.read(null); > > GridCoverageRenderer.affine in line 619 uses > GridCoverageRendererUtilities.layoutHelper on a finalRasterTransformation to > calculate the too large image dimensions. > > I would like the grid to work in the same way after it has been written to > the GeoTIFF and read back in. > > Any tips to where I should continue looking? > > Regards, > Tore Halset. > > Exception when zoomed far in: > Caused by: java.lang.IllegalArgumentException: Dimensions (width=176427 > height=247285) are too large > at java.awt.image.SampleModel.<init>(SampleModel.java:130) ~[?:1.8.0_31] > at > java.awt.image.ComponentSampleModel.<init>(ComponentSampleModel.java:146) > ~[?:1.8.0_31] > at > java.awt.image.PixelInterleavedSampleModel.<init>(PixelInterleavedSampleModel.java:87) > ~[?:1.8.0_31] > at > it.geosolutions.jaiext.classifier.LinearColorMap.getSampleModel(LinearColorMap.java:461) > ~[jt-classifier-1.0.6.jar:?] > at > it.geosolutions.jaiext.classifier.RasterClassifierOpImage.prepareLayout(RasterClassifierOpImage.java:94) > ~[jt-classifier-1.0.6.jar:?] > at > it.geosolutions.jaiext.classifier.RasterClassifierOpImage.<init>(RasterClassifierOpImage.java:53) > ~[jt-classifier-1.0.6.jar:?] > at > it.geosolutions.jaiext.classifier.RasterClassifierCRIF.create(RasterClassifierCRIF.java:56) > ~[jt-classifier-1.0.6.jar:?] > at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source) ~[?:?] > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > ~[?:1.8.0_31] > at java.lang.reflect.Method.invoke(Method.java:483) ~[?:1.8.0_31] > at javax.media.jai.FactoryCache.invoke(FactoryCache.java:122) > ~[jai_core.jar:1.1.3] > at > javax.media.jai.OperationRegistry.invokeFactory(OperationRegistry.java:1674) > ~[jai_core.jar:1.1.3] > at > it.geosolutions.jaiext.ConcurrentOperationRegistry.invokeFactory(ConcurrentOperationRegistry.java:576) > ~[jt-utilities-1.0.6.jar:?] > at javax.media.jai.registry.RIFRegistry.create(RIFRegistry.java:332) > ~[jai_core.jar:1.1.3] > at javax.media.jai.RenderedOp.createInstance(RenderedOp.java:819) > ~[jai_core.jar:1.1.3] > at javax.media.jai.RenderedOp.createRendering(RenderedOp.java:867) > ~[jai_core.jar:1.1.3] > at javax.media.jai.RenderedOp.getColorModel(RenderedOp.java:2242) > ~[jai_core.jar:1.1.3] > at > org.geotools.renderer.lite.gridcoverage2d.ColorMapNode.execute(ColorMapNode.java:302) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.ColorMapNode.execute(ColorMapNode.java:57) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter$1.execute(StyleVisitorCoverageProcessingNodeAdapter.java:101) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.checkExecuted(BaseCoverageProcessingNode.java:238) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:341) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:46) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter.getOutput(StyleVisitorCoverageProcessingNodeAdapter.java:141) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.ContrastEnhancementNode.execute(ContrastEnhancementNode.java:240) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.ContrastEnhancementNode.execute(ContrastEnhancementNode.java:77) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter$1.execute(StyleVisitorCoverageProcessingNodeAdapter.java:101) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.checkExecuted(BaseCoverageProcessingNode.java:238) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:341) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.getOutput(BaseCoverageProcessingNode.java:46) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter.getOutput(StyleVisitorCoverageProcessingNodeAdapter.java:141) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.SubchainStyleVisitorCoverageProcessingAdapter.execute(SubchainStyleVisitorCoverageProcessingAdapter.java:116) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.RasterSymbolizerHelper.execute(RasterSymbolizerHelper.java:78) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.RasterSymbolizerHelper.execute(RasterSymbolizerHelper.java:58) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.StyleVisitorCoverageProcessingNodeAdapter$1.execute(StyleVisitorCoverageProcessingNodeAdapter.java:101) > ~[gt-render-14.0.jar:?] > at > org.geotools.renderer.lite.gridcoverage2d.BaseCoverageProcessingNode.checkExecuted(BaseCoverageProcessingNode.java:238) > ~[gt-render-14.0.jar:?] > > Exception when zoomed out: > INFO: Problem occurs when computing a tile by the owner. > java.lang.RuntimeException: Cannot construct DataBuffer. > at > com.sun.media.jai.util.DataBufferUtils.constructDataBuffer(DataBufferUtils.java:132) > at > com.sun.media.jai.util.DataBufferUtils.createDataBufferFloat(DataBufferUtils.java:214) > at > javax.media.jai.ComponentSampleModelJAI.createDataBuffer(ComponentSampleModelJAI.java:271) > at > javax.media.jai.RecyclingTileFactory.createTile(RecyclingTileFactory.java:389) > at > javax.media.jai.PlanarImage.createWritableRaster(PlanarImage.java:1982) > at javax.media.jai.PlanarImage.getData(PlanarImage.java:2160) > at javax.media.jai.PlanarImage.getData(PlanarImage.java:2016) > at > it.geosolutions.jaiext.classifier.RasterClassifierOpImage.computeRect(RasterClassifierOpImage.java:106) > at javax.media.jai.OpImage.computeTile(OpImage.java:1221) > at javax.media.jai.PointOpImage.computeTile(PointOpImage.java:728) > at > com.sun.media.jai.util.SunTileScheduler.scheduleTile(SunTileScheduler.java:904) > at javax.media.jai.OpImage.getTile(OpImage.java:1129) > at javax.media.jai.RenderedOp.getTile(RenderedOp.java:2257) > at > sun.java2d.SunGraphics2D.drawTranslatedRenderedImage(SunGraphics2D.java:2820) > at sun.java2d.SunGraphics2D.drawRenderedImage(SunGraphics2D.java:2707) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.paintImage(GridCoverageRenderer.java:1177) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.paint(GridCoverageRenderer.java:1110) > at > org.geotools.renderer.lite.gridcoverage2d.GridCoverageRenderer.paint(GridCoverageRenderer.java:1071) > > CRS WKT from BAG: > PROJCS["UTM-32N", > GEOGCS["unnamed", > DATUM["WGS_1984", > SPHEROID["WGS_1984", 6378137.0, 298.2572201434276], > TOWGS84[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]], > PRIMEM["Greenwich", 0.0], > UNIT["degree", 0.017453292519943295], > AXIS["Longitude", EAST], > AXIS["Latitude", NORTH]], > PROJECTION["Transverse_Mercator"], > PARAMETER["central_meridian", 9.0], > PARAMETER["latitude_of_origin", 0.0], > PARAMETER["scale_factor", 0.9996], > PARAMETER["false_easting", 500000.0], > PARAMETER["false_northing", 0.0], > UNIT["m", 1.0], > AXIS["x", EAST], > AXIS["y", NORTH]] > > CRS WKT from GeoTIFF: > PROJCS["UTM-32N|UTM-32N", > GEOGCS["unnamed", > DATUM["WGS_1984", > SPHEROID["WGS_1984", 6378137.0, 298.2572201434276]], > PRIMEM["Greenwich", 0.0], > UNIT["degree", 0.017453292519943295], > AXIS["Geodetic longitude", EAST], > AXIS["Geodetic latitude", NORTH]], > PROJECTION["Transverse_Mercator"], > PARAMETER["central_meridian", 9.0], > PARAMETER["latitude_of_origin", 0.0], > PARAMETER["scale_factor", 0.9996], > PARAMETER["false_easting", 500000.0], > PARAMETER["false_northing", 0.0], > UNIT["m", 1.0], > AXIS["Easting", EAST], > AXIS["Northing", NORTH]] ------------------------------------------------------------------------------ _______________________________________________ GeoTools-GT2-Users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users
