EPSG
EPSG guidance note #7-2, http://www.epsg.org
2017-06-13
Note: These formulas have been transcribed from EPSG Guidance Note #7-2. Users are encouraged to use that document rather than the text which follows as limitations in the transcription will be avoided. The simplest of all polynomials is the general polynomial function. In order to avoid problems of numerical instability this type of polynomial should be used after reducing the coordinate values in both the source and the target coordinate reference system (CRS) to ‘manageable’ numbers, between –10 and +10 at most. This is achieved by working with offsets relative to a central evaluation point, scaled to the desired number range by applying a scaling factor to the coordinate offsets. Hence an evaluation point is chosen in the source CRS (XS0, YS0) and in the target CRS (XT0, YT0). Often these two sets of coordinates do not refer to the same physical point but two points are chosen that have the same coordinate values in both the source and the target CRS. (When the two points have identical coordinates, these parameters are conveniently eliminated from the formulas, but the general case where the coordinates differ is given here). The selection of an evaluation point in each of the two CRSs allows the point coordinates in both to be reduced as follows: XS - XS0 YS - YS0 and XT – XT0 YT – YT0 These coordinate differences are expressed in their own unit of measure, which may not be the same as that of the corresponding CRS.) A further reduction step is usually necessary to bring these coordinate differences into the desired numerical range by applying a scaling factor to the coordinate differences in order to reduce them to a value range that may be applied to the polynomial formulae below without introducing numerical precision errors: U = mS.(XS - XS0) V = mS.(YS - YS0) where XS , YS are coordinates in the source CRS, XS0 , YS0 are coordinates of the evaluation point in the source CRS, mS is the scaling factor applied the coordinate differences in the source CRS. The normalised coordinates U and V of the point whose coordinates are to be transformed are used as input to the polynomial transformation formula. In order to control the numerical range of the polynomial coefficients An and Bn the output coordinate differences dX and dY are multiplied by a scaling factor, mT. mT.dX = A0 + A1.U + A2.V + A3.U^2 + A4.U.V + A5.V^2 + A6.U^3 + A7.U^2.V + A8.U.V^2 + A9.V^3 + A10.U^4 + A11.U^3.V + A12.U^2.V^2 + A13.U.V^3 + A14.V^4 + A15.U^5 + A16.U^4.V + A17.U^3.V^2 + A18.U^2.V^3 + A19.U.V^4 + A20.V^5 + A21.U^6 + A22.U^5.V + A23.U^4.V^2 + A24.U^3.V^3 + A25.U^2.V^4 + A26.U.V^5 + A27.V^6 mT.dY = B0 + B1.U + B2.V + B3.U^2 + B4.U.V + B5.V^2 + B6.U^3 + B7.U^2.V + B8.U.V^2 + B9.V^3 + B10.U^4 + B11.U^3.V + B12.U^2.V^2 + B13.U.V^3 + B14.V^4 + B15.U^5 + B16.U^4.V + B17.U^3.V^2 + B18.U^2.V^3 + B19.U.V^4 + B20.V^5 + B21.U^6 + B22.U^5.V + B23.U^4.V^2 + B24.U^3.V^3 + B25.U^2.V^4 + B26.U.V^5 + B27.V^6 from which dX and dY are evaluated. These will be in the units of the target CRS. The polynomial coefficients are given as parameters of the form Aumvn and Bumvn, where m is the power to which U is raised and n is the power to which V is raised. For example, A17 is represented as coordinate operation parameter Au3v2. The relationship between the two CRSs can now be written as follows: (XT - XT0) = (XS – XS0) + d (YT - YT0) = (YS – YS0) + dY or XT = XS – XS0 + XT0 + d YT = YS – YS0 + YT0 + dY where: XT, YT are coordinates in the target CRS, XS, YS are coordinates in the source CRS, XS0, YS0 are coordinates of the evaluation point in the source CRS, XT , YT0 are coordinates of the evaluation point in the target CRS, dX, dY are derived through the scaled polynomial formulas.