We are also in support of @davidhassell 's proposal.

Several field variables may share the same domain (output parameters computed 
on the same grid for numerical model simulations, measurements and derived 
geophysical data acquired by an instrument in remote-sensing, etc...) but the 
current conventions define the domain only as an abstract concept which is 
implemented with attributes on the field variables: in order to identify the 
domains available in a file (one of our use cases), you have to analyze all the 
field variables available in the file, parse their attributes to extract 
domain-related information and then compare the extracted domains to remove 
duplicates. So listing domains is possible today but it sure is more involved 
than it should.

Materializing the domain variables as proposed here would make this process a 
lot easier and probably result in a clearer description of the data.

In the changes proposed in 
https://github.com/cf-convention/cf-conventions/pull/302, it is stated that:
> The constructs contained by the field and domain constructs cannot exist 
> independently, with the exception of the domain construct itself that may be 
> part of a field construct or exist on its own

and 

> In CF-netCDF, domain information is stored either implicitly via data 
> variable attributes (such as `coordinates`), or explicitly in a domain 
> variable. In the latter case, the domain exists without reference to a data 
> array.

Does it mean that when a domain construct is part of a field construct it has 
to be stored exclusively via attributes (as it is done with the current 
conventions) or is it possible to also have a reference to a domain variable?

Something like the following pseudo-CDL:
```
float some_field1(time, track, scan);
  : coordinates = "time lat lon";
  : grid_mapping = "crs";
  : domain = "some_domain";

float some_field2(time, track, scan);
  : coordinates = "time lat lon";
  : grid_mapping = "crs";
  : domain = "some_domain";

int some_domain;
  : dimensions = "time track scan";
  : coordinates = "time lat lon";
  : grid_mapping = "crs";

// Attributes for these variables have been omitted for conciseness
float lon(track, scan);
float lat(track, scan);
double time(time);
int crs;
```
It would still be compatible with existing software because domain information 
remains available as attributes on the field variables, but it would also 
clarify the relation between a domain variable and the field variables that use 
this domain.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/cf-convention/cf-conventions/issues/301#issuecomment-708240409

This list forwards relevant notifications from Github.  It is distinct from 
cf-metad...@cgd.ucar.edu, although if you do nothing, a subscription to the 
UCAR list will result in a subscription to this list.
To unsubscribe from this list only, send a message to 
cf-metadata-unsubscribe-requ...@listserv.llnl.gov.

Reply via email to