// REFERENCE: Federal Meteorological Handbook No. 7: Weather Radar // Observations; part A. netcdf rarep { dimensions: nlon = 90; // MDR grid size nlat = 120; // MDR grid size id_len = 12; // station ID radar_len = 12; // radar-type length rpt_type_len = 4; // report-type length ncover = 3; // number of coverage groups nprecip = 3; // number of precip. types within group nobject = 5; // number of echo-objects nazran = 8; // number of azimuth/range pairs nwidth = 4; // number of widths nmove = 4; // number of movements nheight = 8; // number of altitudes remark_len = 40; // remark length report = UNLIMITED; variables: // // Manually digitized radar summary-grid: // long mdr_time; mdr_time:long_name = "MDR summary time"; mdr_time:units = "YYMMDDHHMMSS UTC"; float lon(nlon); lon:long_name = "longitude"; lon:units = "degrees_east"; float lat(nlat); lat:long_name = "latitude"; lat:units = "degrees_north"; byte mdr(nlat, nlon); // 1*nlon*nlat mdr:long_name = "manually digitized radar summary"; // // Individual radar-station observations // char id(report, id_len); // Station ID: call sign or, if numeric, WMO station number. id:long_name = "station ID"; float stn_lat(report); stn_lat:long_name = "station latitude"; stn_lat:units = "degrees_north"; float stn_lon(report); stn_lon:long_name = "station longitude"; stn_lon:units = "degrees_east"; long rpt_time(report); rpt_time:long_name = "report time"; rpt_time:units = "YYMMDDHHMMSS UTC"; char radar_type(report, radar_len); // "WSR_57", "WSR-74C", "WSR-74S", "AN/FPS-77", "AN/FPS-103", // "WR100-5", "CPS-9" radar_type:long_name = "radar type"; int opstat(report); // Operational status of the radar. opstat:long_name = "operational status"; opstat:units = "ennumerated in rarep.h"; char rpt_type(report, rpt_type_len); // Type of report: "SPL", "COR" rpt_type:long_name = "report type"; int config(report); // Configuration pattern of the echo system. config:long_name = "echo configuration"; config:units = "ennumerated in rarep.h"; byte coverage(report, ncover); // Proportion of precipitation type in configuration. Note that // there can be more than one coverage group (e.g. the coded // specification "3TRW4R-" has two). A coverage value of 0 // indicates no more precip. specs. coverage:long_name = "amount of coverage"; coverage:units = "1/10"; byte precip(report, ncover, nprecip); // Precipitation types in a coverage group. There can be more // than one because the types could be mixed (e.g. the coded // specification "10R-ZR-S" has three types). A precip-type of 0 // indicates no more precip-types. precip:long_name = "precipitation type"; precip:units = "ennumerated in rarep.h"; byte intensity(report, ncover, nprecip); // Intensity of the precipitation. When freezing or frozen // precipitation is mixed with liquid, the intensity is that of the // liquid precipitation. intensity:long_name = "echo intensity"; intensity:units = "ennumerated in rarep.h"; int trend(report); // Intensity trend of the precipitation. When more than one // coverage group is reported, the trend is that of the first // reported group. trend:long_name = "intensity trend"; trend:units = "ennumerated in rarep.h"; byte object(report, nobject); // The j-th echo-object of report "i" uses nazran[i][j] azimuth/ // range pairs, nwidth[i][j] widths, nmove[i][j] movements, // and height[i][j] heights. The echo-object is of type // object[i][j]. A type of 0 indicates no more echo-objects. // For a given report, the `object' vector must be processed // sequentially and the `nazran', `nwidth', `nmove', and `nheight' // values must be accumulated in order to determine the starting // positions in the `azimuth', `range', `width', `from', `speed', // and `height' vectors. object:long_name = "echo object"; object:units = "ennumerated in rarep.h"; byte nazran(report, nobject); // Number of "azimuth/range" slots used by each echo-object. nazran:long_name = "number of AZRANs"; byte nwidth(report, nobject); // Number of "width" slots used by each echo-object. nwidth:long_name = "number of widths"; byte nmove(report, nobject); // Number of "movement" slots used by each echo-object. nmove:long_name = "number of movements"; byte nheight(report, nobject); // Number of "height" slots used by each echo-object. nheight:long_name = "number of heights"; float azimuth(report, nazran); // Bearing associated with an echo-object. azimuth:long_name = "echo-object azimuth"; azimuth:units = "degrees_true"; float range(report, nazran); // Range associated with an echo-object. range:long_name = "echo-object range"; range:units = "kilometers"; float width(report, nwidth); // Width associated with an echo-object. // Valid only when positive. For cells, this is the diameter. width:long_name = "echo-object width"; width:units = "kilometers"; float from(report, nmove); // Movement direction associated with an echo-object. // from==0 && speed==0 => no movement from:long_name = "echo-object from-direction"; from:units = "degrees_true"; float speed(report, nmove); // Movement speed associated with an echo-object. // from==0 && speed==0 => no movement speed:long_name = "echo-object speed"; speed:units = "meter/second"; float height(report, nheight); // Altitude associated with an echo-object. height:long_name = "echo-object altitude"; height:units = "meters"; char remarks(report, remark_len); // Each occupies 8 characters (including leading space). // Each occupies 4 characters (including leading space). // // Global attributes: // :format = "1.0"; :title = "radar observations"; :history = "(yy-mm-dd hh:mm:ss tzn) program[a.b] arg1 arg2 ..."; :author = "steve@unidata.ucar.edu"; }