netCDF/ACARS

Barleben Axel Axel.Barleben at DWD.DE
Tue Jan 9 03:50:54 EST 2007


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)



More information about the gradsusr mailing list