On Wed, 21 Jul 2004, Doug Lindholm wrote:
> Hi,
>
> Here's a question from Poornima that I'm not sure how to answer. My
> first inclination is to tell her to focus on Eta data and OPeNDAP URLS.
> But I suppose we need to handle the upper air stuff sometime. My
> understanding of the perl servers is somewhat limited. I assumed that
> the xml resulting from the url below does contain the data although I'm
> not seeing much that looks like upper air data other than a "report"
> that my mind can't parse, a time, a "T" value, and an empty "TD" value:
>
ugh... I haven't finished the upperair decoder to send back "XML".
Actually the current code is just a place holder until i can finish the
decoding part. The only good news is that the report is correct. What does
Poornima expect? i'll include a list of the variables.
robb...
netcdf raob {
dimensions:
recNum = UNLIMITED ;
manLevel = 22 ;
sigTLevel = 150 ;
sigWLevel = 76 ;
mWndNum = 4 ;
mTropNum = 4 ;
staNameLen = 6 ;
variables:
long wmoStaNum (recNum) ;
wmoStaNum:long_name = "WMO Station Number" ;
wmoStaNum:reference = "Volume A of WMO publication 9" ;
wmoStaNum:_FillValue = 99999 ;
char staName (recNum, staNameLen) ;
staName:long_name = "Station Identifier" ;
float staLat (recNum) ;
staLat:long_name = "Station Latitude" ;
staLat:units = "degree_N" ;
staLat:valid_range = 0.f, 90.f ;
staLat:_FillValue = 99999.f ;
float staLon (recNum) ;
staLon:long_name = "Station Longitude" ;
staLon:units = "degree_E" ;
staLon:valid_range = -180.f, -50.f ;
staLon:_FillValue = 99999.f ;
float staElev (recNum) ;
staElev:long_name = "Station Elevation" ;
staElev:units = "meter" ;
staElev:valid_range = -100.f, 3500.f ;
staElev:_FillValue = 99999.f ;
double synTime (recNum) ;
synTime:long_name = "Synoptic Time" ;
synTime:units = "seconds since (1970-1-1 00:00:0.0)" ;
long numMand (recNum) ;
numMand:long_name = "Number of Mandatory Levels" ;
numMand:valid_range = 0, 22 ;
long numSigT(recNum) ;
numSigT:long_name = "Number of Significant Levels wrt T" ;
numSigT:valid_range = 0, 150 ;
long numSigW(recNum) ;
numSigW:long_name = "Number of Significant Levels wrt W" ;
numSigW:valid_range = 0, 76 ;
long numMwnd(recNum) ;
numMwnd:long_name = "Number of Maximum Wind Levels" ;
numMwnd:valid_range = 0, 4 ;
long numTrop(recNum) ;
numTrop:long_name = "Number of Tropopause Levels" ;
numTrop:valid_range = 0, 4 ;
double relTime(recNum) ;
relTime:long_name = "Sounding Release Time" ;
relTime:units = "seconds since (1970-1-1 00:00:0.0)" ;
relTime:_FillValue = -1.0e+38d;
long sondTyp(recNum) ;
sondTyp:long_name = "Instrument Type" ;
sondTyp:reference = "Federal Meteorological Handbook No. 4" ;
sondTyp:_FillValue = 99999 ;
float prMan(recNum, manLevel) ;
prMan:long_name = "Pressure - Mandatory level" ;
prMan:units = "hectopascal" ;
prMan:valid_range = 1.f, 1500.f ;
prMan:_FillValue = 99999.f ;
float htMan(recNum, manLevel) ;
htMan:long_name = "Geopotential - Mandatory level" ;
htMan:units = "meter" ;
htMan:valid_range = -250.f, 60000.f ;
htMan:_FillValue = 99999.f ;
float tpMan(recNum, manLevel) ;
tpMan:long_name = "Temperature - Mandatory level" ;
tpMan:units = "kelvin" ;
tpMan:valid_range = 173.f, 373.f ;
tpMan:_FillValue = 99999.f ;
float tdMan(recNum, manLevel) ;
tdMan:long_name = "Dew Point Depression - Mandatory level" ;
tdMan:units = "kelvin" ;
tdMan:valid_range = 0.f, 60.f ;
tdMan:_FillValue = 99999.f ;
float wdMan(recNum, manLevel) ;
wdMan:long_name = "Wind Direction - Mandatory level" ;
wdMan:units = "degree_true" ;
wdMan:valid_range = 0.f, 360.f ;
wdMan:_FillValue = 99999.f ;
float wsMan(recNum, manLevel) ;
wsMan:long_name = "Wind Speed - Mandatory level" ;
wsMan:units = "meter/sec" ;
wsMan:valid_range = 0.f, 300.f ;
wsMan:_FillValue = 99999.f ;
float prSigT(recNum, sigTLevel) ;
prSigT:long_name = "Pressure - Significant level wrt T" ;
prSigT:units = "hectopascal" ;
prSigT:valid_range = 1.f, 1500.f ;
prSigT:_FillValue = 99999.f ;
float tpSigT(recNum, sigTLevel) ;
tpSigT:long_name = "Temperature - Significant level wrt T" ;
tpSigT:units = "kelvin" ;
tpSigT:valid_range = 173.f, 373.f ;
tpSigT:_FillValue = 99999.f ;
float tdSigT(recNum, sigTLevel) ;
tdSigT:long_name = "Dew Point Depression - Significant level
wrt T" ;
tdSigT:units = "kelvin" ;
tdSigT:valid_range = 0.f, 60.f ;
tdSigT:_FillValue = 99999.f ;
float htSigW(recNum, sigWLevel) ;
htSigW:long_name = "Geopotential - Significant level wrt W" ;
htSigW:units = "meter" ;
htSigW:valid_range = -250.f, 60000.f ;
htSigW:_FillValue = 99999.f ;
float wdSigW(recNum, sigWLevel) ;
wdSigW:long_name = "Wind Direction - Significant level wrt W" ;
wdSigW:units = "degree_true" ;
wdSigW:valid_range = 0.f, 360.f ;
wdSigW:_FillValue = 99999.f ;
float wsSigW(recNum, sigWLevel) ;
wsSigW:long_name = "Wind Speed - Significant level wrt W" ;
wsSigW:units = "meter/sec" ;
wsSigW:valid_range = 0.f, 300.f ;
wsSigW:_FillValue = 99999.f ;
float prTrop(recNum, mTropNum) ;
prTrop:long_name = "Pressure - Tropopause level" ;
prTrop:units = "hectopascal" ;
prTrop:valid_range = 1.f, 1500.f ;
prTrop:_FillValue = 99999.f ;
float tpTrop(recNum, mTropNum) ;
tpTrop:long_name = "Temperature - Tropopause level" ;
tpTrop:units = "kelvin" ;
tpTrop:valid_range = 173.f, 373.f ;
tpTrop:_FillValue = 99999.f ;
float tdTrop(recNum, mTropNum) ;
tdTrop:long_name = "Dew Point Depression - Tropopause level" ;
tdTrop:units = "kelvin" ;
tdTrop:valid_range = 0.f, 60.f ;
tdTrop:_FillValue = 99999.f ;
float wdTrop(recNum, mTropNum) ;
wdTrop:long_name = "Wind Direction - Tropopause level" ;
wdTrop:units = "degree_true" ;
wdTrop:valid_range = 0.f, 360.f ;
wdTrop:_FillValue = 99999.f ;
float wsTrop(recNum, mTropNum) ;
wsTrop:long_name = "Wind Speed - Tropopause level" ;
wsTrop:units = "meter/sec" ;
wsTrop:valid_range = 0.f, 300.f ;
wsTrop:_FillValue = 99999.f ;
float prMaxW(recNum, mWndNum) ;
prMaxW:long_name = "Pressure - Maximum wind level" ;
prMaxW:units = "hectopascal" ;
prMaxW:valid_range = 1.f, 1500.f ;
prMaxW:_FillValue = 99999.f ;
float wdMaxW(recNum, mWndNum) ;
wdMaxW:long_name = "Wind Direction - Maximum wind level" ;
wdMaxW:units = "degree_true" ;
wdMaxW:valid_range = 0.f, 360.f ;
wdMaxW:_FillValue = 99999.f ;
float wsMaxW(recNum, mWndNum) ;
wsMaxW:long_name = "Wind Speed - Maximum wind level" ;
wsMaxW:units = "meter/sec" ;
wsMaxW:valid_range = 0.f, 300.f ;
wsMaxW:_FillValue = 99999.f ;
// global attributes:
:comment0 = "First mandatory level is surface level" ;
:version = "Forecast Systems Lab 1.4" ;
}
> <station name="SPIM">
> <parameter name="report" value="SPIM 2004072107Z TTDD 7107/ 84628
> 11948 761// 22881 753// 33819 701// 44662 701// 55588 607// 66492 599//
> 77439 549// 88377 579// 99312 549// 11277 577// 22227 511// 33211 519//
> 21212 11955 36019 22909 01022 33867 30009 44829 25014 55790 25015 66754
> 21516 77718 19011 88685 09006 99655 02007 11624 01004 22596 32011 33568
> 29521 44543 29527 55470 29523 66389 24523 77353 26523 88218 26019
> " />
> <parameter name="time" value="2004072107Z" />
> <parameter name="T" value="07" />
> <parameter name="TD" value="" />
> </station>
>
> And in some cases "T" and "TD" are missing. Anyone care to enlighten me?
>
> Thanks,
> Doug
>
> -------- Original Message --------
> Subject: Re: THREDDS client
> Date: Wed, 21 Jul 2004 11:21:21 -0500 (EST)
> From: Poornima Venkatakrishnan <pvenkata@xxxxxxxxxxxxxx>
> Organization: UCAR/Unidata
> To: Doug Lindholm <lind@xxxxxxxx>
> CC: Beth A Plale <plale@xxxxxxxxxxxxxx>, Tom Baltzer
> <tbaltzer@xxxxxxxxxxxxxxxx>
> References: <008e01c4595e$2d3c2210$a98c7580@xxxxxxxxxxxxxxxx>
> <Pine.GSO.4.58.0406240958490.27132@xxxxxxxxxxxxxxxxxxxxxxx>
> <Pine.GSO.4.51.0406241341120.15060@xxxxxxxxxxxxxxxxxxxxxxxx>
> <Pine.GSO.4.58.0407071012570.17966@xxxxxxxxxxxxxxxxxxxxxxx>
> <40F416D6.7080009@xxxxxxxx>
> <Pine.GSO.4.58.0407152029090.13779@xxxxxxxxxxxxxxxxxxxxxxx>
> <Pine.GSO.4.58.0407152350230.14385@xxxxxxxxxxxxxxxxxxxxxxx>
>
> Hi,
>
> I have been able to construct a query and retrieve the URL for the xml
> file which has details about the dataset for the query...
>
> say upper air data with stn=SPIM and time=all
>
> I am able to get back the url
> http://motherlode.ucar.edu:8080/thredds/cgi-bin/UpperairServer.pl?format=xml&stn=SPIM&time=all
>
> But I am trying to find out how to access the URL for the actual data;
> that
> is the urlpath for the nested datasets in the xml file at the URL above.
> It will be great if you can tell me which APIs will get me this detail...
> Thanks in advance.
> Poornima
> ******************************************************************
> Poornima Venkatakrishnan
> Masters student
> Computer Science.
>
> --
> *----------------------------------------------------------------------*
> | Doug Lindholm, Software Engineer | E-mail: lind@xxxxxxxx |
> | Unidata Program Center | Phone: 303-497-8659 |
> | UCAR Office of Programs | |
> | P.O. Box 3000 | There's no place |
> | Boulder, Colorado 80307-3000 | like $HOME |
> *----------------------------------------------------------------------*
>
==============================================================================
Robb Kambic Unidata Program Center
Software Engineer III Univ. Corp for Atmospheric Research
rkambic@xxxxxxxxxxxxxxxx WWW: http://www.unidata.ucar.edu/
==============================================================================