/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2011, Open Source Geospatial Foundation (OSGeo)
* (C) 2005 Open Geospatial Consortium Inc.
*
* All Rights Reserved. http://www.opengis.org/legal/
*/
/**
* Quadrilateral grid coverages.
* The following is adapted from ISO 19123 specification.
*
* <P ALIGN="justify">Grid coverages employ a systematic tessellation of the domain. The principal advantage
* of such tessellations is that they support a sequential enumeration of the elements of the domain, which
* makes data storage and access more efficient. The tessellation may represent how the data was acquired or
* how it was computed in a model. The domain of a grid coverage is a set of grid points, including their
* convex hull in the case of a continuous grid coverage.</P>
*
* <H3>Quadrilateral grid geometry</H3>
* <P ALIGN="justify">A grid is a network composed of two or more sets of curves in which the members of each
* set intersect the members of the other sets in a systematic way. The curves are called grid lines; the points
* at which they intersect are {@linkplain org.opengis.coverage.grid.GridPoint grid points}, and the interstices
* between the grid lines are {@linkplain org.opengis.coverage.grid.GridCell grid cells}.</P>
*
* <P ALIGN="justify">The most common case is the one in which the curves are straight lines, and there is one set of grid
* lines for each dimension of the grid space. In this case the {@linkplain org.opengis.coverage.grid.GridCell grid cells}
* are parallelograms or parallelepipeds. In its own coordinate system, such a grid is a network composed of two or more
* sets of equally spaced parallel lines in which the members of each set intersect the members of the other sets at right
* angles. It has a set of axes equal in number to the {@linkplain org.opengis.coverage.grid.Grid#getDimension dimension of
* the grid}. It has one set of grid lines parallel to each axis. The size of the grid is described by a sequence of integers,
* in which each integer is a count of the number of lines parallel to one of the axes. There are
* {@linkplain org.opengis.coverage.grid.GridPoint grid points} at all grid line intersections. The axes of the grid
* provide a basis for defining {@linkplain org.opengis.coverage.grid.GridCoordinates grid coordinates}, which are measured
* along the axes away from their origin, which is distinguished by having coordinate values of 0. Grid coordinates of grid
* points are integer numbers. The axes need to be identified to support sequencing rules for associating feature attribute
* value records to the grid points.</P>
*
* <BLOCKQUOTE><P ALIGN="justify"><B>NOTE:</B> The dimensions (axes) of a 2-dimensional grid are often called row and
* column.</P></BLOCKQUOTE>
*
* <P ALIGN="justify">A grid may be defined in terms of an external {@linkplain org.opengis.referencing.crs.CoordinateReferenceSystem
* coordinate reference system}. This requires additional information about the location of the grid's origin within the external
* coordinate reference system, the orientation of the grid axes, and a measure of the spacing between the grid lines. If the
* spacing is uniform, then there is an affine relationship between the grid and external coordinate system, and the grid
* is called a rectified grid. If, in addition, the external coordinate reference system is related to the earth by a datum,
* the grid is a georectified grid. The grid lines of a rectified grid need not meet at right angles; the spacing between the
* grid lines is constant along each axis, but need not be the same on every axis. The essential point is that the transformation
* of grid coordinates to coordinates of the external coordinate reference system is an affine transformation.</P>
*
* <BLOCKQUOTE><P ALIGN="justify"><B>NOTE:</B> The word rectified implies a transformation from an image space to another
* coordinate reference system. However, grids of this form are often defined initially in an earth-based coordinate system
* and used as a basis for collecting data from sources other than imagery.</P></BLOCKQUOTE>
*
* <P ALIGN="justify">A feature attribute value may be of any data type. However, evaluation of a continuous coverage
* is usually implemented by interpolation methods that can be applied only to numbers or vectors. Other data types are
* almost always associated with discrete coverages.</P>
*
* <P ALIGN="justify">When the relationship between a {@linkplain org.opengis.coverage.grid.Grid grid} and an external
* {@linkplain org.opengis.referencing.crs.CoordinateReferenceSystem coordinate reference system} is not adequate to specify
* it in terms of an origin, an orientation, and spacing in that coordinate reference system, it may still be possible to
* transform the grid coordinates into coordinates in the coordinate reference system. This transformation need not
* be in analytic form; it may be a table, relating the grid points to coordinates in the external coordinate reference
* system. Such a grid is classified as a referenceable grid. If the external coordinate reference system is related to
* the earth by a datum, the grid is a georeferenceable grid. A referenceable grid is associated with information that
* allows the location of all points in the grid to be determined in the coordinate reference system, but the location of
* the points is not directly available from the grid coordinates, as opposed to a rectified grid where the location of the
* points in the coordinate reference system is derivable from the properties of the grid itself. The transformation
* produced by the information associated with a referenceable grid will produce a grid as seen in the coordinate
* reference system, but the grid lines of that grid need not be straight or orthogonal, and the grid cells may be of
* different shapes and sizes.</P>
*
* <H3>Cell structures</H3>
* <P ALIGN="justify">The term "grid cell" refers to two concepts: one important from the perspective of data collection
* and portrayal, the other important from the perspective of grid coverage evaluation. The ambiguity of this term is a
* common cause of positioning error in evaluating or portraying grid coverages.</P>
*
* <P ALIGN="justify">The feature attribute values associated with a {@linkplain org.opengis.coverage.grid.GridPoint grid point}
* represent characteristics of the real world measured or observed within a small space surrounding a sample point represented
* by the grid point. The grid lines connecting these points form a set of {@linkplain org.opengis.coverage.grid.GridCell grid cells}.
* A common simplifying assumption is that the sample space is equally divided among the sample points, so that the sample spaces
* are represented by a second set of cells congruent to the first but offset so that each has a grid point at its centre.
* Evaluation of a grid coverage is based on interpolation between grid points, i.e., within a grid cell bounded by the grid
* lines that connect the grid points that represent the sample points.</P>
*
* <P ALIGN="justify">In the ISO 19123 International Standard, the term <cite>grid cell</cite> refers to the cell bounded
* by the grid lines that connect the grid points. The term <cite>sample space</cite> refers to the observed or measured
* space surrounding a sample point. The term <cite>footprint</cite> refers to a representation of a sample space in the
* context of some coordinate reference system.</P>
*
* <P ALIGN="justify">In dealing with gridded data, e.g., for processing or portrayal, it is often assumed that the size
* and shape of the sample spaces are a simple function of the spatial distribution of the sample points, and typically
* that the grid cells and the sample cells are congruent.</P>
*
* <P ALIGN="justify">In fact, the size and shape of the sample space are determined by the method used to measure or
* calculate the attribute value. In the simplest case, the sample space is the sample point. It is often a disc, a
* sphere, or a hypersphere surrounding the sample point. In the case of sensed data the size and shape of the sample
* space is also a function of the sensor model and its position relative to the sample point, and may be quite complex.
* Adjacent sample spaces may be coterminous or they may overlap or underlap.</P>
*
* <P ALIGN="justify">In addition to affecting the size and shape of the sample space, the measurement technique
* affects the applicability of the observed or measured value to the sample space. It is often assumed that the
* recorded value represents the mean value for the sample space. In fact, elements of the sample space may not
* contribute uniformly to the result, so that it is better conceived as a weighted average where the weighting
* is a function of position within the sample space. Interpolation methods may be designed specifically to deal
* with characteristics of the sample space.</P>
*
* <P ALIGN="justify">Transformation (e.g., rectification) between grid coordinates and an external coordinate
* reference system may distort the representation of the sample space in a way that causes interpolation errors.</P>
*
* @version ISO 19123:2004
* @since GeoAPI 2.0
*/
package org.opengis.coverage.grid;