Hello all
A set of range-related classes (Range, NumericRange, MeasurementRange,
RangeFormat, and RangeSet to arrive soon) have been committed. One
purpose of those classes is to specify the values where data are
available, typically as elevation (/z/) values or time (/t/) values.
Many applications or file formats use single values for /z/ and /t/. For
example NetCDF files typically specify the /z/ values of data slices in
a "height" or "depth" vector, and /t/ values in a "time" vector. However
I suggest to always work with ranges (or intervals) in Apache SIS
mechanic. For example instead of specifying a single /t/ instant for any
kind of data, we would always specify a [/start time/ ... /end time/]
range (even if the range is very short in time, there is no
instantaneous measurement). The rational are:
* Consistency with the (/x/,/y/) dimensions: when specifying a
bounding box, we implicitly specify range of values for the /x/ and
/y/ dimensions. We are better to treat every dimensions in the same way.
* Avoid tricky questions like "how far is it reasonable to
interpolate?". If time were specified only as single /t/ values and
if the user asks for data 3 days after the nearest time, how to know
if it is reasonable to interpolate? If the data have a "/start
time/" and "/end time/" instead, the question can be solved much
more easily. This topic had been raised in a previous
"Meteo-oceanography" meeting at OGC.
Of course, user interfaces are free to replace ranges by single values
in their widgets if they wish.
However we have a minor name clash. This Range class were designed in
old days before ISO 19123. Now, we have the ISO 19123 standard for
Coverage features (which include rasters). If we consider a Coverage as
a kind of function, then according ISO 19123 terminology the "/domain/"
is the set of valid inputs (typically geodetic coordinates, but not
necessarily) and the "/range/" is the set of valid outputs. So we have a
risk of function between the Range class defined as a [/minimum/ ...
/maximum/] tupple in the sis-utility module, and the "/range/" concept
defined in ISO 19123 as the set of possible output values of a coverage
(e.g. the set of pixel values in a raster).
So we have a choice:
* Keep the current Range name on the assumption that calling a
[/minimum/ ... /maximum/] tupple a "range" is common enough to avoid
confusion;
* Rename Range into something else, for example Interval, in order to
make Apache SIS fit better with ISO terminology (in this case,
avoiding a name clash between two closely related concepts).
Any opinion?
Martin