Martin Desruisseaux created SIS-447:
---------------------------------------
Summary: NumericCoverage as a parent of GridCoverage
Key: SIS-447
URL: https://issues.apache.org/jira/browse/SIS-447
Project: Spatial Information Systems
Issue Type: New Feature
Components: Features
Affects Versions: 1.0
Reporter: Martin Desruisseaux
Fix For: 1.1
The base type of all coverage (including raster) data is {{Coverage}}, which is
defined by ISO 19123. A {{Coverage}} is not necessarily a grid (raster). It is
rather a collection of "geometry - record" pairs where the geometries are
pixels in the particular case of rasters. ISO 19123 defines many {{Coverage}}
subtypes: {{DiscreteCoverage}}, {{ContinuousCoverage}}, _etc._. The types which
seem closest to a raster are {{ContinuousQuadrilateralGridCoverage}} and
{{DiscreteGridPointCoverage}}. However even those types are more complex than
the majority of the needs to be handled by Apache SIS. For now SIS defines only
one class, {{GridCoverage}}, which is simpler (at the cost of being less
powerful) than ISO 19123 classes. We tried to define {{GridCoverage}} in a way
that should not conflict with future ISO 19123 compliant development.
A key simplification done in SIS {{GridCoverage}} compared to ISO 19123
{{Coverage}} is that, in addition of assuming that values are distributed on a
grid, it also assumes that all values are stored as numbers. Those numbers may
be associated to categories (e.g. _1 = clouds_), but they still numbers. By
contrast ISO 19123 allows the storage of more complex structures: {{Record}}
where each record may contain other records. An ISO 19123 {{Record}} may be
seen as a simple {{Feature}}, i.e. a feature where the multiplicity of all
attributes is constrained to [1…1].
In the same way than ISO 19123 allows various coverage types (not necessarily
gridded) and defines subclasses for the particular case of coverage using a
grid, we may want a more general class in Apache SIS for any coverage storing
data as numbers (as a simplification of the more general {{Record}} type). The
methods could be:
{code:java}
public abstract class NumericCoverage {
public abstract CoordinateReferenceSystem getCoordinateReferenceSystem();
public abstract List<SampleDimension> getSampleDimensions();
}
{code}
{{GridCoverage}} would extend that class and add a {{getGridGeometry()}}
method. The main difference between this proposed {{NumericCoverage}} compared
to ISO 19123 {{Coverage}} is the {{getSampleDimensions()}} method, which can be
seen as a specialization of the following method:
{code:java}
public interface Coverage {
RecordType getRangeType();
}
{code}
The class name is difficult to chose. Current proposal is {{NumericCoverage}}.
We found usage of that term on a web page about [Atmospheric Dispersion
Index|http://cwfis.cfs.nrcan.gc.ca/background/summary/adi]: _"The coverage
descriptions, which indicate few, scattered, broken, or overcast, are
translated into numeric coverage classes."_ — while I'm not sure it describes
the same thing. We searched also {{NumericalCoverage}} but found less relevant
usages.
This {{NumericCoverage}} class would be a complement of ISO 19123 classes. It
should not prevent us to implement more fully ISO 19123 in the future. The
"Numeric" part in {{NumericCoverage}} describes a characteristic of the _range_
(ISO 19123 coverages have two parts: _domain_ and _range_), in the same way
than the "Discrete" and "Continuous" parts in ISO 19123 {{DiscreteCoverage}}
and {{ContinuousCoverage}} also refer to the range.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)