FSL ACARS Quality Control

The following tests and corrections are performed.


(details of the tests)

  • 1.temperature in range for altitude

  • 2. wind direction in range 0-360, but different for UPS aircraft. see details.

  • 3. wind speed >= 0 and less than max for altitude, but different for Delta MD88 aircraft. see details.

  • 4. aircraft groundspeed less than a certain value (currently 1099 kts)

  • 4a. aircraft lat or lon must be different between adjacent obs, if the altitude is different between the obs (the later ob is flagged bad).

  • 5. "bounces" in aircraft altitude in any 3 adjacent obs must be less than a certain value (currently 38 feet per second).


  • some aircraft report lat/lon in DDTTT (D=degrees, T=thousandths of a degree) instead of the expected DDMMt (D=degrees, M=minutes, t=tenths of minutes). The program discovers such aircraft (by looking for the last 3 digits of lat or lon having values of 600 or larger), maintains a list of the aircraft, and corrects the lat/lon. This is indicated by the correction flag l (the letter el).

  • some aircraft report temperature in degrees instead of tenths of degrees. The program uses a list of such aircraft (provided by hand) to correct these. This is indicated by the correction flag T (capitalized). As of 11-Jan-99, there are no longer any aircraft on this list.

  • In addition, all Delta MD88s have the observation time set to the report receipt time, because they always report 0000 as the obs time. This is indicated by the corrected-flag t (lower case), ot f if the data have had their longitude flipped around 95W. (As of 20-Jan-00, no aircraft require their longitude to be flipped.)


Some high-resolution ascent/descent observations are reported without times, and/or lat/lon. In these cases:

  • time is interpolated linearly within each message. (The interpolation is based on the takeoff time and the report time of subsequent messages, with each message containing 10-15 observations.)
  • lat/lon is interpolated linearly between known observation locations (with a maximum expected error of 2.5 km in the worst case, and generally less than 1 km).



Max temp:
if altitude > 35000 ft, T must be < -20 C
otherwise, T must be < 60 - 80 * (altitude/35000)

Min temp:
if altitude < 18000 ft, T must be > -60 C
if altitude > 35000 ft, t must be > -100 C
otherwise, t must be > -60 -40*(altitude - 18000)/17000


For airlines other than UPS: 0 <= direction <= 360
For UPS, also allow -99 to -37, and -9 to 0 degrees. (Recent (8/96) evidence suggests wind directions of -36 to -18 are also good, but these are currently flagged as bad.)

speed (in knots):
speed >= 0
Also, for Delta MD88 aircraft, wind speeds of zero are flagged as bad (with bad wind speed flag = 'D').

and for the maximum speed, in knots, here's the C code:

    if(altitude < 30000.) {
      wmax=70. + 230.* altitude / 30000.;
    } else if (altitude < 40000.) {
      wmax = 300.;
    } else if (altitude < 45000.) {
      wmax = 300. - 100 * (altitude - 40000.) / 5000.;
    } else {
      wmax = 200.;
    if(WindSpeed > wmax) {
      bad = 1;

The remaining tests require a pair of observations. I assume reports from the same aircraft are unrelated if more than 20 minutes separates them.

Platform speed >= 0 (Must allow zero because sometimes the aircraft report from the ground, or circle.)

Platform speed <= 600 m/s (= 1099 kts) (This is faster than actual speeds because of the 1 minute time resolution on the observation time. Also, I use speed instead of change in lat/lon because the time between observations can vary.)

The following test requires three observations:

'Bounce' < 38 feet per second. ("Bounce" refers to an ascent followed by a descent, or vice versa. This test performs much better than simpler ascent/descent tests, because isolated bad observations that distort the altitude are relatively more common than step-function kinds of altitude errors.)

Quality Control Flags

The netCDF data (and the textual output from the non-java display) contains several flags for each datum, as follows. In general, for error tests, 'p' means the test was passed, '-' means the test could not be performed, and capital letters designate various kinds of failure. Capital letters are associated with data that fail QC.

  • Data Descriptor - 'R' if reported temperature and wind were in appropriate ranges; 'T' if in addition tests for platform continuity were passed; 'X' if the data failed any test.

  • errorType - 'W' for wind, 'T' for temperature, 'B'for both.

  • tempError - temperature. 'H' for too hot, 'C' for too cold.

  • windDirError - wind direction. 'B' for bad.

  • windSpeedError - wind speed. 'S' for < 0, 'F' for > maximum, 'D' for zero winds from some Delta MD88D aircraft.

  • speedError - platform speed. 'S' for too slow (stuck lat/lon), 'F' for too fast.

  • bounceError - platform altitude 'bounce' (see below). 'L' for below adjacent points, 'H' for above.

  • interpolatedTime - ('i'), or as reported ('r')

  • interpolatedLL - indicate lat/lon was interpolated ('i'), or as reported ('r')

  • rollFlag - 'G' means roll < 5 degrees, 'B' means roll > 5 degrees, '.' means not reported

  • correctedFlag - (See details.)
    • 'r' for "raw" data,
    • 'l' for data that has undergone lat/lon correction (other than interpolation),
    • 'T' for data that has undergone temperature correction,
    • 'f' for data that has had its longitude and wind direction flipped and its obs time set to the report receipt time,
    • 't' for data that has had its obs time set to the report receipt time.

Prepared by Bill Moninger, Bill.Moninger@noaa.gov
Last modified: Tue Apr 22 15:27:02 DST 2008