To check my decoding it would be helpful to have some correct reference data for checking input and output as follows:

Input: 19-bit Compact Position Reporting (CPR) even latitude and longitude / odd latitude and longitude (decimal values are OK)

Correct output: Latitude and longitude in degrees (decimal)

Where can I find sample data that I can use for testing?

  • $\begingroup$ Hello Hans, welcome to aviation.SE $\endgroup$ – DeltaLima Nov 17 '16 at 14:41

The best source for that data would be EUROCAE Document ED-102A or RTCA Document DO-260B. These are the Minimal Operational Performance Specifications for ADS-B on 1090MHz. They include all the requirements on the ADS-B transmitter, including test data to demonstrate that the requirements are met.

However, if you don't have access to those documents, you can try and receive some ADS-B messages from aircraft on the ground using an ADS-B receiver and decode those. If the surface position messages indicate good position integrity (format type code 5, 6, 7 but not 8) and the decoded positions appear on airport paved surfaces consistently than you are sure that you've got it right.

Note that ADS-B surface decoding is not globally unambiguous; you need to know where approximately the receiver is (as in which N/S,E/W hemisphere) to unambiguously decode the surface position message.

The table below shows some encodings that can be used to verify wether your surface CPR decoder works.

The first four columns show latitude and longitude (in decimal and 32 bit angular weighted binary hexadecimal notation), the next 6 columns show the CPR data. \begin{array}{|c|c|c|c|c|c|c|c|c|c|} \hline \text{Latitude}&&\text{Longitude}&&\text{Lat.}&\text{Lon.}&\text{NL}&\text{Lat.}&\text{Lon.}&\text{NL}\\ (Decimal)&(HEX)&(Decimal)&(HEX)&(HEX)&(HEX)&(Dec.)&(HEX)&(HEX)&(Dec.)\\ \hline -27.93897726&EC21DD4A&153.00998&6CCE9DE7&0BF7F&03636&53&15E70&0CFC1&53\\ \hline 27.938976&13DE22A7 &45.0000&20000000&14081&10000&53&0A190&00000&53\\ \hline \end{array} source: EUROCAE ED-102A , table 2-214 (truncated), page 699

  • $\begingroup$ Hello DeltaLima, thank you for your answer. However, what I want is some matching data, i.e. cpr data with corresponding (correct) latitude/longitude values. $\endgroup$ – Hans Muschik Nov 21 '16 at 12:57
  • $\begingroup$ Hello @HansMuschik, I have the data you are looking for somewhere, but I need to dig it out the archives which will take some time. Alternatively you can provide an odd/even surface squitter pair (from the same aircraft, transmitted within 10 seconds from each other) and I'll decode it for you. $\endgroup$ – DeltaLima Nov 21 '16 at 14:32
  • $\begingroup$ Hello DeltaLima, thank you for your support. Actually, it’s the other way around - testing a program which produces cpr values for irs data. Out of interest I looked into the cpr calculations and wrote a script mimicking the conversion in both directions. For coding I used the specified algorithm, for decoding available snippets from the internet. For air I found example data in the net, but until now not for ground. For Lat = 50 and Lon = 15 I calculated ground cpr even: 174763, 305835 and ground cpr odd: 101945, 283989. My decode then results again in 50/15. $\endgroup$ – Hans Muschik Nov 22 '16 at 8:36
  • $\begingroup$ @HansMuschik, I will run it though my software tonight and let you know. Out of curiosity, what is irs data? $\endgroup$ – DeltaLima Nov 22 '16 at 8:54
  • $\begingroup$ Inertial reference system, more commonly known as an inertial navigation system $\endgroup$ – Hans Muschik Nov 22 '16 at 9:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.