We assume the precise orbits are given some time before the first and after the last azimuth line. Normally we use getorb to obtain satellite ephemerides with a time interval of 1 second (approximately 21 datapoints for a frame of typical 15 seconds).
Natural cubic splines are then used to interpolate the orbit. Because these splines do not behave very well at the edges we use some points before/after the first/last line. Note that the x, y, and z coordinate are interpolated independently.
The Delft precise orbits and the getorb package are used to obtain the points. Note that getorb also interpolates based on 30 second ephemerides.
We would like to test if setting the data interval to e.g. 30 second gives better results. A test can be easily performed for the computation and modeling of the reference phase. Assume that this phase can be accurately modeled by a 2d polynomial of degree 5. Now first let the precise orbit be given with a data interval of 1 second. Use step REFPHA to model the reference phase based on 501 points distributed over the scene. Next, let the precise orbit be given with a data interval of 30 seconds and again model the reference phase. In the log file some statistics on the error of the model w.r.t. the computed reference phase is given, which can be used to find out which orbit gives a better model. In both cases use at least 6 points before and 6 points after the last point in the frame.
The interpolation is done as follows, compare with numerical recipes in c (splint routine). First the piecewise polynomial coefficients are computed by solving a tridiagonal system and stored. For interpolation, the correct coefficients (interval) are read and the polynomial is evaluated.
Because we know that in our situation (with getorb) we always have ephemerides with a constant time interval we could speed up the computations. Also the fact that this interval equals 1 can be easily exploited. However, we decided not to exploit these features because we like to stay independent from a particular orbit format. (and these computations can be done fast anyhow.)
The velocity can be interpolated by the derivative of the piecewise polynomials: [see source code or numerical recipes].
The accerelation can be interpolated by the second derivative of the piecewise polynomials: [see source code or numerical recipes].
If less points are known (than the typically 21 of getorb) (one wants to use the SLC datapoints for a quick look analysis for example) then this kind of interpolation probably does not work very well. In future we will include an option to interpolate by a low degree polynomial which is estimated (least squares) from the datapoints. Getting the derivates at any point is straightforward in this case.
As a satellite moves very smoothly, a polynomial of a lower degree might even be nearer to the 'true' orbit then a piecewice polynomial. In future we want to model the baseline (Bh, Bv) as a function of azimuth time by a first? order polynomial. This probably is more efficient than computing the positions of the sensors each time the baseline is required. We do not know what the best way is to do this.