I am going to make notes (and code) available here to help cryosphere investigators use GPS reflections.  Eventually I will extend these notes to include sea level measurements, but for now I am going to focus on the cryosphere world. I will only talk about GPS here, but most everything I talk about can be extended to GNSS.

Picking a site:

  • Your expected GPS reflection zone is not a mystery. You can calculate it before you go in the field.
  • Similarly, the sampling rate you need to use is not unknown.


Running a site:

  • Sampling interval should be commensurate with your reflection target area. 30 sec is fine for many sites, but not all. Details to follow.
  • Remove the elevation mask.
  • Track all GPS signals! (L2P and L2C, L5). If you can track GLONASS, Galileo, Beidou without costing a lot of money, I strongly recommend it.


Analyzing the Data

  • Make sure you have your data in the RINEX format.  Typically this is RINEX version 2.
  • I use the  SNR observables. In RINEX speak, these are S1, S2, and S5 for the SNR data on the L1, L2, and L5 frequencies. If you have inadvertently made a RINEX file without a sensible receiver position in it, you need to fix it.
  • Of course you can write your own code to decode the RINEX file. The main things you need to extract are the SNR observables and the elevation and azimuth angles. To compute the latter you need information about where the satellites were when the GPS signals were sent.  You can use my code (RinexSNR) to do this if you want – but it is in Fortran.
  • You need a source for the GPS orbits.
  • Once you have a snrfile, you need to decide in which directions  you are going to look for reflections. For now, let’s assume we are going to figure this out from the data themselves.
  • You should load the snrfile into memory, and loop through all possible GPS satellites (from 1-32), and all possible azimuths.