Examples of RasterLayout


Examples of org.geotools.coverage.grid.RasterLayout

        //
        final int hrWidth = reader.getWidth(index);
        final int hrHeight = reader.getHeight(index);
        final int hrTileW = reader.getTileWidth(index);
        final int hrTileH = reader.getTileHeight(index);
        final RasterLayout rasterLayout = new RasterLayout(
                0,
                0,
                hrWidth,
                hrHeight,
                reader.getTileGridXOffset(index),
                reader.getTileGridXOffset(index),
                hrTileW,
                hrTileH);
        slice.rasterDimensions=rasterLayout;
       
        //
        // get sample image
        //
        final ImageReadParam readParam = reader.getDefaultReadParam();
        readParam.setSourceRegion(new Rectangle(0, 0, 2, 2));
        final BufferedImage sampleImage = reader.read(index, readParam);
        final ImageTypeSpecifier imageType = new ImageTypeSpecifier(sampleImage);
        slice.imageType=imageType;
       
        double noDataValue;
        CoordinateReferenceSystem crs=null;
        AffineTransform raster2Model=null;
        ReferencedEnvelope bbox=null;
        if(fullResolution){
           
            ////
            //
            // THIS IS A FULL RESOLUTION PAGE
            //
            ////
           
            //
            // Now load geotiff metadata
            //
            final GeoTiffIIOMetadataDecoder decoder = new GeoTiffIIOMetadataDecoder(metadata);
           
            //
            // NO DATA
            // 
            if (decoder.hasNoData())
                noDataValue = decoder.getNoData();
           
            // //
            //
            // CRS INFO
            //
            // //
            GeoTiffMetadata2CRSAdapter gtcs = null;
            final Object tempCRS = this.hints.get(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM);
            if (tempCRS != null) {
                crs = (CoordinateReferenceSystem) tempCRS;
                if (LOGGER.isLoggable(Level.FINE))
                    LOGGER.log(Level.FINE, "Using forced coordinate reference system");
            } else {

                // metadata decoder
                gtcs=new GeoTiffMetadata2CRSAdapter(hints);
                // check metadata first
                if (decoder.hasGeoKey()&& gtcs != null)
                    try {
                        crs = gtcs.createCoordinateSystem(decoder);
                    } catch (FactoryException e) {
                       throw new IOException(e);
                    }

                if (crs == null)
                    crs = GeoTiffUtils.getCRS(source.getSource());
            }

            if (crs == null){
                if(LOGGER.isLoggable(Level.WARNING)){
                    LOGGER.warning("Coordinate Reference System is not available");
                }
                crs = AbstractGridFormat.getDefaultCRS();
            }
           
            if (gtcs != null&& metadata!=null&& (decoder.hasModelTrasformation()||(decoder.hasPixelScales()&&decoder.hasTiePoints()))) {
                // TODO I hate all thiese casts
                raster2Model = (AffineTransform) GeoTiffMetadata2CRSAdapter.getRasterToModel(decoder);
            } else {
                // TODO I hate all thiese casts               
                raster2Model = (AffineTransform) GeoTiffUtils.parseWorldFile(source);
            }
   
            if (raster2Model == null) {
                // TODO test this
                raster2Model=AffineTransform.getScaleInstance(0, 0);
            }
            slice.gridToWorld=raster2Model;
           
            final AffineTransform tempTransform = new AffineTransform(raster2Model);
            tempTransform.translate(-0.5, -0.5);
            try {
                GeneralEnvelope bbox_ = CRS.transform(ProjectiveTransform
                        .create(tempTransform), new GeneralEnvelope(rasterLayout.getBounds()));
                bbox_.setCoordinateReferenceSystem(crs);
                bbox= new ReferencedEnvelope(bbox_);
            } catch (TransformException e) {
                new IOException(e);
            }
View Full Code Here

Examples of org.geotools.coverage.grid.RasterLayout

*/
public class RasterLayoutTest extends Assert{

    @Test
    public void testRasterLayout(){
        RasterLayout rasterLayout = new RasterLayout(10, 10, 100, 100);
        assertEquals(rasterLayout.getHeight(), 100);
        assertEquals(rasterLayout.getWidth(), 100);
        assertEquals(rasterLayout.getMinX(), 10);
        assertEquals(rasterLayout.getMinY(), 10);
        assertEquals(rasterLayout.getTileGridXOffset(), 0);
        assertEquals(rasterLayout.getTileGridYOffset(), 0);
        assertEquals(rasterLayout.getTileWidth(), 0);
        assertEquals(rasterLayout.getTileHeight(), 0);
       
        SampleModel sm = new BandedSampleModel(DataBuffer.TYPE_BYTE, 50, 50, 3);
        ColorModel cm = new ComponentColorModel(ColorSpace.getInstance(ColorSpace.CS_sRGB), false, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE);
        TiledImage ri = new TiledImage(10, 10, 50, 50, 5, 5, sm, cm);
       
        RasterLayout rasterLayoutToBeCloned = new RasterLayout(ri);
        RasterLayout rasterLayout3 = new RasterLayout(ri);
        RasterLayout rasterLayout2 = (RasterLayout) rasterLayoutToBeCloned.clone();
       
        assertTrue(rasterLayout2.equals(rasterLayout3));
       
        assertEquals(rasterLayout2.getHeight(), 50);
        assertEquals(rasterLayout2.getWidth(), 50);
        assertEquals(rasterLayout2.getMinX(), 10);
        assertEquals(rasterLayout2.getMinY(), 10);
        assertEquals(rasterLayout2.getTileGridXOffset(), 5);
        assertEquals(rasterLayout2.getTileGridYOffset(), 5);
        assertEquals(rasterLayout2.getTileWidth(), 50);
        assertEquals(rasterLayout2.getTileHeight(), 50);
       
        rasterLayout2.toString();
       
        Map <RenderedImage, RasterLayout> map = new HashMap<RenderedImage, RasterLayout>();
        map.put(ri, rasterLayout2);
        assertTrue(map.containsKey(ri));
       
View Full Code Here

Examples of org.geotools.coverage.grid.RasterLayout

            numOverviews = reader.getNumImages(true) - 1;
            final int hrWidth = reader.getWidth(0);
            final int hrHeight = reader.getHeight(0);
            final int hrTileW = reader.getTileWidth(0);
            final int hrTileH = reader.getTileHeight(0);
            hrLayout = new RasterLayout(0, 0, hrWidth, hrHeight, 0, 0, hrTileW, hrTileH);
            final Rectangle actualDim = new Rectangle(0, 0, hrWidth, hrHeight);
            originalGridRange = new GridEnvelope2D(actualDim);
           
   
            final IIOMetadata iioMetadata = reader.getImageMetadata(0);
            GeoTiffIIOMetadataDecoder metadata = new GeoTiffIIOMetadataDecoder(iioMetadata);
            if (metadata.hasNoData())
                noData = metadata.getNoData();
            // //
            //
            // get the CRS INFO
            //
            // //
            // metadata decoder           
            GeoTiffMetadata2CRSAdapter gtcs=new GeoTiffMetadata2CRSAdapter(hints);
            final Object tempCRS = this.hints.get(Hints.DEFAULT_COORDINATE_REFERENCE_SYSTEM);
            if (tempCRS != null) {
                this.crs = (CoordinateReferenceSystem) tempCRS;
                if (LOGGER.isLoggable(Level.FINE))
                    LOGGER.log(Level.FINE, "Using forced coordinate reference system");
            } else {

                // check metadata first
                if (metadata.hasGeoKey()&& gtcs != null)
                    crs = gtcs.createCoordinateSystem(metadata);

                if (crs == null)
                    crs = GeoTiffUtils.getCRS(source);
            }

            if (crs == null){
                if(LOGGER.isLoggable(Level.WARNING)){
                    LOGGER.warning("Coordinate Reference System is not available");
                }
                crs = AbstractGridFormat.getDefaultCRS();
            }


            if (gtcs != null&& metadata!=null&& (metadata.hasModelTrasformation()||(metadata.hasPixelScales()&&metadata.hasTiePoints()))) {
                this.raster2Model = GeoTiffMetadata2CRSAdapter.getRasterToModel(metadata);
            } else {
                this.raster2Model = GeoTiffUtils.parseWorldFile(source);
            }
   
            if (this.raster2Model == null) {
                throw new DataSourceException("Raster to Model Transformation is not available");
            }
   
            final AffineTransform tempTransform = new AffineTransform((AffineTransform) raster2Model);
            tempTransform.translate(-0.5, -0.5);
            originalEnvelope = CRS.transform(ProjectiveTransform
                    .create(tempTransform), new GeneralEnvelope(actualDim));
            originalEnvelope.setCoordinateReferenceSystem(crs);
   
            // ///
            //
            // setting the higher resolution available for this coverage
            //
            // ///
            highestRes = new double[2];
            highestRes[0] = XAffineTransform.getScaleX0(tempTransform);
            highestRes[1] = XAffineTransform.getScaleY0(tempTransform);
   
            if (ovrInStreamSPI != null) {
                ovrReader = GeoTiffUtils.TIFFREADERFACTORY.createReaderInstance();
                ovrStream = ovrInStreamSPI.createInputStreamInstance(ovrSource,
                        ImageIO.getUseCache(), ImageIO.getCacheDirectory());
                ovrReader.setInput(ovrStream);
                // this includes the real image as this is a image index, we need to add one.
                extOvrImgChoice = numOverviews + 1;
                numOverviews = numOverviews + ovrReader.getNumImages(true);
                if (numOverviews < extOvrImgChoice)
                    extOvrImgChoice = -1;
            }
           
            // //
            //
            // get information for the successive images
            //
            // //
   
            if (numOverviews >= 1) {
                overViewResolutions = new double[numOverviews][2];
                overViewLayouts = new RasterLayout[numOverviews];
                // Internal levels start at 1, so lastInternalOverview matches numOverviews if no
                // external.
                int firstExternalOverview = extOvrImgChoice == -1 ? numOverviews : extOvrImgChoice - 1;
                double spanRes0 = highestRes[0] * this.originalGridRange.getSpan(0);
                double spanRes1 = highestRes[1] * this.originalGridRange.getSpan(1);
                for (int i = 0; i < firstExternalOverview; i++) {
                    final int w = reader.getWidth(i + 1);
                    final int h = reader.getHeight(i + 1);
                    final int tw = reader.getTileWidth(i + 1);
                    final int th = reader.getTileHeight(i + 1);
                    overViewResolutions[i][0] = spanRes0 / w;
                    overViewResolutions[i][1] = spanRes1 / h;
                    overViewLayouts[i] = new RasterLayout(0, 0, w, h, 0, 0, tw, th);
                }
                for (int i = firstExternalOverview; i < numOverviews; i++) {
                    final int w = ovrReader.getWidth(i - firstExternalOverview);
                    final int h = ovrReader.getHeight(i - firstExternalOverview);
                    final int tw = ovrReader.getTileWidth(i - firstExternalOverview);
                    final int th = ovrReader.getTileHeight(i - firstExternalOverview);
                    overViewResolutions[i][0] = spanRes0 / w;
                    overViewResolutions[i][1] = spanRes1 / h;
                    overViewLayouts[i] = new RasterLayout(0, 0, w, h, 0, 0, tw, th);
                }
              
            } else {
                overViewResolutions = null;
            }
View Full Code Here

Examples of org.geotools.coverage.io.RasterLayout

        @Override
        public Set<? extends RasterLayout> getRasterElements(boolean overall,
                ProgressListener listener) throws IOException {
            Rectangle bounds = gridGeometry.getGridRange2D().getBounds();
            return Collections.singleton(new RasterLayout(bounds));
        }
View Full Code Here

Examples of org.geotools.coverage.io.RasterLayout

        coverageName = checkUnspecifiedCoverage(coverageName);
        try {
            final CoverageSource source = getGridCoverageSource(coverageName);
            VariableAdapter.UnidataSpatialDomain spatialDomain = (UnidataSpatialDomain) source.getSpatialDomain();
            GridEnvelope2D gridRange = spatialDomain.getGridGeometry().getGridRange2D();
            RasterLayout rasterElement = spatialDomain.getRasterElements(false, null).iterator().next();
            SampleModel sampleModel = new BandedSampleModel(DataBuffer.TYPE_DOUBLE, (int)gridRange.getWidth(), (int)gridRange.getHeight(), 1);
            ColorModel colorModel = ImageIOUtilities.createColorModel(sampleModel);
            Rectangle rect = rasterElement.toRectangle();
            ImageLayout layout = new ImageLayout(rect.x, rect.y, rect.width, rect.height);
            layout.setSampleModel(sampleModel);
            layout.setColorModel(colorModel);
            return layout;
           
View Full Code Here

Examples of org.geotools.coverage.io.RasterLayout

          listener.started();
        if(listener!=null&&listener.isCanceled())
          return null;
        try{
          final Rectangle bounds=access.gridGeometry2DMap.get(HDF4Source.this.name).getGridRange2D().getBounds();
          final RasterLayout rl= new RasterLayout(bounds);
          return Collections.singleton(rl);
        }catch (Throwable e) {
          listener.exceptionOccurred(e);
          return null;
        }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.