|
|
|
svn_geotools
|
Author: groldan
Date: 2009-11-02 14:56:02 -0500 (Mon, 02 Nov 2009) New Revision: 34306 Modified: trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAI.java trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/DefaultTiledRasterReader.java trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/RasterInputStream.java trunk/modules/plugin/arcsde/datastore/src/test/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAILegacyOnlineTest.java Log: GEOT-2616, intermediate commit while looking for the best workaround for the displaced tile bug Modified: trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAI.java =================================================================== --- trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAI.java 2009-11-02 08:31:56 UTC (rev 34305) +++ trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAI.java 2009-11-02 19:56:02 UTC (rev 34306) @@ -44,8 +44,10 @@ import javax.media.jai.InterpolationNearest; import javax.media.jai.JAI; import javax.media.jai.ParameterBlockJAI; +import javax.media.jai.PlanarImage; import javax.media.jai.operator.FormatDescriptor; import javax.media.jai.operator.MosaicDescriptor; +import javax.media.jai.operator.TranslateDescriptor; import org.geotools.coverage.CoverageFactoryFinder; import org.geotools.coverage.GridSampleDimension; @@ -409,13 +411,15 @@ .getResultDimensionInsideTiledImage()); log.log(image, query.getRasterId(), "02_crop"); + image = PlanarImage.wrapRenderedImage(image); + final Rectangle mosaicLocation = query.getMosaicLocation(); // scale Float scaleX = Float.valueOf((float) (mosaicLocation.getWidth() / image.getWidth())); Float scaleY = Float.valueOf((float) (mosaicLocation.getHeight() / image.getHeight())); Float translateX = Float.valueOf(0); Float translateY = Float.valueOf(0); - + // image.getData(); if (!(Float.valueOf(1.0F).equals(scaleX) && Float.valueOf(1.0F).equals(scaleY))) { ParameterBlock pb = new ParameterBlock(); pb.addSource(image); @@ -425,11 +429,13 @@ pb.add(translateY); pb.add(new InterpolationNearest()); - try { - LOGGER.info("Forcing loading data for mosaic as per GEOT-"); - image.getData(); - } catch (RuntimeException e) { - throw new DataSourceException("Error fetching arcsde raster", e); + if (queries.size() > 0) { + try { + LOGGER.info("Forcing loading data for mosaic as per GEOT-"); + //image.getData(); + } catch (RuntimeException e) { + throw new DataSourceException("Error fetching arcsde raster", e); + } } image = JAI.create("scale", pb); @@ -500,9 +506,10 @@ final ImageLayout layout = new ImageLayout(mosaicGeometry.x, mosaicGeometry.y, mosaicGeometry.width, mosaicGeometry.height); - + layout.setTileWidth(mosaicGeometry.width); + layout.setTileHeight(mosaicGeometry.height); final RenderingHints hints = new RenderingHints(JAI.KEY_IMAGE_LAYOUT, layout); - //hints.put(JAI.KEY_SERIALIZE_DEEP_COPY, Boolean.TRUE); + // hints.put(JAI.KEY_SERIALIZE_DEEP_COPY, Boolean.TRUE); for (RenderedImage img : transformed) { mosaicParams.addSource(img); Modified: trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/DefaultTiledRasterReader.java =================================================================== --- trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/DefaultTiledRasterReader.java 2009-11-02 08:31:56 UTC (rev 34305) +++ trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/DefaultTiledRasterReader.java 2009-11-02 19:56:02 UTC (rev 34306) @@ -170,9 +170,10 @@ ImageReaderSpi imageIOSPI = new RawImageReaderSpi(); readerInstance = imageIOSPI.createReaderInstance(); + // final InputStream is = new RasterInputStream(tileReader); // final ImageInputStream tiledImageInputStream; - // tiledImageInputStream = new MemoryCacheImageInputStream(new RasterInputStream( - // tileReader)); + // tiledImageInputStream = ImageIO.createImageInputStream(is); + // // raw = new RawImageInputStream(tiledImageInputStream, its, imageOffsets, // imageDimensions); // ImageReaderSpi imageIOSPI = new RawImageReaderSpi(); Modified: trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/RasterInputStream.java =================================================================== --- trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/RasterInputStream.java 2009-11-02 08:31:56 UTC (rev 34305) +++ trunk/modules/plugin/arcsde/datastore/src/main/java/org/geotools/arcsde/gce/RasterInputStream.java 2009-11-02 19:56:02 UTC (rev 34306) @@ -46,6 +46,8 @@ private final int length; + private long streamPos; + public RasterInputStream(final TileReader tileReader) { super(); this.tileReader = tileReader; @@ -75,6 +77,7 @@ @Override public int read(byte[] buff, int off, int len) throws IOException { + //System.err.println("read " + len + ", pos = " + streamPos + ", length = " + length); final byte[] data = getTileData(); if (data == null) { return -1; @@ -83,6 +86,10 @@ final int count = Math.min(available, len); System.arraycopy(data, currTileDataIndex, buff, off, count); currTileDataIndex += count; + streamPos += count; + if(streamPos == length){ + close(); + } return count; } Modified: trunk/modules/plugin/arcsde/datastore/src/test/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAILegacyOnlineTest.java =================================================================== --- trunk/modules/plugin/arcsde/datastore/src/test/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAILegacyOnlineTest.java 2009-11-02 08:31:56 UTC (rev 34305) +++ trunk/modules/plugin/arcsde/datastore/src/test/java/org/geotools/arcsde/gce/ArcSDEGridCoverage2DReaderJAILegacyOnlineTest.java 2009-11-02 19:56:02 UTC (rev 34306) @@ -119,9 +119,9 @@ final AbstractGridCoverage2DReader reader = getReader(); assertNotNull("Couldn't obtain a reader for " + tableName, reader); - final int count = 10; + final int count = 0; long time = 0; - //warm up + // warm up _testIMG_USGSQUAD_SGBASE(reader); for (int i = 0; i < count; i++) { time += _testIMG_USGSQUAD_SGBASE(reader); @@ -129,7 +129,7 @@ System.err.println(count + " reads in " + time + "ms"); } - public long _testIMG_USGSQUAD_SGBASE(AbstractGridCoverage2DReader reader) throws Exception { + private long _testIMG_USGSQUAD_SGBASE(AbstractGridCoverage2DReader reader) throws Exception { // http://localhost:8080/geoserver/wms?WIDTH=256&LAYERS=sde%3AIMG_USGSQUAD_SGBASE&STYLES=&SRS=EPSG%3A26986&HEIGHT=256&FORMAT=image%2Fjpeg&TILED=true&TILESORIGIN=169118.35%2C874964.388&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&BBOX=239038.74625,916916.62575,253022.8255,930900.705 @@ -202,11 +202,32 @@ } @Test - public void testReadRaster() throws Exception { + public void testReadIMG_USGSQUADM_Buggy() throws Exception { + // http://localhost:8080/geoserver/wms?HEIGHT=500&WIDTH=1200&LAYERS=sde:IMG_USGSQUADM&STYLES=&SRS=EPSG%3A26986&FORMAT=image%2Fjpeg&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&BBOX=253178.45971681,872419.13604732,253521.78247071,872562.18719478 tableName = "SDE.RASTER.IMG_USGSQUADM"; final AbstractGridCoverage2DReader reader = getReader(); assertNotNull("Couldn't obtain a reader for " + tableName, reader); + final GeneralEnvelope requestEnvelope = new GeneralEnvelope(reader.getOriginalEnvelope()); + requestEnvelope.setEnvelope(253178.45971681, 872419.13604732, 253521.78247071, + 872562.18719478); + + final int reqWidth = 1200; + final int reqHeight = 500; + + final GridCoverage2D coverage = readCoverage(reader, reqWidth, reqHeight, requestEnvelope); + assertNotNull("read coverage returned null", coverage); + + RenderedImage image = coverage.view(ViewType.PHOTOGRAPHIC).getRenderedImage(); + writeToDisk(image, "testRead_" + tableName); + } + + @Test + public void testReadIMG_USGSQUADM() throws Exception { + tableName = "SDE.RASTER.IMG_USGSQUADM"; + final AbstractGridCoverage2DReader reader = getReader(); + assertNotNull("Couldn't obtain a reader for " + tableName, reader); + final GeneralEnvelope originalEnvelope = reader.getOriginalEnvelope(); final GridEnvelope originalGridRange = reader.getOriginalGridRange(); @@ -216,7 +237,7 @@ final GridCoverage2D coverage = readCoverage(reader, reqWidth, reqHeight, originalEnvelope); assertNotNull("read coverage returned null", coverage); - RenderedImage image = coverage.getRenderedImage(); + RenderedImage image = coverage.view(ViewType.PHOTOGRAPHIC).getRenderedImage(); writeToDisk(image, "testRead_" + tableName); } ------------------------------------------------------------------------------ Come build with us! The BlackBerry(R) Developer Conference in SF, CA is the only developer event you need to attend this year. Jumpstart your developing skills, take BlackBerry mobile applications to market and stay ahead of the curve. Join us from November 9 - 12, 2009. Register now! http://p.sf.net/sfu/devconference _______________________________________________ GeoTools-commits mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/geotools-commits |
||||||||||||||||
| Free Embeddable Forum Powered by Nabble | Help |