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

Reply via email to