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