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)

Reply via email to