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
GeoTools-GT2-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to