001    //$HeadURL: svn+ssh://jwilden@svn.wald.intevation.org/deegree/base/branches/2.5_testing/src/org/deegree/model/coverage/grid/GridCoverage.java $
002    /*----------------------------------------------------------------------------
003     This file originated as a part of GeoAPI.
004    
005     GeoAPI is free software. GeoAPI may be used, modified and
006     redistributed by anyone for any purpose requring only maintaining the
007     copyright and license terms on the source code and derivative files.
008     See the OGC legal page for details.
009    
010     The copyright to the GeoAPI interfaces is held by the Open Geospatial
011     Consortium, see http://www.opengeospatial.org/ogc/legal
012    ----------------------------------------------------------------------------*/
013    package org.deegree.model.coverage.grid;
014    
015    import org.deegree.model.coverage.Coverage;
016    
017    /**
018     * Represent the basic implementation which provides access to grid coverage data. A
019     * <code>GridCoverage</code> implementation may provide the ability to update grid values.
020     *
021     * @UML abstract CV_GridCoverage
022     * @author <A HREF="http://www.opengis.org">OpenGIS&reg; consortium</A>
023     * @version <A HREF="http://www.opengis.org/docs/01-004.pdf">Grid Coverage specification 1.0</A>
024     *
025     * @author last edited by: $Author: mschneider $
026     *
027     * @version $Revision: 20326 $, $Date: 2009-10-22 18:41:56 +0200 (Do, 22 Okt 2009) $
028     *
029     * @see java.awt.image.RenderedImage
030     * @see javax.media.jai.PixelAccessor
031     */
032    public interface GridCoverage extends Coverage {
033        /**
034         * Returns <code>true</code> if grid data can be edited.
035         *
036         * @return <code>true</code> if grid data can be edited.
037         * @UML mandatory dataEditable
038         */
039        boolean isDataEditable();
040    
041        /**
042         * Information for the grid coverage geometry. Grid geometry includes the valid range of grid
043         * coordinates and the georeferencing.
044         *
045         * @return The information for the grid coverage geometry.
046         * @UML mandatory gridGeometry
047         */
048        GridGeometry getGridGeometry();
049    
050        /**
051         * Returns the source data for a grid coverage. If the <code>GridCoverage</code> was produced
052         * from an underlying dataset (by {@link GridCoverageReader#read read(...)} for instance) the
053         * getNumSources() method should returns zero, and this method should not be called.
054         *
055         * If the <code>GridCoverage</code> was produced using {link
056         * org.opengis.coverage.processing.GridCoverageProcessor} then it should return the source grid
057         * coverage of the one used as input to <code>GridCoverageProcessor</code>. In general the
058         * <code>getSource(i)</code> method is intended to return the original
059         * <code>GridCoverage</code> on which it depends.
060         *
061         * This is intended to allow applications to establish what <code>GridCoverage</code>s will
062         * be affected when others are updated, as well as to trace back to the "raw data".
063         *
064         * @param sourceDataIndex
065         *            Source grid coverage index. Indexes start at 0.
066         * @return The source data for a grid coverage.
067         * @throws IndexOutOfBoundsException
068         *             if <code>sourceDataIndex</code> is out of bounds.
069         * @UML operation Coverage.getSource
070         */
071        Coverage getSource( int sourceDataIndex )
072                                throws IndexOutOfBoundsException;
073    
074    }