[cf-pointobsconvention] Draft 2 comments

Hi John,

Thanks for taking the time to come up with this specification. It
looks like a good start. I do have some concerns about the complexity
of the spec, though, and would like to suggest a few changes that
might make it easier to use.

I believe that this spec is too complicated for most potential
users. For instance, it appears that any software that is able to read
these collections will have to have parse a SQL-like expression in
order to interpret a collection. Another source of complexity is the
varying dimensionality of the dimensions and observations (either 1D
or 2D depending on the type of data). Still another example is the use
of character variables for storing attribute data for collections
(should software assume that any character variable is an attribute)?

It's also difficult to edit data with this convention. How would I remove an
individual profile from a collection? Or, worse, what if points needed
to be added or removed from an individual profile? I'd have to
regenerate the entire netCDF file in the latter case. That makes this
convention only practical as an archive format.

An alternative would be to store each individual
profile/trajectory/time series in a separate netCDF file. Collections
would consist of a set of netCDF files stored in a zip or jar
file. The zip file could also contain some sort of (XML?) manifest
file that could contain metadata about the collection as a whole. Any
metadata associated with an individual profile would be stored as a
global attribute in the appropriate netCDF file. Editing a profile
would be as simple as extracting the netCDF file from the archive,
rewriting it, and then storing it back in the jar file.

To make it even easier for consumers of this data, I would also
restrict the data type of all variables to double. Also, all four x,y,z,t coordinates
would be required.

Some examples (from your CDL examples):

Collection of point data
------------------------
Unchanged (just one file in archive)

Collection of profile data
--------------------------
For each netCDF file:

variables;
double lon(1);
double lat(1);
double z(obs);
double time(1);

double humidity(obs);
double temperature(obs);
double pressure(obs);

Collection of trajectories
--------------------------
For each netCDF file:

variables;
double lon(obs);
double lat(obs);
double z(obs);
double time(obs);

double humidity(obs);
double temperature(obs);
double pressure(obs);

Station time series
-------------------
variables;
double lon(1);
double lat(1);
double z(1);
double time(obs);

double temperature(obs);