lveci/nest — pull request #19 by pmar (2013-09-03 15:37:06+00:00)
Title: Series of fixes and updates for orbit interpolations in NEST

The orbit interpolations in NEST (and BEAM) were _completely_ broken. ApplyOrbitOp would introduce errors in range of 0.5 - 1.5 meters in X, Y, Z directions. Velocities were also effected. These errors would scale with the size of the frame, and wrt the distance between seed and interpolation points.
The orbit interpolation errors would show up, in both the interferometric (eg, the flat earth phase would not be correctly removed), and SAR applications (eg, errors in terrain correction, etc). In general any operation building on geometry/orbits was effected by this problem.

This pull request fixes all the observed issues!

Also the numerical comparison between: 'getorb' package, internally developed Matlab tools, and patched NEST orbit interpolators was performed. With this pull request, the difference between NEST and other orbit interpolators is on few mm's level (1-3mm depending on the axis). This very small difference can be attributed to: (1) the orbit noise, (2) to the numerical precision (getorb works with floats, and orbits are annotated with mm precision), and (3) slightly different GRS80 parameters used in Getorb and NEST. Anyhow, these difference we can consider as system noise, and ignore.

For more details and specific code changes see commit log.

Notes and remarks:

- Checks and orbit correction for the 'leap second' are implemented; but still not pushed to public branches because of lack of testing. With this changes I believe we should resolve for the issue reported here: https://earth.esa.int/web/guest/-/leap-second-impact-on-envisat-data-on-1-january-2009-6032

- BEAM is also affected by this problem - EnvisatOrbitReader() class. I'll issue a separate pull request to merge in this fixes into BEAM.