netcdf surface { // For Surface Airways Observations (SAO's) // In general: // // There are two time fields, one as the actual observation time and the // other the nominal time of the observation. In other words, the actual // observation time may be 10 minutes before the hour but the nominal // time of the observation is actually on the hour. Time units follow // the UDUNITS convention of "seconds since" the data supplier defined // base time. // // The actual names chosen for the netCDF variables are still up to the // data supplier. The agreement amongst this group is that all the // code that reads in the data will NOT be variable name dependent. Code // will be written generically using the netCDF inquire functions or // will employ some sort of table look-up algorithm. The names I've // included for illustration purposes were mainly borrowed from the // conventions document to offer somewhat "generic" names for these // fields. Long names are data supplier defined, but should be included // and descriptive for self-documentation purposes. // // Units must be compatible with UDUNITS and consistent for a given // variable (ie. all temperatures written out in degrees C, even though // they are reported in C or F). That's why the "units" attribute is // critical for numeric variables that may be used in calculations. // // Again, these will be the MINIMUM variables required in files used // for surface observation data exchange. Any data supplier can add extra // variables needed to further identify a station and/or its observations. dimensions: record = UNLIMITED ; stn_name_len = ; stn_type_len = ; rep_type_len = ; WX_len = 40; cloud_layers = 5; CC_len = 8; cloudtype_len = 1; SAO_len = 256; variables: long wmo_id (record); wmo_id:long_name = "Numeric WMO Identifier"; wmo_id:_FillValue = ; wmo_id:reference = "Volume A of WMO Publication 9"; char stn_name (record, stn_name_len); stn_name:long_name = "Station name"; stn_name:_FillValue = "\0"; (use CHAR(0) in FORTRAN programs) stn_name:reference = ; float lat (record); lat:long_name = "Station latitude"; lat:_FillValue = ; lat:valid_range = ; lat:units = ; float lon (record); lon:long_name = "Station longitude"; lon:_FillValue = ; lon:valid_range = ; lon:units = ; float elev (record); elev:long_name = "Station elevation"; elev:_FillValue = ; elev:units = ; double time_obs(record) time_obs:long_name = "Time of observation"; time_obs:_FillValue = ; time_obs:units = "seconds since "; double time_nominal(record) time_nominal:long_name = "Nominal time of observation"; time_nominal:_FillValue = ; time_nominal:units = "seconds since " float T (record) T:long_name = "Temperature"; T:_FillValue = ; T:units = ; float TD (record) TD:long_name = "Dewpoint"; TD:_FillValue = ; TD:units = ; float P (record) P:long_name = "Station pressure"; P:_FillValue = ; P:units = ; float DIR (record) DIR:long_name = "Wind direction"; DIR:_FillValue = ; DIR:units = ; float SPD (record) SPD:long_name = "Wind speed"; SPD:_FillValue = ; SPD:units = ; float GUST (record) GUST:long_name = "Wind gusts"; GUST:_FillValue = ; GUST:units = ; float ALTIM (record) ALTIM:long_name = "Altimeter setting"; ALTIM:_FillValue= ; ALTIM:units = ; float VIS (record) VIS:long_name = "Visibility"; VIS:_FillValue = ; VIS:units = ; short WX (record, WX_len) WX:long_name = "Weather"; WX:_FillValue = ; WX:reference = "FMH-1, Table 9-8"; char stn_type(record, stn_type_len) stn_type:long_name = "Station type"; stn_type:_FillValue = ; stn_type:reference = "FMH-1"; char rep_type(record, rep_type_len) rep_type:long_name = "Report type"; rep_type:_FillValue = ; rep_type:reference = "FMH-1, Table 9-2"; short Ptend (record) Ptend:long_name = "Pressure tendency"; Ptend:_FillValue = ; Ptend:reference = "FMH-1, Table 9-14"; short delP (record) delP:long_name = "Pressure change"; delP:_FillValue = ; delP:units = ; float PRECIP_1 (record) PRECIP_1:long_name = "1-hourly precipitation amount"; PRECIP_1:_FillValue = ; PRECIP_1:units = ; PRECIP_1:reference = "ASOS Users Guide"; float PRECIP_3 (record) PRECIP_3:long_name = "3-hourly precipitation amount"; PRECIP_3:_FillValue = ; PRECIP_3:units = ; PRECIP_3:reference = "ASOS Users Guide"; float PRECIP_6 (record) PRECIP_6:long_name = "6-hourly precipitation amount"; PRECIP_6:_FillValue = ; PRECIP_6:units = ; PRECIP_6:reference = "ASOS Users Guide"; float PRECIP_24 (record) PRECIP_24:long_name = "24-hourly precipitation amount"; PRECIP_24:_FillValue = ; PRECIP_24:units = ; PRECIP_24:reference = "ASOS Users Guide"; float Tmax_24(record) Tmax_24:long_name = "24 hour maximum temperature"; Tmax_24:_FillValue = ; Tmax_24:units = ; Tmax_24:reference = "FMH-1"; float Tmin_24(record) Tmin_24:long_name = "24 hour minimum temperature"; Tmin_24:_FillValue = ; Tmin_24:units = ; Tmin_24:reference = "FMH-1"; char CC (record, CC_len, cloud_layers) CC:long_name = "Cloud cover"; CC:_FillValue = "\0"; CC:reference = "FMH-1 and ASOS Users Guide"; float ZCL (record, cloud_layers) ZCL:long_name = "Cloud base height"; ZCL:_FillValue = ; char cloudtype (record, cloudtype_len, cloud_layers) cloudtype:long_name = "Cloud measurement type"; cloudtype:_FillValue = "\0"; cloudtype:reference = "FMH-1, Table 9-6"; char message(record, SAO_len) message:long_name = "Original undecoded message."; message:_FillValue = "\0"; :title = "NUWG SAO definition"; }