Ignore "bounds"-variables the proper way
bounds-Variables do not need units or standard/long names. This is currently implemented via name comparison, i.e. we expect variables with the suffices _bnd,_bnds, _bounds to be bounds. This isn't necessarily the case. Here is an excerpt from an e-mail conversation between Eileen and me about this issue.
Variablen die XXX_bounds heißen, brauchen keine standard_/long_names oder units - wäre meine Meinung. Da würde ich Mittwoch aber noch einmal in die Runde fragen.
Variablen mit XXX_bounds brauchen tatsächlich weder standard_/long_names noch units. Allerdings müssen diese dann woanders referenziert werden. Also z.B. latitude_bounds müsste als attribut unter latitudes auftauchen. Hört sich für mich erst einmal sehr aufwendig an, das zu checken, aber vielleicht hast du ja eine Idee...
Dass sie standard- und longnames nicht haben sollten war schon vorher fuer "_bnd" und "_bnds" drin, nur noch nicht fuer "_bounds", was ich natuerlich ergaenzen kann.
Die Referenzierung kann ich zwar technisch ueberpruefen und auch zu den Fehlern hinzufuegen falls sie fehlt, aber ich bin mir nicht sicher ob wir das ueberhaupt brauchen, da CF von alleine schon ueber alles moegliche meckert was in den Bounds schieflaufen. Ich habe mir hier gerade folgenden fehlerhaften Fall konstruiert:
double time(time) ;
time:long_name = "Time" ;
time:standard_name = "time" ;
time:units = "days since 1850-01-01 0:0:0" ;
time:calendar = "gregorian" ;
time:bounds = "time_bounds" ;
double time_bounds(bound) ;
Der Fehler ist, dass time nicht unter den dimensions von time_bounds vorkommt. Hier hat mir der CF-Checker bereits 3 Fehlermeldungen ausgespuckt:
§7.1 Cell Boundaries
* Boundary variable time_bounds specified by time should have at least two dimensions to enclose the base case of a one dimensionsal variable
* Boundary variable coordinates (for time) are in improper order: ('bound',). Bounds-specific dimensions should be last
* The number of dimensions of the variable time is 1, but the number of dimensions of the boundary variable time_bounds is 1. The boundary variable should have 2 dimensions
Der einzige moegliche Fall, der nicht abgedeckt ist, ist dass es eine Variable time_bounds gibt, die selbst weder eine Dimension time hat noch von time referenziert wird, also so:
double time(time) ;
time:long_name = "Time" ;
time:standard_name = "time" ;
time:units = "days since 1850-01-01 0:0:0" ;
time:calendar = "gregorian" ;
double time_bounds(bound) ;
Den zu ergaenzen ist nicht schwierig, aber da ich nun das Problem besser verstehe waere es vermutlich klueger den Check allgemein komplett anders aufzuziehen: Statt meiner suffix_liste von moeglichen Bounds-Variablen wie ich sie aktuell implementiert habe waere es klueger alle Variablen zu durchlaufen die ein Attribut "bounds" haben. Der Wert darin muss eine Variable sein, fuer die es ok ist, wenn standard_name, long_name und units fehlen. Ist es ein Fehler wenn alle drei existieren?