P.S. I neglected the obvious further simplification: replace "t(o)" with "t(t)". Time becomes a simple netCDF coordinate variable in the synchronized representation of trajectories. Similar for synchronized profiles and time series.

===========================

On 10/13/2010 10:39 AM, Steve hankin wrote:
Hi All,

2 cents: Since this is a new twist on previously discussed feature types, the tires of alternative approaches probably deserve to be kicked. What's special about this use case is that the trajectories are all synchronized in time. (Though with differing start/stop times.) Analogous cases exist in profiles -- for example the Levitus ocean profile collection has all been interpolated to common depths. Similarly, time series collections are commonly synchronized.

The synchronization of coordinates opens a potential door to great simplicity of representation.

    metadata(i)    data(i,o)     x(i,o) y(i,o) z(i,o) t(o)

where i is the instance (which of the trajectories), o is simply the time index. The possible costs are proliferation in numbers of ways to represent similar things and file size. The question that I'd be inclined to ask of Ute and Rich would be a judgment call on the cost in file size that would result from filling missing values at the start/end of each individual trajectory. Optionally the metadata could include

    tstart_index(i)   tend_index(i)

This representation seems _the simplest from the standpoint of application code (reading)_. Synoptic view are simply projection at fixed "o" index; the history of an individual trajectory is simply a projection at a fixed "i" index.

-----

For each of the three basic structure -- time series, profiles, and trajectories -- discussed at https://cf-pcmdi.llnl.gov/trac/wiki/PointObservationConventions we have three approaches: multi-dimensional, ragged contiguous, ragged indexed. ("flattened" omitted here). Effectively what I am kicking the tires on here is a 4th approach: a "synchronized representation", which would be the simplest of all of them. If we replaced "t(o)" with "t(i,o)" above the "synchronized representation" generalizes into the "multi-dimensional representation" of trajectories.

By the way, it is quite likely that *none *of the above precisely addresses the needs of the model that is producing the data. Does that model know in advance what the maximum number of tracer particles will be? If that number is known, then the "Ragged array (indexed) representation" of trajectories is arguably _the simplest from the standpoint of model (writing)._ (And already documented. ;-) )

     - Steve

============================

On 10/13/2010 5:49 AM, Jonathan Gregory wrote:
Dear Rich

With the approach you suggest, if you wanted to obtain all the
particle positions at a particular time step, would you need to read
all tindex for all particles?  (I'm a little fuzzy on what the CDL
would look like...)
No, I don't think so. Either of John's proposed packing mechanisms would
allow you to get just the tindex (and x y z) that applied to a particular
particle without reading the others.

Cheers

Jonathan
_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata
_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to