    001    //$HeadURL: https://svn.wald.intevation.org/svn/deegree/base/branches/2.4_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    }