NOTE: The decoders
mailing list is no longer active. The list archives are made available for historical reasons.
On Fri, 16 Dec 2005, DEROGNAT, Claude wrote: > Dear Rob, > > Now, I read 'WX' ('Weather phenomenality direction') > but UNITS ('wind speed units') is still empty (for me). > I can read the attribution which is agree with the > values written in the metar.cdl file but not the values. > same result for 'horizontal visibility direction' and ... Claude, not all fields have values, use the ncdump utility in ./bin to dump the file to see the values. % ncdump ncFile there's a man page at ./man in the netCDF distribution for more information. robb... > > thank you. > > Claude > > -----Message d'origine----- > De : Robb Kambic [mailto:rkambic@xxxxxxxxxxxxxxxxxxxxxxxx] > Envoyé : jeudi 15 décembre 2005 20:49 > À : DEROGNAT, Claude > Objet : metar.cdl > > > netcdf metar { // metar netCDF definition > > dimensions: > recNum = UNLIMITED ; > r_len = 128; > rep_type_len = 5; > stn_name_len = 4; > UNITS_len = 3; > VIS_len = 5; > VIS_dir_len = 2; > rv_len = 4; > rv_d_len = 3; > WX_number = 3; > WX_len = 32; > rWX_len = 8; > TornadicType_len = 15; > TornadicDIR_len = 2; > TornadicLOC_len = 10; > auto_len = 4; > Site2_len = 10; > Obscur_len = 12; > Vrb_len = 3; > Aloft_len = 3; > Sgn_len = 10; > cloud_layers = 6; > cloud_len = 4 ; > cloud_type = 1 ; > LTG_DIR_len = 2; > VIRGA_dir_len = 2; > > variables: > > // Report > char rep_type( recNum, rep_type_len ) ; > rep_type:long_name = "Report type"; > rep_type:reference = "WMO #306, FM 15-IX & FM 16-IX"; > rep_type:units = "" ; // dimensionless > char stn_name( recNum, stn_name_len ) ; > stn_name:long_name = "Station name"; > stn_name:reference = "sfmetar-sa.tbl"; > stn_name:units = "" ; // dimensionless > int wmo_id( recNum ) ; > wmo_id:long_name = "Numeric WMO Identifier"; > wmo_id:_FillValue = -99999; > wmo_id:reference = "Air Force station bulletin plus others"; > wmo_id:units = "" ; // dimensionless > float lat( recNum ) ; > lat:long_name = "Station latitude"; > lat:_FillValue = -99999.f; > lat:valid_range = -90.0, 90.0; > lat:units = "degrees"; > float lon( recNum ) ; > lon:long_name = "Station longitude"; > lon:_FillValue = -99999.f; > lon:valid_range = -180.0, 180.0; > lon:units = "degrees"; > int elev( recNum ) ; > elev:long_name = "Station elevation"; > elev:_FillValue = -99999; > elev:units = "meters"; > //int ob_hour( recNum ) ; > //ob_hour:long_name = "Observation hour"; > //ob_hour:_FillValue = -99999; > //ob_hour:units = "" ; // dimensionless > //int ob_min( recNum ) ; > //ob_min:long_name = "Observation minute"; > //ob_min:_FillValue = -99999; > //ob_min:units = "" ; // dimensionless > //int ob_day( recNum ) ; > //ob_day:long_name = "Observation day"; > //ob_day:_FillValue = -99999; > //ob_day:units = "" ; // dimensionless > int time_obs( recNum ) ; > time_obs:long_name = "time of Observation"; > time_obs:_FillValue = -99999; > time_obs:units = "seconds since 1970-01-01 00 UTC"; > int time_nominal( recNum ) ; > time_nominal:long_name = "time nominal"; > time_nominal:_FillValue = -99999; > time_nominal:units = "seconds since 1970-01-01 00 UTC"; > //int AUTO( recNum ) ; > //AUTO:long_name = "Fully automated report"; > //AUTO:_FillValue = -99999; > //AUTO:valid_range = 0, 1; > //AUTO:units = "" ; // dimensionless > //WindStruct ; > char UNITS( recNum, UNITS_len ) ; > UNITS:long_name = "Wind Speed Units"; > UNITS:reference = "KMH|KT|MPS|MPH"; > UNITS:units = "" ; // dimensionless > int DIR( recNum ) ; > DIR:long_name = "Wind Direction"; > DIR:_FillValue = -99999; > DIR:valid_range = 0, 360; > DIR:units = "degrees"; > int SPD( recNum ) ; > SPD:long_name = "Wind Speed"; > SPD:_FillValue = -99999; > SPD:units = ""; //UNITS variable > int GUST( recNum ) ; > GUST:long_name = "Wind Gust"; > GUST:_FillValue = -99999; > GUST:units = ""; //UNITS variable > //int VRB( recNum ) ; > //VRB:long_name = "Variable wind direction"; > //VRB:_FillValue = -99999; > //VRB:valid_range = 0, 1; > //VRB:units = "" ; // dimensionless > //int DIRmin( recNum ) ; > //DIRmin:long_name = "min wind direction"; > //DIRmin:_FillValue = -99999; > //DIRmin:valid_range = 0, 360; > //DIRmin:units = "degrees"; > //int DIRmax( recNum ) ; > //DIRmax:long_name = "max wind direction"; > //DIRmax:_FillValue = -99999; > //DIRmax:valid_range = 0, 360; > //DIRmax:units = "degrees"; > float prevail_VIS_SM( recNum ) ; > prevail_VIS_SM:long_name = "prevailing visibility"; > prevail_VIS_SM:_FillValue = -99999.f; > prevail_VIS_SM:units = "US_statute_mile"; > float prevail_VIS_KM( recNum ) ; > prevail_VIS_KM:long_name = "prevailing visibility"; > prevail_VIS_KM:_FillValue = -99999.f; > prevail_VIS_KM:units = "kilometers"; > int plus_VIS_SM( recNum ) ; > plus_VIS_SM:long_name = "greater than prevailing > visibility"; > plus_VIS_SM:_FillValue = -99999; > plus_VIS_SM:valid_range = 0, 1; > plus_VIS_SM:units = "US_statute_mile"; > int plus_VIS_KM( recNum ) ; > plus_VIS_KM:long_name = "greater than prevailing > visibility"; > plus_VIS_KM:_FillValue = -99999; > plus_VIS_KM:valid_range = 0, 1; > plus_VIS_KM:units = "kilometers"; > float prevail_VIS_M( recNum ) ; > prevail_VIS_M:long_name = "horizontal visibility"; > prevail_VIS_M:_FillValue = -99999.f; > prevail_VIS_M:units = "meters"; > char VIS_dir( recNum, VIS_dir_len ) ; > VIS_dir:long_name = "horizontal visibility direction"; > VIS_dir:reference = "NE|NW|SE|SW|N|S|E|W"; > VIS_dir:units = "" ; // dimensionless > int CAVOK( recNum ) ; > CAVOK:long_name = "Ceiling And Visibility OK"; > CAVOK:_FillValue = -99999; > CAVOK:valid_range = 0, 1; > CAVOK:units = "" ; // dimensionless > //Runway_VisRange ; > //int RVRNO( recNum ) ; > //RVRNO:long_name = "No runway report"; > //RVRNO:_FillValue = -99999; > //RVRNO:valid_range = 0, 1; > //RVRNO:units = "" ; // dimensionless > //char RV_designator( recNum, rv_len, rv_d_len ) ; > //RV_designator:long_name = "Runway designator"; > //RV_designator:reference = "2 digit plus Right, Left, > Center"; > //RV_designator:units = "" ; // dimensionless > //int RV_above_max( recNum, rv_len ) ; > //RV_above_max:long_name = "Runway visibillity is above > max"; > //RV_above_max:_FillValue = -99999; > //RV_above_max:valid_range = 0, 1; > //RV_above_max:units = "P"; > //int RV_below_min( recNum, rv_len ) ; > //RV_below_min:long_name = "Runway visibillity is below > min"; > //RV_below_min:_FillValue = -99999; > //RV_below_min:valid_range = 0, 1; > //RV_below_min:units = ""; > //int RV_vrbl( recNum, rv_len ) ; > //RV_vrbl:long_name = "Runway visibillity is variable"; > //RV_vrbl:_FillValue = -99999; > //RV_vrbl:valid_range = 0, 1; > //RV_vrbl:units = "" ; // dimensionless > //int RV_min( recNum, rv_len ) ; > //RV_min:long_name = "Runway visibillity min"; > //RV_min:_FillValue = -99999; > //RV_min:units = "meters"; > //int RV_max( recNum, rv_len ) ; > //RV_max:long_name = "Runway visibillity max"; > //RV_max:_FillValue = -99999; > //RV_max:units = "meters"; > //int RV_visRange( recNum, rv_len ) ; > //RV_visRange:long_name = "Runway Visibility Range"; > //RV_visRange:_FillValue = -99999; > //RV_visRange:units = "meters"; > char WX( recNum, WX_len ) ; > WX:long_name = "Weather phenomena"; > WX:reference = "WMO #306, code table 4658"; > WX:units = "" ; // dimensionless > //int vert_VIS( recNum ) ; > //vert_VIS:long_name = "Vertical visibility"; > //vert_VIS:_FillValue = -99999; > //vert_VIS:units = "meters"; > //Cloud_Conditions ; > char cloud_type( recNum, cloud_layers, cloud_len ) ; > cloud_type:long_name = "cloud type"; > cloud_type:reference = "CLR|SKC or +- OVC|SCT|FEW|BKN"; > cloud_type:units = "" ; // dimensionless > int cloud_hgt( recNum, cloud_layers ) ; > cloud_hgt:long_name = "cloud height"; > cloud_hgt:_FillValue = -99999; > cloud_hgt:units = "feet"; > int cloud_meters( recNum, cloud_layers ) ; > cloud_meters:long_name = "cloud height in meters"; > cloud_meters:_FillValue = -99999; > cloud_meters:units = "meters"; > char cloud_phenom( recNum, cloud_layers, cloud_len ) ; > cloud_phenom:long_name = "cloud phenomena"; > cloud_phenom:reference = "CB|TCU"; > cloud_phenom:units = "" ; // dimensionless > //int T( recNum ) ; > //T:long_name = "Temperature"; > //T:_FillValue = -99999; > //T:units = "Celsius"; > //int TD( recNum ) ; > //TD:long_name = "Dew-point temperature"; > //TD:_FillValue = -99999; > //TD:units = "Celsius"; > float hectoPasc_ALTIM( recNum ) ; > hectoPasc_ALTIM:long_name = "Altimeter setting"; > hectoPasc_ALTIM:_FillValue = -99999.f; > hectoPasc_ALTIM:units = "hectopascals"; > float inches_ALTIM( recNum ) ; > inches_ALTIM:long_name = "Altimeter setting"; > inches_ALTIM:_FillValue = -99999.f; > inches_ALTIM:units = "inches"; > //int NOSIG( recNum ) ; > //NOSIG:long_name = "No significant change"; > //NOSIG:_FillValue = -99999; > //NOSIG:valid_range = 0, 1; > //NOSIG:units = "" ; // dimensionless > > // Remarks > //char TornadicType( recNum, TornadicType_len ) ; > //TornadicType:long_name = "Tornadic type"; > //TornadicType:reference = "TORNADO|WATERSPOUTS|FUNNEL > CLOUDS"; > //TornadicType:units = "" ; // dimensionless > //char TornadicLOC( recNum, TornadicLOC_len ) ; > //TornadicLOC:long_name = "Tornadic location"; > //TornadicLOC:reference = "DSNT|VCY STN|VC STN|VCY|VC"; > //TornadicLOC:units = "" ; // dimensionless > //char TornadicDIR( recNum, TornadicDIR_len ) ; > //TornadicDIR:long_name = "Tornadic direction"; > //TornadicDIR:reference = "NE|NW|SE|SW|N|S|E|W"; > //TornadicDIR:units = "" ; // dimensionless > //int BTornadic_hh( recNum ) ; > //BTornadic_hh:long_name = "Beginning Hour Tornadic"; > //BTornadic_hh:_FillValue = -99999; > //BTornadic_hh:units = "" ; // dimensionless > //int BTornadic_mm( recNum ) ; > //BTornadic_mm:long_name = "Beginning Minute Tornadic"; > //BTornadic_mm:_FillValue = -99999; > //BTornadic_mm:units = "" ; // dimensionless > //int ETornadic_hh( recNum ) ; > //ETornadic_hh:long_name = "Ending Hour Tornadic"; > //ETornadic_hh:_FillValue = -99999; > //ETornadic_hh:units = "" ; // dimensionless > //int ETornadic_mm( recNum ) ; > //ETornadic_mm:long_name = "Ending Minute Tornadic"; > //ETornadic_mm:_FillValue = -99999; > //ETornadic_mm:units = "" ; // dimensionless > //char AUTOindicator( recNum, auto_len ) ; > //AUTOindicator:long_name = "Type of automated station"; > //AUTOindicator:reference = "AO1|AO1A|AO2|AO2A|AOA"; > //AUTOindicator:units = "" ; // dimensionless > //int PKWND_dir( recNum ) ; > //PKWND_dir:long_name = "Peak wind direction"; > //PKWND_dir:_FillValue = -99999; > //PKWND_dir:valid_range = 0, 360; > //PKWND_dir:units = "degrees"; > //int PKWND_spd( recNum ) ; > //PKWND_spd:long_name = "Peak wind speed"; > //PKWND_spd:_FillValue = -99999; > //PKWND_spd:units = "knots"; > //int PKWND_hh( recNum ) ; > //PKWND_hh:long_name = "Hour of Peak wind"; > //PKWND_hh:_FillValue = -99999; > //PKWND_hh:units = "" ; // dimensionless > //int PKWND_mm( recNum ) ; > //PKWND_mm:long_name = "Minute of Peak wind"; > //PKWND_mm:_FillValue = -99999; > //PKWND_mm:units = "" ; // dimensionless > //int WshfTime_hh( recNum ) ; > //WshfTime_hh:long_name = "Hour of Wind shift"; > //WshfTime_hh:_FillValue = -99999; > //WshfTime_hh:units = "" ; // dimensionless > //int WshfTime_mm( recNum ) ; > //WshfTime_mm:long_name = "Minute of Wind shift"; > //WshfTime_mm:_FillValue = -99999; > //WshfTime_mm:units = "" ; // dimensionless > //int Wshft_FROPA( recNum ) ; > //Wshft_FROPA:long_name = "Wind shift frontal passage"; > //Wshft_FROPA:_FillValue = -99999; > //Wshft_FROPA:valid_range = 0, 1; > //Wshft_FROPA:units = "" ; // dimensionless > //float VIS_TWR( recNum ) ; > //VIS_TWR:long_name = "Tower visibility"; > //VIS_TWR:_FillValue = -99999.f; > //VIS_TWR:units = "US_statute_mile"; > //float VIS_SFC( recNum ) ; > //VIS_SFC:long_name = "Surface visibility"; > //VIS_SFC:_FillValue = -99999.f; > //VIS_SFC:units = "US_statute_mile"; > //float VISmin( recNum ) ; > //VISmin:long_name = "min Visibility"; > //VISmin:_FillValue = -99999.f; > //VISmin:units = "US_statute_mile"; > //float VISmax( recNum ) ; > //VISmax:long_name = "max Visibility"; > //VISmax:_FillValue = -99999.f; > //VISmax:units = "US_statute_mile"; > //float VIS_2ndSite( recNum ) ; > //VIS_2ndSite:long_name = "Visibility at 2nd Site"; > //VIS_2ndSite:_FillValue = -99999.f; > //VIS_2ndSite:units = "US_statute_mile"; > //char VIS_2ndSite_LOC( recNum, Site2_len ) ; > //VIS_2ndSite_LOC:long_name = "2nd Site location"; > //VIS_2ndSite_LOC:reference = "2 digit runway"; > //VIS_2ndSite:units = "" ; // dimensionless > //int LTG_OCNL( recNum ) ; > //LTG_OCNL:long_name = "Occasional lightning"; > //LTG_OCNL:_FillValue = -99999; > //LTG_OCNL:valid_range = 0, 1; > //LTG_OCNL:units = "" ; // dimensionless > //int LTG_FRQ( recNum ) ; > //LTG_FRQ:long_name = "Frequent lightning"; > //LTG_FRQ:_FillValue = -99999; > //LTG_FRQ:valid_range = 0, 1; > //LTG_FRQ:units = "" ; // dimensionless > //int LTG_CNS( recNum ) ; > //LTG_CNS:long_name = "Continuous lightning"; > //LTG_CNS:_FillValue = -99999; > //LTG_CNS:valid_range = 0, 1; > //LTG_CNS:units = "" ; // dimensionless > //int LTG_CG( recNum ) ; > //LTG_CG:long_name = "Cloud-ground lightning"; > //LTG_CG:_FillValue = -99999; > //LTG_CG:valid_range = 0, 1; > //LTG_CG:units = "" ; // dimensionless > //int LTG_IC( recNum ) ; > //LTG_IC:long_name = "In-cloud lightning"; > //LTG_IC:_FillValue = -99999; > //LTG_IC:valid_range = 0, 1; > //int LTG_CC( recNum ) ; > //LTG_CC:long_name = "Cloud-cloud lightning"; > //LTG_CC:_FillValue = -99999; > //LTG_CC:valid_range = 0, 1; > //LTG_CC:units = "" ; // dimensionless > //int LTG_CA( recNum ) ; > //LTG_CA:long_name = "Cloud-air lightning"; > //LTG_CA:_FillValue = -99999; > //LTG_CA:valid_range = 0, 1; > //LTG_CA:units = "" ; // dimensionless > //int LTG_DSNT( recNum ) ; > //LTG_DSNT:long_name = "Distant lightning, beyond 30 SM"; > //LTG_DSNT:_FillValue = -99999; > //LTG_DSNT:valid_range = 0, 1; > //LTG_DSNT:units = "" ; // dimensionless > //int LTG_AP( recNum ) ; > //LTG_AP:long_name = "Lightning at airport"; > //LTG_AP:_FillValue = -99999; > //LTG_AP:valid_range = 0, 1; > //LTG_AP:units = "" ; // dimensionless > //int LTG_VcyStn( recNum ) ; > //LTG_VcyStn:long_name = "Lightning in vicinity, less than 5 > SM"; > //LTG_VcyStn:_FillValue = -99999; > //LTG_VcyStn:valid_range = 0, 1; > //LTG_VcyStn:units = "" ; // dimensionless > //char LTG_DIR( recNum, LTG_DIR_len ) ; > //LTG_DIR:long_name = "Lightning direction"; > //LTG_DIR:reference = "NE|NW|SE|SW|N|S|E|W"; > //LTG_DIR:units = "" ; // dimensionless > > //Recent_WX ReWX[3]; > //char Recent_WX( recNum, WX_number, rWX_len ) ; > //Recent_WX:long_name = "Recent weather"; > //Recent_WX:reference = "WMO #306, code table 4658"; > //Recent_WX:units = "" ; // dimensionless > //int Recent_WX_Bhh( recNum, WX_number ) ; > //Recent_WX_Bhh:long_name = "Recent weather beginning hour"; > //Recent_WX_Bhh:_FillValue = -99999; > //Recent_WX_Bhh:units = "" ; // dimensionless > //int Recent_WX_Bmm( recNum, WX_number ) ; > //Recent_WX_Bmm:long_name = "Recent weather beginning > minute"; > //Recent_WX_Bmm:_FillValue = -99999; > //Recent_WX_Bmm:units = "" ; // dimensionless > //int Recent_WX_Ehh( recNum, WX_number ) ; > //Recent_WX_Ehh:long_name = "Recent weather ending hour"; > //Recent_WX_Ehh:_FillValue = -99999; > //Recent_WX_Ehh:units = "" ; // dimensionless > //int Recent_WX_Emm( recNum, WX_number ) ; > //Recent_WX_Emm:long_name = "Recent weather ending minute"; > //Recent_WX_Emm:_FillValue = -99999; > //Recent_WX_Emm:units = "" ; // dimensionless > > //int Ceiling_min( recNum ) ; > //Ceiling_min:long_name = "Ceiling min"; > //Ceiling_min:_FillValue = -99999; > //Ceiling_min:units = "feet"; > //int Ceiling_max( recNum ) ; > //Ceiling_max:long_name = "Ceiling max"; > //Ceiling_max:_FillValue = -99999; > //Ceiling_max:units = "feet"; > > //int CIG_2ndSite_meters( recNum ) ; > //CIG_2ndSite_meters:long_name = "Sky condition at 2nd > Site"; > //CIG_2ndSite_meters:_FillValue = -99999; > //CIG_2ndSite_meters:units = "meters"; > //int CIG_2ndSite_LOC( recNum ) ; > //CIG_2ndSite_LOC:long_name = "2nd Site location, runway"; > //CIG_2ndSite_LOC:_FillValue = -99999; > //CIG_2ndSite_LOC:reference = "2 digit runway"; > //CIG_2ndSite_LOC:units = "" ; // dimensionless > //int PRESFR( recNum ) ; > //PRESFR:long_name = "Pressure falling rapidly"; > //PRESFR:_FillValue = -99999; > //PRESFR:valid_range = 0, 1; > //PRESFR:units = "" ; // dimensionless > //int PRESRR( recNum ) ; > //PRESRR:long_name = "Pressure rising rapidly"; > //PRESRR:_FillValue = -99999; > //PRESRR:valid_range = 0, 1; > //PRESRR:units = "" ; // dimensionless > //int SLPNO( recNum ) ; > //SLPNO:long_name = "Sea level pressure not available"; > //SLPNO:_FillValue = -99999; > //SLPNO:valid_range = 0, 1; > //SLPNO:units = "" ; // dimensionless > float SLP( recNum ) ; > SLP:long_name = "Sea level pressure"; > SLP:_FillValue = -99999.f; > SLP:units = "hectopascals"; > //char SectorVIS_DIR( recNum, VIS_dir_len ) ; > //SectorVIS_DIR:long_name = "Sector visibility direction"; > //SectorVIS_DIR:reference = "NE|NW|SE|SW|N|S|E|W"; > //SectorVIS_DIR:units = "" ; // dimensionless > //float SectorVIS( recNum ) ; > //SectorVIS:long_name = "Sector visibility"; > //SectorVIS:_FillValue = -99999.f; > //SectorVIS:units = "US_statute_mile"; > //int GR( recNum ) ; > //GR:long_name = "Hailstone"; > //GR:_FillValue = -99999; > //GR:valid_range = 0, 1; > //GR:units = "" ; // dimensionless > //float GRsize( recNum ) ; > //GRsize:long_name = "Hailstone size"; > //GRsize:_FillValue = -99999.f; > //GRsize:units = "inches"; > //int VIRGA( recNum ) ; > //VIRGA:long_name = "Virga"; > //VIRGA:_FillValue = -99999; > //VIRGA:valid_range = 0, 1; > //VIRGA:units = "" ; // dimensionless > //char VIRGAdir( recNum, VIS_dir_len ) ; > //VIRGAdir:long_name = "Virga direction"; > //VIRGAdir:reference = "NE|NW|SE|SW|N|S|E|W"; > //VIRGAdir:units = "" ; // dimensionless > char SfcObscuration( recNum, rWX_len ) ; > SfcObscuration:long_name = "Surface Obscuration"; > SfcObscuration:reference = "WMO #306, code table 4658"; > SfcObscuration:units = "" ; // dimensionless > int OctsSkyObscured( recNum ) ; > OctsSkyObscured:long_name = "Octets of Sky Obscured"; > OctsSkyObscured:_FillValue = -99999; > OctsSkyObscured:reference = "8 bit octets"; > OctsSkyObscured:units = "" ; // dimensionless > //int CIGNO( recNum ) ; > //CIGNO:long_name = "Ceiling height not available"; > //CIGNO:_FillValue = -99999; > //CIGNO:valid_range = 0, 1; > //CIGNO:units = "" ; // dimensionless > int Ceiling_est( recNum ) ; > Ceiling_est:long_name = "Ceiling height estimate"; > Ceiling_est:_FillValue = -99999; > Ceiling_est:units = "feet"; > int Ceiling( recNum ) ; > Ceiling:long_name = "Ceiling height"; > Ceiling:_FillValue = -99999; > Ceiling:units = "feet"; > //char VrbSkyBelow( recNum, Vrb_len ) ; > //VrbSkyBelow:long_name = "Variable Sky Below"; > //VrbSkyBelow:reference = "FEW|SCT|BKN|OVC"; > //VrbSkyBelow:units = "" ; // dimensionless > //int VrbSkyLayerHgt( recNum ) ; > //VrbSkyLayerHgt:long_name = "Variable Sky Layer Height"; > //VrbSkyLayerHgt:_FillValue = -99999; > //VrbSkyLayerHgt:units = "feet"; > //char VrbSkyAbove( recNum, Vrb_len ) ; > //VrbSkyAbove:long_name = "Variable Sky Above"; > //VrbSkyAbove:reference = "FEW|SCT|BKN|OVC"; > //VrbSkyAbove:units = "" ; // dimensionless > //char Sign_cloud( recNum, Sgn_len ) ; > //Sign_cloud:long_name = "Significant cloud types"; > //Sign_cloud:reference = "CB|CBMAM|TCU|ACC|SCSL|ACSL|ROTOR > CLD"; > //Sign_cloud:units = "" ; // dimensionless > //char Sign_dist( recNum, Sgn_len ) ; > //Sign_dist:long_name = "Significant distance"; > //Sign_dist:reference = "VCNTY STN|VCY STN|VC > STN|VCY|VC|DSNT|OMT"; > //Sign_dist:units = "" ; // dimensionless > //char Sign_dir( recNum, Sgn_len ) ; > //Sign_dir:long_name = "Significant direction"; > //Sign_dir:reference = "NE|NW|SE|SW|N|S|E|W"; > //Sign_dir:units = "" ; // dimensionless > //char ObscurAloft( recNum, rWX_len ) ; > //ObscurAloft:long_name = "Obscuring phenomena Aloft"; > //ObscurAloft:reference = "WMO #306, code table 4658"; > //ObscurAloft:units = "" ; // dimensionless > char ObscurAloftSkyCond( recNum, Aloft_len ) ; > ObscurAloftSkyCond:long_name = "Obscuring Aloft Sky > Condition"; > ObscurAloftSkyCond:reference = "FEW|SCT|BKN|OVC"; > ObscurAloftSkyCond:units = "" ; // dimensionless > int ObscurAloftHgt( recNum ) ; > ObscurAloftHgt:long_name = "Obscuring Aloft Height"; > ObscurAloftHgt:_FillValue = -99999; > ObscurAloftHgt:units = "feet"; > //int ACFTMSHP( recNum ) ; > //ACFTMSHP:long_name = "Aircraft mishap"; > //ACFTMSHP:_FillValue = -99999; > //ACFTMSHP:valid_range = 0, 1; > //ACFTMSHP:units = "" ; // dimensionless > //int NOSPECI( recNum ) ; > //NOSPECI:long_name = "No changes in weather conditions"; > //NOSPECI:_FillValue = -99999; > //NOSPECI:valid_range = 0, 1; > //NOSPECI:units = "" ; // dimensionless > //int FIRST( recNum ) ; > //FIRST:long_name = "First report of the day"; > //FIRST:_FillValue = -99999; > //FIRST:valid_range = 0, 1; > //FIRST:units = "" ; // dimensionless > //int LAST( recNum ) ; > //LAST:long_name = "Last report in observation coverage"; > //LAST:_FillValue = -99999; > //LAST:valid_range = 0, 1; > //LAST:units = "" ; // dimensionless > char Cloud_low( recNum, cloud_type ) ; > Cloud_low:long_name = "Low Cloud type"; > Cloud_low:reference = "WMO Abridged Internation Cloud > Atlas"; > Cloud_low:units = "" ; // dimensionless > char Cloud_medium( recNum, cloud_type ) ; > Cloud_medium:long_name = "Medium Cloud type"; > Cloud_medium:reference = "WMO Abridged Internation Cloud > Atlas"; > Cloud_medium:units = "" ; // dimensionless > char Cloud_high( recNum, cloud_type ) ; > Cloud_high:long_name = "High Cloud type"; > Cloud_high:reference = "WMO Abridged Internation Cloud > Atlas"; > Cloud_high:units = "" ; // dimensionless > int SNINCR( recNum ) ; > SNINCR:long_name = "Snow increasing rapidly, amount past > hour"; > SNINCR:_FillValue = -99999; > SNINCR:units = "inches"; > int SNINCR_TotalDepth( recNum ) ; > SNINCR_TotalDepth:long_name = "Snow Total Depth on ground"; > SNINCR_TotalDepth:_FillValue = -99999; > SNINCR_TotalDepth:units = "inches"; > int SN_depth( recNum ) ; > SN_depth:long_name = "Snow depth on ground"; > SN_depth:_FillValue = -99999; > SN_depth:units = "inches"; > float SN_waterequiv( recNum ) ; > SN_waterequiv:long_name = "Water equivalent of snow on > ground"; > SN_waterequiv:_FillValue = -99999.f; > SN_waterequiv:units = "inches"; > //int SunSensorOut( recNum ) ; > //SunSensorOut:long_name = "Sun Sensor Out"; > //SunSensorOut:_FillValue = -99999; > //SunSensorOut:valid_range = 0, 1; > //SunSensorOut:units = "" ; // dimensionless > int SunShineDur( recNum ) ; > SunShineDur:long_name = "Sun Shine Duration"; > SunShineDur:_FillValue = -99999; > SunShineDur:units = "minutes"; > float PRECIP_hourly( recNum ) ; > PRECIP_hourly:long_name = "Hourly precipitation amount"; > PRECIP_hourly:_FillValue = -99999.f; > PRECIP_hourly:units = "inches"; > float PRECIP_amt( recNum ) ; > PRECIP_amt:long_name = "Last 3 or 6 hour precipitation > amount"; > PRECIP_amt:_FillValue = -99999.f; > PRECIP_amt:units = "inches"; > float PRECIP_24_amt( recNum ) ; > PRECIP_24_amt:long_name = "24 hour precipitation amount"; > PRECIP_24_amt:_FillValue = -99999.f; > PRECIP_24_amt:units = "inches"; > float T_tenths( recNum ) ; > T_tenths:long_name = "Temperature to tenths"; > T_tenths:_FillValue = -99999.f; > T_tenths:units = "Celsius"; > float TD_tenths( recNum ) ; > TD_tenths:long_name = "Dew-point temperature to tenths"; > TD_tenths:_FillValue = -99999.f; > TD_tenths:units = "Celsius"; > float Tmax( recNum ) ; > Tmax:long_name = "Temperature max for 6-hourly reports"; > Tmax:_FillValue = -99999.f; > Tmax:units = "Celsius"; > float Tmin( recNum ) ; > Tmin:long_name = "Temperature min for 6-hourly reports"; > Tmin:_FillValue = -99999.f; > Tmin:units = "Celsius"; > float Tmax24( recNum ) ; > Tmax24:long_name = "Temperature max for 24 period at > midnight"; > Tmax24:_FillValue = -99999.f; > Tmax24:units = "Celsius"; > float Tmin24( recNum ) ; > Tmin24:long_name = "Temperature min for 24 period at > midnight"; > Tmin24:_FillValue = -99999.f; > Tmin24:units = "Celsius"; > int char_Ptend( recNum ) ; > char_Ptend:long_name = "Character Pressure tendency"; > char_Ptend:_FillValue = -99999; > char_Ptend:reference = "0|1|2|3|4|5|6|7|8 Table 12-5"; > char_Ptend:valid_range = 0, 8; > char_Ptend:units = "" ; // dimensionless > float Ptend( recNum ) ; > Ptend:long_name = "Change in Pressure in past 3 hours"; > Ptend:_FillValue = -99999.f; > Ptend:units = "hectopascals"; > //int PWINO( recNum ) ; > //PWINO:long_name = "Precipitation sensor not working"; > //PWINO:_FillValue = -99999; > //PWINO:valid_range = 0, 1; > //PWINO:units = "" ; // dimensionless > //int FZRANO( recNum ) ; > //FZRANO:long_name = "Freezing Rain sensor not working"; > //FZRANO:_FillValue = -99999; > //FZRANO:valid_range = 0, 1; > //FZRANO:units = "" ; // dimensionless > //int TSNO( recNum ) ; > //TSNO:long_name = "Lightning detection system not working"; > //TSNO:_FillValue = -99999; > //TSNO:valid_range = 0, 1; > //TSNO:units = "" ; // dimensionless > //int PNO( recNum ) ; > //PNO:long_name = "Tipping bucket rain gauge is > inoperative"; > //PNO:_FillValue = -99999; > //PNO:valid_range = 0, 1; > //PNO:units = "" ; // dimensionless > //int maintIndicator( recNum ) ; > //maintIndicator:long_name = "Maintenance needed at system"; > //maintIndicator:_FillValue = -99999; > //maintIndicator:valid_range = 0, 1; > //maintIndicator:units = "" ; // dimensionless > //char PlainText( recNum, r_len ) ; > //PlainText:long_name = "Plain language remarks"; > //PlainText:_FillValue = "\0"; > //PlainText:reference = "max length 128"; > //PlainText:units = "" ; // dimensionless > > // Original report and remarks > char report( recNum, r_len ) ; > report:long_name = "Main body of report"; > report:reference = "max length 128"; > report:units = "" ; // dimensionless > char remarks( recNum, r_len ) ; > remarks:long_name = "Remarks section seperated by RMK"; > remarks:reference = "max length 128"; > remarks:units = "" ; // dimensionless > > :title = "METAR definition"; > :version = 1.1; > > // In general: > // > // 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 'stn_name' must be included as the first or second > position > // There are 140 variables in the cdl with the last two variables are > // the original report and remarks. > // 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. > > } > > -- ============================================================================== Robb Kambic Unidata Program Center Software Engineer III Univ. Corp for Atmospheric Research rkambic@xxxxxxxxxxxxxxxx WWW: http://www.unidata.ucar.edu/ ==============================================================================
decoders
archives: