Re: metar.cdl

NOTE: The decoders mailing list is no longer active. The list archives are made available for historical reasons.

On Mon, 26 Apr 2004, Jim Cowie wrote:


Some of these features would have been nice if they were in place
earlier, but we would have to change some code to handle the new
variable names, and we don't have a lot of resources to do that. So
I doubt we'd be able to make use of this any time soon. Will adding
a time dimension on the reports cause problems with IDV or other
display apps?

Jim,

It will cause some code changes but I believe that the IDV folks are
looking at implementing it since the new format makes for better data
access.


Three times per hour is probably enough for the METARs
on the NOAAport feed, but if you had higher time resolution (I hear
that you can get 5-minute ASOS data), and set the CDL to a higher
number, would the decoder handle it?

Right now it set at 3 but scanning metar the code it would not be hard to
implement a user configuration for different values.

Robb...


Robb Kambic wrote:
> Jim,
>
> I've been working on a new cdl for the metar data. Trying to merge some
> variables with different units and making the names more human readable.
> Also, there is only one record per station so I have 3 slots available so
> up to reports per hour can be stored. If more than 3 reports arrive per
> station the appropriate slot is overwritten. Would this scheme fit in with
> your work? Appended is the cdl.
>
> Robb...
>
> netcdf metar  {                            // metar netCDF definition
>
> dimensions:
>    station = UNLIMITED ;
>    station_name_len = 4;
>    interval = 3 ;
>    interval_minutes_len = 5 ;
>    time_len = 20 ;
>    vis_len = 2 ;
>    weather_len = 16;
>    report_len = 192;
>
> variables:
>
>    // Gives the time ranges for the intervals 1-3
>    char interval_minutes( interval, interval_minutes_len ) ;
>            interval_minutes:long_name = "minutes range for interval";
>            interval_minutes:_FillValue = "\0";
>
>    // Station information
>    char station( station, station_name_len ) ;
>            station:long_name = "Station name";
>            station:_FillValue = "\0";
>            station:reference = "sfmetar_sa.tbl";
>    long wmo_id( station ) ;
>            wmo_id:long_name = "Numeric WMO Identifier";
>            wmo_id:_FillValue = -99999;
>            wmo_id:reference = "Air Force station bulletin";
>    float latitude( station ) ;
>            latitude:long_name = "Station latitude";
>            latitude:_FillValue = -99999.f;
>            latitude:valid_range = -90.0, 90.0;
>            latitude:units = "degrees";
>    float longitude( station ) ;
>            longitude:long_name = "Station longitude";
>            longitude:_FillValue = -99999.f;
>            longitude:valid_range = -180.0, 180.0;
>            longitude:units = "degrees";
>    int elevation( station ) ;
>            elevation:long_name = "Station elevation";
>            elevation:_FillValue = -99999;
>            elevation:units = "meters";
>
>    // Report time information
>    char datetime( station, interval, time_len ) ;
>            datetime:long_name = "Observation time";
>            datetime:_FillValue = "\0";
>                 // units YYYY-MM-DD hh:mm:ssZ  (ISO 8601)
>    long time_observation( station, interval ) ;
>            time_observation:long_name = "time of Observation";
>            time_observation:_FillValue = -99999;
>            time_observation:units = "seconds since 1970-01-01 00 UTC";
>    long time_nominal( station, interval ) ;
>            time_nominal:long_name = "time nominal";
>            time_nominal:_FillValue = -99999;
>            time_nominal:units = "seconds since 1970-01-01 00 UTC";
>
>    // Wind
>    int wind_from_direction( station, interval ) ;
>            wind_from_direction:long_name = "Wind From Direction";
>            wind_from_direction:_FillValue = -99999;
>            wind_from_direction:valid_range = 0, 360;
>            wind_from_direction:units = "degrees";
>    float wind_speed( station, interval ) ;
>            wind_speed:long_name = "Wind Speed";
>            wind_speed:_FillValue = -99999.f;
>            wind_speed:units = "m/s";
>    float wind_gust( station, interval ) ;
>            wind_gust:long_name = "Wind Gust";
>            wind_gust:_FillValue = -99999.f;
>            wind_gust:units = "m/s";
>    int wind_from_direction_min( station, interval ) ;
>            wind_from_direction_min:long_name = "wind from direction minimum";
>            wind_from_direction_min:_FillValue = -99999;
>            wind_from_direction_min:valid_range = 0, 360;
>            wind_from_direction_min:units = "degrees";
>    int wind_from_direction_max( station, interval ) ;
>            wind_from_direction_max:long_name = "wind from direction maximum";
>            wind_from_direction_max:_FillValue = -99999;
>            wind_from_direction_max:valid_range = 0, 360;
>            wind_from_direction_max:units = "degrees";
>    int wind_peak_from_direction( station, interval ) ;
>            wind_peak_from_direction:long_name = "Peak wind direction";
>            wind_peak_from_direction:_FillValue = -99999;
>            wind_peak_from_direction:valid_range = 0, 360;
>            wind_peak_from_direction:units = "degrees";
>    float wind_peak_speed( station, interval ) ;
>            wind_peak_speed:long_name = "Peak wind speed";
>            wind_peak_speed:_FillValue = -99999.f;
>            wind_peak_speed:units = "m/s";
>    char wind_peak_time( station, interval, time_len ) ;
>            wind_peak_time:long_name = "Peak wind time";
>            wind_peak_time:_FillValue = "\0";
>                 // units YYYY-MM-DD hh:mm:ssZ  (ISO 8601)
>
>    // Visibility
>    float visibility_in_air( station, interval ) ;
>            visibility_in_air:long_name = "visibility in air";
>            visibility_in_air:_FillValue = -99999.f;
>            visibility_in_air:units = "miles";
>    char visibility_in_air_direction( station, interval, vis_len ) ;
>            visibility_in_air_direction:long_name = "visibility in air 
direction";
>            visibility_in_air_direction:_FillValue = "\0";
>            visibility_in_air_direction:units = "degrees";
>    float visibility_in_air_vertical( station, interval ) ;
>            visibility_in_air_vertical:long_name = "Vertical visibility in 
air";
>            visibility_in_air_vertical:_FillValue = -99999.f;
>            visibility_in_air_vertical:units = "meters";
>    float visibility_in_air_surface( station, interval ) ;
>            visibility_in_air_surface:long_name = "Visibility in air at 
surface";
>            visibility_in_air_surface:_FillValue = -99999.f;
>            visibility_in_air_surface:units = "meters";
>
>    // Clouds
>    float low_cloud_area_fraction( station, interval ) ;
>            low_cloud_area_fraction:long_name = "Low cloud area fraction";
>            low_cloud_area_fraction:_FillValue = -99999.f;
>            low_cloud_area_fraction:units = "";
>    float low_cloud_base_altitude( station, interval ) ;
>            low_cloud_base_altitude:long_name = "Low cloud base";
>            low_cloud_base_altitude:_FillValue = -99999.f;
>            low_cloud_base_altitude:units = "meters";
>    float middle_cloud_area_fraction( station, interval ) ;
>            middle_cloud_area_fraction:long_name = "Middle cloud area 
fraction";
>            middle_cloud_area_fraction:_FillValue = -99999.f;
>            middle_cloud_area_fraction:units = "";
>    float middle_cloud_base_altitude( station, interval ) ;
>            middle_cloud_base_altitude:long_name = "Middle cloud base";
>            middle_cloud_base_altitude:_FillValue = -99999.f;
>            middle_cloud_base_altitude:units = "meters";
>    float high_cloud_area_fraction( station, interval ) ;
>            high_cloud_area_fraction:long_name = "High cloud area fraction";
>            high_cloud_area_fraction:_FillValue = -99999.f;
>            high_cloud_area_fraction:units = "";
>    float high_cloud_base_altitude( station, interval ) ;
>            high_cloud_base_altitude:long_name = "High cloud base";
>            high_cloud_base_altitude:_FillValue = -99999.f;
>            high_cloud_base_altitude:units = "meters";
>
>    // Temperature
>    float air_temperature( station, interval ) ;
>            air_temperature:long_name = "Air temperature at 2 meters";
>            air_temperature:_FillValue = -99999.f;
>            air_temperature:units = "Celsius";
>    float dew_point_temperature( station, interval ) ;
>            dew_point_temperature:long_name = "Dew point temperature at 2 
meters";
>            dew_point_temperature:_FillValue = -99999.f;
>            dew_point_temperature:units = "Celsius";
>
>    // Pressure
>    float air_pressure( station, interval ) ;
>            air_pressure:long_name = "Air pressure at surface";
>            air_pressure:_FillValue = -99999.f;
>            air_pressure:units = "hectoPascal";
>    float air_pressure_at_sea_level( station, interval ) ;
>            air_pressure_at_sea_level:long_name = "Air pressure at sea level";
>            air_pressure_at_sea_level:_FillValue = -99999.f;
>            air_pressure_at_sea_level:units = "hectoPascal";
>
>    // Weather
>    char weather( station, interval, weather_len ) ;
>            weather:long_name = "Weather phenomenia";
>            weather:_FillValue = "\0";
>            weather:reference = "WMO #306, code table 4658";
>
>    // Precipitation
>    float snowfall_amount_last_hour( station, interval ) ;
>            snowfall_amount_last_hour:long_name = "Snow fall amount last hour";
>            snowfall_amount_last_hour:_FillValue = -99999.f;
>            snowfall_amount_last_hour:units = "inches";
>    float snowfall_amount( station, interval ) ;
>            snowfall_amount:long_name = "Snow fall amount on ground";
>            snowfall_amount:_FillValue = -99999.f;
>            snowfall_amount:units = "inches";
>    float precipitation_amount_hourly( station, interval ) ;
>            precipitation_amount_hourly:long_name = "Hourly precipitation 
amount";
>            precipitation_amount_hourly:_FillValue = -99999.f;
>            precipitation_amount_hourly:units = ".01 inches";
>    float precipitation_amount_24( station, interval ) ;
>            precipitation_amount_24:long_name = "24 hour precipitation amount";
>            precipitation_amount_24:_FillValue = -99999.f;
>            precipitation_amount_24:units = ".01 inches";
>
>    // Raw report with remarks
>    char report( station, interval, report_len ) ;
>            report:long_name = "Original report";
>            report:_FillValue = "\0";
>            report:reference = "max length 192";
>
>    :title = "METAR definition";
>    :version = 2.0;
>
> //      The metar2nc decoder is dependant on the netCDF variables names
> //      because it reads the cdl file to determine the variables to be
> //      included in the netcdf file.  A user can comment out or delete
> //      variables not to be included in the output file with one exception,
> //      the variable 'station' must be included as the first or second 
position
>
> data:
>
>  interval_minutes
>   "45-04", // top of hour report interval
>   "05-24",
>   "25-44" ;
>
> }
>
> ==============================================================================
> Robb Kambic                                   Unidata Program Center
> Software Engineer III                         Univ. Corp for Atmospheric 
Research
> rkambic@xxxxxxxxxxxxxxxx              WWW: http://www.unidata.ucar.edu/
> ==============================================================================


--
Jim Cowie
NCAR/RAP
cowie@xxxxxxxx
303-497-2831


==============================================================================
Robb Kambic                                Unidata Program Center
Software Engineer III                      Univ. Corp for Atmospheric Research
rkambic@xxxxxxxxxxxxxxxx                   WWW: http://www.unidata.ucar.edu/
==============================================================================


  • 2004 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the decoders archives: