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