-
Notifications
You must be signed in to change notification settings - Fork 27
Navigation error in GAC and LAC data
The GAC and LAC data that PyGAC is handling is sometimes inaccurate in navigation. What this means is that the longitude and latitude coordinates provided for each pixels in the GAC and LAC files can be off by several kilometers in the worst case. This has been seen mostly on the older POD satellite series.
There are a couple of possible reasons for these errors, explained below.
On the POD series of satellites, the clock onboard the satellite was known to be drifting and become out of sync with actual time, leading in wrong times for each scanline transmitted to earth. Indeed, the timestamp of the line, in combination with the orbital parameters of the satellite, is used on ground to generate the longitude and latitude coordinates for each pixel (among other things). In turn, this leads to an offset of the data in the along-track direction.
Example of part of a pass with effect of the clock error:
In order to help remedy this problem, PyGAC is using estimates of the clock error (https://github.com/pytroll/pygac/blob/main/pygac/clock_offsets_converter.py#L27-L245) in time to adjust the longitude and latitude of each pixel back to its intended position.
The clock error values are just available at some times, so we interpolate linearly the clock error between these key times to have an estimate of the clock error at all times.
To remove the navigation offset, we assume first that the navigation on pass is correct relative to the timestamp, i.e. that if the timestamp had been correct on the satellite clock, then the longitude and latitude would have matched the position of the pixel. With this assumption, we can now use the longitudes and latitudes in the pass and interpolate them (using SLERP https://en.wikipedia.org/wiki/Slerp) based on the corrected timestamp. For the start and end of the swath, when it is not possible to interpolate because the corrected timestamps are outside the range of timestamps in the pass, we use the TLE orbital elements of the swath and pass it on to Pyorbital to compute the longitude and latitude pixels of the swath.
Here is the same example as above corrected for the clock error:
The clock error estimates where gathered from bits and pieces available for different sources.
- Clock drift files from NOAA, look for them on this page
- University of Miami, Pathfinder project
- ESA-CCI project (NOAA-12) (section 2.3)
Another source of error for the data is the attitude error of the satellite, that is the offset angles (roll, pitch and yaw, RPY) with which the satellite instrument is pointing to nadir. Sometimes, the RPY values are provided (non-zero) in the GAC, LAC or FRAC files, in which case PyGAC will use them to recompute the positions of the longitudes and latitudes of the pixels using Pyorbital.