netCDF/ACARS
Jennifer M. Adams
jma at COLA.IGES.ORG
Tue Jan 9 10:20:41 EST 2007
Hi, Axel --
What you have is essentially station data in netcdf format, and there
is no interface in GrADS for that. It probably wouldn't take a whole
lot of work to write a little external program to read each data
value along the "recNum" axis and convert it to the GrADS binary
format for station data, then you could display the data in a spatial
(lat/lon) domain.
An alternative is to treat the "recNum" axis as a generic X axis, and
then you can bring the data into GrADS as a 1-dimensional grid. That
way you could easily draw time series plots, but you could also treat
longitude and latitude as data variables and use them in a script to
cobble together a plot that would look like the output from 'set
gxout stnmark'. You could write a script that would get that lat/lon
for each point in the time series, then 'draw mark' at each location
with the color determined by the data value.
Jennifer
On Jan 9, 2007, at 3:50 AM, Barleben Axel wrote:
> Hi,
>
> Are there any decoders for the netCDF/ACARS-data. How can I
> accommodate
> the transient nature of aircraft report locations (like surface ship).
> "sdfopen" dos'nt work.
> Are there any examples for descriptor files (.xdf ; .ctl)
>
> Here are the ncdump -c
>
> netcdf EdrQc.20060516.1650 {
> dimensions:
> recNum = UNLIMITED ; // (230 currently)
> numEdrHistBins = 8 ;
> dateLen = 30 ;
> aircraftIdLen = 7 ;
> airportIdLen = 4 ;
> airlineLen = 4 ;
> variables:
> char minDate(dateLen) ;
> minDate:long_name = "minimum observation date/time" ;
> minDate:units = "yyyy/mm/dd hh:mm:ss UTC" ;
> char maxDate(dateLen) ;
> maxDate:long_name = "maximum observation date/time" ;
> maxDate:units = "yyyy/mm/dd hh:mm:ss UTC" ;
> int minSecs ;
> minSecs:long_name = "minimum observation Unix time" ;
> minSecs:units = "seconds since 1970-1-1 00:00:00" ;
> int maxSecs ;
> maxSecs:long_name = "maximum observation Unix time" ;
> maxSecs:units = "seconds since 1970-1-1 00:00:00" ;
> int qcVersion ;
> qcVersion:long_name = "Quality control algorithm
> version
> number" ;
> qcVersion:valueUNKN = " " ;
> qcVersion:FillValue = " " ;
> float latitude(recNum) ;
> latitude:long_name = "QC\'d latitude" ;
> latitude:units = "degrees_north" ;
> latitude:valid_range = 0.f, 90.f ;
> latitude:_FillValue = 99999.f ;
> float latitudeRaw(recNum) ;
> latitudeRaw:long_name = "Raw latitude" ;
> latitudeRaw:units = "degrees_north" ;
> latitudeRaw:valid_range = 0.f, 90.f ;
> latitudeRaw:_FillValue = 99999.f ;
> float longitude(recNum) ;
> longitude:long_name = "QC\'d longitude" ;
> longitude:units = "degrees_east" ;
> longitude:_valid_range = -180.f, 180.f ;
> longitude:_FillValue = 99999.f ;
> float longitudeRaw(recNum) ;
> longitudeRaw:long_name = "Raw longitude" ;
> longitudeRaw:units = "degrees_east" ;
> longitudeRaw:_valid_range = -180.f, 180.f ;
> longitudeRaw:_FillValue = 99999.f ;
> float altitude(recNum) ;
> altitude:long_name = "QC\'d altitude" ;
> altitude:units = "feet (pressure altitude, msl)" ;
> altitude:_FillValue = 99999.f ;
> altitude:valid_min = -100.f ;
> float altitudeRaw(recNum) ;
> altitudeRaw:long_name = "Raw altitude" ;
> altitudeRaw:units = "feet (pressure altitude, msl)" ;
> altitudeRaw:_FillValue = 99999.f ;
> altitudeRaw:valid_min = -100.f ;
> int timeObs(recNum) ;
> timeObs:long_name = "QC\'d time of observation" ;
> timeObs:units = "seconds since 1970-1-1 00:00:00" ;
> timeObs:_FillValue = 0 ;
> int timeObsRaw(recNum) ;
> timeObsRaw:long_name = "Raw time of observation" ;
> timeObsRaw:units = "seconds since 1970-1-1 00:00:00" ;
> timeObsRaw:_FillValue = 0 ;
> int interpInd(recNum) ;
> interpInd:long_name = "flag indicating if
> lat,lon,time,alt interpolated" ;
> interpInd:value_0 = "Value not interpolated" ;
> interpInd:value_1 = "Value interpolated" ;
> float medEDR(recNum) ;
> medEDR:long_name = "Median eddy dissipation rate" ;
> medEDR:units = "m^(2/3) s^-1" ;
> medEDR:_FillValue = 99999.f ;
> medEDR:valid_range = 0.f, 1.f ;
> float medEdrQCInd(recNum) ;
> medEdrQCInd:long_name = "Median EDR quality control
> indicator" ;
> medEdrQCInd:units = "m^(2/3) s^-1" ;
> medEdrQCInd:_FillValue = 99999.f ;
> medEdrQCInd:valid_range = 0.f, 1.f ;
> float maxEDR(recNum) ;
> maxEDR:long_name = "Raw peak eddy dissipation rate" ;
> maxEDR:units = "m^(2/3) s^-1" ;
> maxEDR:_FillValue = 99999.f ;
> maxEDR:valid_range = 0.f, 1.f ;
> float maxEdrQCInd(recNum) ;
> maxEdrQCInd:long_name = "Peak EDR quality control
> indicator" ;
> maxEdrQCInd:units = "m^(2/3) s^-1" ;
> maxEdrQCInd:_FillValue = 99999.f ;
> maxEdrQCInd:valid_range = 0.f, 1.f ;
> int dataSource(recNum) ;
> dataSource:long_name = "data stream that provided the
> data" ;
> dataSource:value_0 = "ACARS (raw)" ;
> dataSource:value_1 = "MDCRS (BUFR)" ;
> int fileTime(recNum) ;
> fileTime:long_name = "time that data was received at
> processing site" ;
> fileTime:units = "seconds since 1970-1-1 00:00:00" ;
> fileTime:_FillValue = 0 ;
> int edrAlgVersion(recNum) ;
> edrAlgVersion:long_name = "EDR algorithm version
> number"
> ;
> edrAlgVersion:valueUNKN = " " ;
> edrAlgVersion:FillValue = " " ;
> char origAirport(recNum, airportIdLen) ;
> origAirport:long_name = "Origination Airport" ;
> origAirport:valueUNKN = " " ;
> origAirport:FillValue = " " ;
> char destAirport(recNum, airportIdLen) ;
> destAirport:long_name = "Destination Airport" ;
> destAirport:valueUNKN = " " ;
> destAirport:FillValue = " " ;
>
> // global attributes:
> :title = "EDR Data" ;
> :reference = "Phase 2 QC" ;
> :version = "2.0" ;
> :cdlDate = "20060523" ;
> :Conventions = "COORDS" ;
> data:
> }
>
> Thanks for help
>
> Axel Barleben
> German weather service(DWD)
>
Jennifer M. Adams
IGES/COLA
4041 Powder Mill Road, Suite 302
Beltsville, MD 20705
jma at cola.iges.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://gradsusr.org/pipermail/gradsusr/attachments/20070109/14f12256/attachment.html
More information about the gradsusr
mailing list