[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: 960523: A Character String Dimension
- Subject: Re: 960523: A Character String Dimension
- Date: Thu, 23 May 1996 10:38:02 -0600
>Organization: Institute for Stratospheric Chemistry(ICG-1), Institute for the
>Chemistry and Dynamics of the Geosphere
>Keywords: 199605231111.AA16583
Danny,
> If I am most specific hopfillxy it should be clearer.
>
> What I would like to do is have a data structure that has at least two
> dimentions. An unlimited time dimension and a parameter dimension that could
> typically be between 50 and 300 in length. I would like to assign
> each parameter with a dimension value that is a string i.e. H2O or HNO3
> or PV etc.
Currently, netCDF only supports one variable-length dimension per file, the
unlimited dimension. When another variable-length dimension is needed, e.g
for "ragged arrays" with variable row-length, there are several approaches
to simulating it:
- Just use a maximum dimension (e.g. 300) for the rows and waste space
for those variables needing less than the full 300. This can be
unacceptable if the maximum dimension is much larger than the typical
value, since it wastes so much space.
- Instead of a two-dimensional variable, use two one-dimensional
variables, one of which is an index into the other, that tells where
each variable-length row should start. This saves space, but is
inefficient if you later have to extend any rows or if the rows change
sizes frequently, requiring some sort of garbage collection.
- Use a different fixed dimension for each variable-sized row. As you
have noted, this runs up against the arbitrary limit of 100 dimensions
per file, and requires copying all the data if any of the row sizes ever
change.
- Use multiple files for multiple unlimited dimensions. This won't work
if a single variable needs two variable dimensions.
> My desire to do this was because I thought that if I had to define a dimension
> for each parameter then I would quickly run foul of the limit(albeit
> arbitrary) of 100 dimension. However I have now realised that what I can
> easily do is just define each parameter to a variable that has the requisit
> string for its name. The only limitation that this gives me is that it is
> somewhat inelegent
> and will be a little slow to place data into the data structure. So if there
> is some
> obvious way for me to achieve this please let me know however if it requires
> any thought on your part then I think I have a method that will be adequate
> so please do not go to too much trouble.
That's another solution I hadn't thought of. I don't know any other
obvious solutions with the current format.
--Russ
______________________________________________________________________________
Russ Rew UCAR Unidata Program
address@hidden http://www.unidata.ucar.edu