/*$************************************************************************************************
**
** $Id: SampleDimension.java 831 2006-05-01 00:27:23Z Desruisseaux $
**
** $URL: http://svn.code.sf.net/p/geoapi/code/branches/2.0.x/geoapi/src/main/java/org/opengis/coverage/SampleDimension.java $
**
** Copyright (C) 2003-2005 Open GIS Consortium, Inc.
** All Rights Reserved. http://www.opengis.org/legal/
**
*************************************************************************************************/
package org.opengis.coverage;
// J2SE and extensions
import java.util.Locale;
import javax.units.Unit;
// OpenGIS direct dependencies
import org.opengis.util.InternationalString;
import org.opengis.referencing.operation.MathTransform1D;
// Annotations
import org.opengis.annotation.UML;
import static org.opengis.annotation.Obligation.*;
import static org.opengis.annotation.Specification.*;
/**
* Contains information for an individual sample dimension of {@linkplain Coverage coverage}.
* This interface is applicable to any coverage type.
* For {@linkplain org.opengis.coverage.grid.GridCoverage grid coverages},
* the sample dimension refers to an individual band.
*
*
*
*
* WARNING: THIS CLASS WILL CHANGE. Current API is derived from OGC
* Grid Coverages Implementation specification 1.0.
* We plan to replace it by new interfaces derived from ISO 19123 (Schema for coverage geometry
* and functions). Current interfaces should be considered as legacy and are included in this
* distribution only because they were part of GeoAPI 1.0 release. We will try to preserve as much
* compatibility as possible, but no migration plan has been determined yet.
*
*
*
* @version Grid Coverage specification 1.0
* @author Martin Desruisseaux (IRD)
* @since GeoAPI 1.0
*/
@UML(identifier="CV_SampleDimension", specification=OGC_01004)
public interface SampleDimension {
/**
* Sample dimension title or description.
* This string may be null or empty if no description is present.
*/
@UML(identifier="description", obligation=MANDATORY, specification=OGC_01004)
InternationalString getDescription();
/**
* A code value indicating grid value data type.
* This will also indicate the number of bits for the data type.
*
* @return A code value indicating grid value data type.
*/
@UML(identifier="sampleDimensionType", obligation=MANDATORY, specification=OGC_01004)
SampleDimensionType getSampleDimensionType();
/**
* Sequence of category names for the values contained in a sample dimension.
* This allows for names to be assigned to numerical values.
* The first entry in the sequence relates to a cell value of zero.
* For grid coverages, category names are only valid for a classified grid data.
*
* For example:
*
* - 0 Background
* - 1 Water
* - 2 Forest
* - 3 Urban
*
* Note: If no category names exist, an empty sequence is returned.
*/
@UML(identifier="categoryNames", obligation=MANDATORY, specification=OGC_01004)
InternationalString[] getCategoryNames();
/**
* Color interpretation of the sample dimension.
* A sample dimension can be an index into a color palette or be a color model
* component. If the sample dimension is not assigned a color interpretation the
* value is {@link ColorInterpretation#UNDEFINED UNDEFINED}.
*
* @return The color interpretation of the sample dimension.
*/
@UML(identifier="colorInterpretation", obligation=MANDATORY, specification=OGC_01004)
ColorInterpretation getColorInterpretation();
/**
* Indicates the type of color palette entry for sample dimensions which have a
* palette. If a sample dimension has a palette, the color interpretation must
* be {@link ColorInterpretation#GRAY_INDEX GRAY_INDEX}
* or {@link ColorInterpretation#PALETTE_INDEX PALETTE_INDEX}.
* A palette entry type can be Gray, RGB, CMYK or HLS.
*
* @return The type of color palette entry for sample dimensions which have a palette.
*/
@UML(identifier="paletteInterpretation", obligation=MANDATORY, specification=OGC_01004)
PaletteInterpretation getPaletteInterpretation();
/**
* Color palette associated with the sample dimension.
* A color palette can have any number of colors.
* See palette interpretation for meaning of the palette entries.
* If the grid coverage has no color palette, {@code null} will be returned.
*
* @return The color palette associated with the sample dimension.
*
* @see #getPaletteInterpretation
* @see #getColorInterpretation
* @see java.awt.image.IndexColorModel
*/
@UML(identifier="palette", obligation=MANDATORY, specification=OGC_01004)
int[][] getPalette();
/**
* Values to indicate no data values for the sample dimension.
* For low precision sample dimensions, this will often be no data values.
*
* @return The values to indicate no data values for the sample dimension.
*
* @see #getMinimumValue
* @see #getMaximumValue
*/
@UML(identifier="noDataValue", obligation=MANDATORY, specification=OGC_01004)
double[] getNoDataValues();
/**
* The minimum value occurring in the sample dimension.
* If this value is not available, this value can be determined from the
* {@link org.opengis.coverage.processing.GridAnalysis#getMinValue} operation.
* This value can be empty if this value is not provided by the implementation.
*
* @return The minimum value occurring in the sample dimension.
*
* @see #getMaximumValue
* @see #getNoDataValues
*/
@UML(identifier="minimumValue", obligation=MANDATORY, specification=OGC_01004)
double getMinimumValue();
/**
* The maximum value occurring in the sample dimension.
* If this value is not available, this value can be determined from the
* {@link org.opengis.coverage.processing.GridAnalysis#getMaxValue} operation.
* This value can be empty if this value is not provided by the implementation.
*
* @return The maximum value occurring in the sample dimension.
*
* @see #getMinimumValue
* @see #getNoDataValues
*/
@UML(identifier="maximumValue", obligation=MANDATORY, specification=OGC_01004)
double getMaximumValue();
/**
* The unit information for this sample dimension.
* This interface typically is provided with grid coverages which represent
* digital elevation data.
* This value will be {@code null} if no unit information is available.
*
* @return The unit information for this sample dimension.
*/
@UML(identifier="units", obligation=MANDATORY, specification=OGC_01004)
Unit getUnits();
/**
* Offset is the value to add to grid values for this sample dimension.
* This attribute is typically used when the sample dimension represents
* elevation data. The default for this value is 0.
*
* @see #getScale
*/
@UML(identifier="offset", obligation=MANDATORY, specification=OGC_01004)
double getOffset();
/**
* Scale is the value which is multiplied to grid values for this sample dimension.
* This attribute is typically used when the sample dimension represents elevation
* data. The default for this value is 1.
*
* @see #getOffset
*/
@UML(identifier="scale", obligation=MANDATORY, specification=OGC_01004)
double getScale();
/**
* The transform which is applied to grid values for this sample dimension.
* This transform is often defined as
* y = {@linkplain #getOffset offset} + {@link #getScale scale}×x where
* x is the grid value and y is the geophysics value.
* However, this transform may also defines more complex relationship, for
* example a logarithmic one. In order words, this transform is a generalization of
* {@link #getScale}, {@link #getOffset} and {@link #getNoDataValues} methods.
*
* @return The transform from sample to geophysics values, or {@code null} if
* it doesn't apply.
*
* @see #getScale
* @see #getOffset
* @see #getNoDataValues
*/
MathTransform1D getSampleToGeophysics();
/**
* The list of metadata keywords for a sample dimension.
* If no metadata is available, the sequence will be empty.
*
* @see #getMetadataValue
* @see javax.media.jai.PropertySource#getPropertyNames
*/
@UML(identifier="metadataNames", obligation=MANDATORY, specification=OGC_01004)
String[] getMetaDataNames();
/**
* Retrieve the metadata value for a given metadata name.
*
* @param name Metadata keyword for which to retrieve metadata.
* @return The metadata value for a given metadata name.
* @throws MetadataNameNotFoundException if there is no value for the specified metadata name.
*
* @see #getMetaDataNames
* @see javax.media.jai.PropertySource#getProperty
*/
@UML(identifier="getMetadataValue", obligation=MANDATORY, specification=OGC_01004)
String getMetadataValue(String name) throws MetadataNameNotFoundException;
}
Ads help maintain this website.