Re: [netcdf-java] Replacing variable-length dimensions in CDM with ArraySequence

Clarification 1:

I was probably too terse in my previous message about variable-length
dimensions. Let me elaborate a bit.

All existing dimensions (including UNLIMITED) have
(at any point in time) a fixed known size and every use of that dimension has that size. Note that an UNLIMITED dimension's size may change over time, but it is still the case that all occurrences of it have the same size at any point in time.

A variable-length dimension (often represented by "*") has potentially
a different size for every occurrence at any given point in time.
The pretense that a variable-length dimension is a dimension causes
significant code and use complications in the CDM data model.

An ArraySequence is particular form of CDM Array, similar to an
Array Structure, that encapsulates the fact the the length of the sequence can differ for each ArraySequence instance. The goal of the proposed change is to isolate/encapsulate true variable-length objects within an ArraySequence object.

So, if we have, for example,
        int x(5,*)
then this would be represented as a 5 element array of
ArraySequence objects, and each ArraySequence object
contains a variable length vector of integers.
Using the netcdf-4 model, this would be:
        types:    int(*) sequence_t
        variables: sequence_t x(5)

The requirement on e.g. IOSP developers is that they create ArraySequence objects, and the requirement on the client users of CDM (via the netcdf-Java library) is that they recognize ArraySequence objects.

My speculation is that anyone who uses variable-length dimensions already has to make code exceptions to process it, and it is probable that only that code would need to be changed to deal with ArraySequence.

Note: ArraySequences actually already exist in the CDM code, but are currently not used (AFAIK).

=Dennis Heimbigner
 Unidata



  • 2016 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdf-java archives: