I am doing some ADS-B compact position reporting (CPR) decoding at the moment and one of the things that is described is;

"1/2 zone limit" from the last successfully decoded message.

I understand the reason behind it but how can we be sure that new message location is in 1/2 zone limit from the last decoded message?

Note : I am talking about local CPR decoding.


1 Answer 1


Usually you use a time limit between ADS-B position messages depending on the type of encoding used (surface or airborne) and related assumed maximum speed to ensure that the aircraft cannot have travelled more than half a zone. If you don't receive a new position message within the time limit you will have to use global encoding (for which you need an odd/even pair of position messages within 10 seconds).

If I remember correctly, for airborne decoding an assumed maximum ground speed of 1000 knots is normally used. For surface decoding it is probably 200 knots. The latter gives problems when airborne aircraft send messages in surface format (e.g. due to a system fault).

In addition you can perform a number of tests that show that the newly decoded position is reasonably close to where it was to be expected.

For details see RTCA DO260B or EUROCAE ED102A (they are equivalent). They describe the encoding and decoding of (1090ES) ADS-B messages for airborne applications. In addition you can use EUROCAE ED129B. It is dedicated to ADS-B receiver systems for ATC (for gound based and space based receivers) and it includes a description of the decoding logic and related tests.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .