Polynomial Transformations

The Polynomial datum transformation methods use a collection of parameters which define a high order mathematical function for transforming between two horizontal datums. These equations are usually created by local and regional geodetic authorities.  They generally provide high accuracy transformations, but are limited to specific areas of use. In many cases, the accuracy of these transformations is around 1 meter.

For a detailed description of generalized polynomial datum transformations, please refer to the IOGP guidance notes.  These are freely available from http://www.epsg.org

Note: Polynomial datum transformations are generally computed for specific areas of use.  Since the derivations of the formula are based on a limited number of reference points, using the transformation for data outside of the pre-determined envelopes may cause unreliable results.

Related Topics Link IconRelated Topics

Affine Transform

Given a set of Control points and their subsequent Observed points, the corresponding Affine Transform is generated:

x_in, y_in : input point coordinates

x_out, y_out : output point coordinates

x = (x_in + Xshift_in) * scale_in

y = (y_in + Yshift_in) * scale_in

x' = (Xx * x) + (Xy * y) + X1

y' = (Yx * x) + (Yy * y) + Y1

x_out = (x' * scale_out) + Xshift_out

y_out = (y' * scale_out) + Yshift_out

The Affine math transform has the following parameters:

Parameter Name

Parameter String

input point scale

scale_in

input x-coordinate shift

Xshift_in

input y-coordinate shift

Yshift_in

output point scale

scale_out

output x-coordinate shift

Xshift_out

output y-coordinate shift

Yshift_out

x' x coefficient

Xx

x' y coefficient

Xy

x' delta

X1

y' x coefficient

Yx

y' y coefficient

Yy

y' delta

Y1

Second Order Polynomial Transform

Given a set of Control points and their subsequent Observed points, the corresponding Second Order Polynomial Transform is generated:

x_in, y_in : input point coordinates

x_out, y_out : output point coordinates

x = (x_in + Xshift_in) * scale_in

y = (y_in + Yshift_in) * scale_in

x' = (Xx * x) + (Xy * y) + X1 + (Xxy * x * y) + (Xx2 * x * x) + (Xy2 * y * y)

y' = (Yx * x) + (Yy * y) + Y1 + (Yxy * x * y) + (Yx2 * x * x) + (Yy2 * y * y)

x_out = (x' * scale_out) + Xshift_out

y_out = (y' * scale_out) + Yshift_out

The Second Order Polynomial math transform has the following parameters: 

Parameter Name

Parameter String

input point scale

scale_in

input x-coordinate shift

Xshift_in

input y-coordinate shift

Yshift_in

output point scale

scale_out

output x-coordinate shift

Xshift_out

output y-coordinate shift

Yshift_out

x' x coefficient

Xx

x' y coefficient

Xy

x' delta

X1

x' (x * y) coefficient

Xxy

x' x2 coefficient

Xx2

x' y2 coefficient

Xy2

y' x coefficient

Yx

y' y coefficient

Yy

y' delta

Y1

y' (x * y) coefficient

Yxy

y' x2 coefficient

Yx2

y' y2 coefficient

Yy2

Third Order Polynomial Transform

Given a set of Control points and their subsequent Observed points, the corresponding Third Order Polynomial Transform is generated:

x_in, y_in : input point coordinates

x_out, y_out : output point coordinates

x = (x_in + Xshift_in) * scale_in

y = (y_in + Yshift_in) * scale_in

x' = (Xx * x) + (Xy * y) + X1 + (Xxy * x * y) + (Xx2 * x * x) + (Xy2 * y * y) + (Xx3 * x * x * x) + (Xx2y * x * x * y) + (Xxy2 * x * y * y) + (Xy3 * y * y * y)

y' = (Yx * x) + (Yy * y) + Y1 + (Yxy * x * y) + (Yx2 * x * x) + (Yy2 * y * y) + (Yx3 * x * x * x) + (Yx2y * x * x * y) + (Yxy2 * x * y * y) + (Yy3 * y * y * y)

x_out = (x' * scale_out) + Xshift_out

y_out = (y' * scale_out) + Yshift_out

The Third Order Polynomial math transform has the following parameters: 

Parameter Name

Parameter String

input point scale

scale_in

input x-coordinate shift

Xshift_in

input y-coordinate shift

Yshift_in

output point scale

scale_out

output x-coordinate shift

Xshift_out

output y-coordinate shift

Yshift_out

x' x coefficient

Xx

x' y coefficient

Xy

x' delta

X1

x' (x * y) coefficient

Xxy

x' x2 coefficient

Xx2

x' y2 coefficient

Xy2

x' x3 coefficient

Xx3

x' (x2 * y) coefficient

Xx2y

x' (x * y2) coefficient

Xxy2

x' y3 coefficient

Xy3

y' x coefficient

Yx

y' y coefficient

Yy

y' delta

Y1

y' (x * y) coefficient

Yxy

y' x2 coefficient

Yx2

y' y2 coefficient

Yy2

y' x3 coefficient

Yx3

y' (x2 * y) coefficient

Yx2y

y' (x * y2) coefficient

Yxy2

y' y3 coefficient

Yy3

Fourth Order Polynomial Transform

Given a set of Control points and their subsequent Observed points, the corresponding Fourth Order Polynomial Transform is generated:

x_in, y_in : input point coordinates

x_out, y_out : output point coordinates

x = (x_in + Xshift_in) * scale_in

y = (y_in + Yshift_in) * scale_in

x' = (Xx * x) + (Xy * y) + X1 + (Xxy * x * y) + (Xx2 * x * x) + (Xy2 * y * y) + (Xx3 * x * x * x) + (Xx2y * x * x * y) + (Xxy2 * x * y * y) + (Xy3 * y * y * y) + (Xx4 * x * x * x * x) + (Xx3y * x * x * x * y) + (Xx2y2 * x * x * y * y) + (Xxy3 * x * y * y * y) + (Xy4 * y * y * y * y)

y' = (Yx * x) + (Yy * y) + Y1 + (Yxy * x * y) + (Yx2 * x * x) + (Yy2 * y * y) + (Yx3 * x * x * x) + (Yx2y * x * x * y) + (Yxy2 * x * y * y) + (Yy3 * y * y * y) + (Yx4 * x * x * x * x) + (Yx3y * x * x * x * y) + (Yx2y2 * x * x * y * y) + (Yxy3 * x * y * y * y) + (Yy4 * y * y * y * y)

x_out = (x' * scale_out) + Xshift_out

y_out = (y' * scale_out) + Yshift_out

The Fourth Order Polynomial math transform has the following parameters: 

Parameter Name

Parameter String

input point scale

scale_in

input x-coordinate shift

Xshift_in

input y-coordinate shift

Yshift_in

output point scale

scale_out

output x-coordinate shift

Xshift_out

output y-coordinate shift

Yshift_out

x' x coefficient

Xx

x' y coefficient

Xy

x' delta

X1

x' (x * y) coefficient

Xxy

x' x2 coefficient

Xx2

x' y2 coefficient

Xy2

x' x3 coefficient

Xx3

x' (x2 * y) coefficient

Xx2y

x' (x * y2) coefficient

Xxy2

x' y3 coefficient

Xy3

x' x4 coefficient

Xx4

x' (x3 * y) coefficient

Xx3y

x' (x2 * y2) coefficient

Xx2y2

x' (x * y3) coefficient

Xxy3

x' y4 coefficient

Xy4

y' x coefficient

Yx

y' y coefficient

Yy

y' delta

Y1

y' (x * y) coefficient

Yxy

y' x2 coefficient

Yx2

y' y2 coefficient

Yy2

y' x3 coefficient

Yx3

y' (x2 * y) coefficient

Yx2y

y' (x * y2) coefficient

Yxy2

y' y3 coefficient

Yy3

y' x4 coefficient

Yx4

y' (x3 * y) coefficient

Yx3y

y' (x2 * y2) coefficient

Yx2y2

y' (x * y3) coefficient

Yxy3

y' y4 coefficient

Yy4

Fifth Order Polynomial Transform

Given a set of Control points and their subsequent Observed points, the corresponding Fifth Order Polynomial Transform is generated:

x_in, y_in : input point coordinates

x_out, y_out : output point coordinates

x = (x_in + Xshift_in) * scale_in

y = (y_in + Yshift_in) * scale_in

x' = (Xx * x) + (Xy * y) + X1 + (Xxy * x * y) + (Xx2 * x * x) + (Xy2 * y * y) + (Xx3 * x * x * x) + (Xx2y * x * x * y) + (Xxy2 * x * y * y) + (Xy3 * y * y * y) + (Xx4 * x * x * x * x) + (Xx3y * x * x * x * y) + (Xx2y2 * x * x * y * y) + (Xxy3 * x * y * y * y) + (Xy4 * y * y * y * y) + (Xx5 * x * x * x * x * x) + (Xx4y * x * x * x * x * y) + (Xx3y2 * x * x * x * y * y) + (Xx2y3 * x * x * y * y * y) + (Xxy4 * x * y * y * y * y) + (Xy5 * y * y * y * y * y)

y' = (Yx * x) + (Yy * y) + Y1 + (Yxy * x * y) + (Yx2 * x * x) + (Yy2 * y * y) + (Yx3 * x * x * x) + (Yx2y * x * x * y) + (Yxy2 * x * y * y) + (Yy3 * y * y * y) + (Yx4 * x * x * x * x) + (Yx3y * x * x * x * y) + (Yx2y2 * x * x * y * y) + (Yxy3 * x * y * y * y) + (Yy4 * y * y * y * y) + (Yx5 * x * x * x * x * x) + (Yx4y * x * x * x * x * y) + (Yx3y2 * x * x * x * y * y) + (Yx2y3 * x * x * y * y * y) + (Yxy4 * x * y * y * y * y) + (Yy5 * y * y * y * y * y)

x_out = (x' * scale_out) + Xshift_out

y_out = (y' * scale_out) + Yshift_out

The Fifth Order Polynomial math transform has the following parameters: 

Parameter Name

Parameter String

input point scale

scale_in

input x-coordinate shift

Xshift_in

input y-coordinate shift

Yshift_in

output point scale

scale_out

output x-coordinate shift

Xshift_out

output y-coordinate shift

Yshift_out

x' x coefficient

Xx

x' y coefficient

Xy

x' delta

X1

x' (x * y) coefficient

Xxy

x' x2 coefficient

Xx2

x' y2 coefficient

Xy2

x' x3 coefficient

Xx3

x' (x2 * y) coefficient

Xx2y

x' (x * y2) coefficient

Xxy2

x' y3 coefficient

Xy3

x' x4 coefficient

Xx4

x' (x3 * y) coefficient

Xx3y

x' (x2 * y2) coefficient

Xx2y2

x' (x * y3) coefficient

Xxy3

x' y4 coefficient

Xy4

x' x5 coefficient

Xx5

x' (x4 * y) coefficient

Xx4y

x' (x3 * y2) coefficient

Xx3y2

x' (x2 * y3) coefficient

Xx2y3

x' (x * y4) coefficient

Xxy4

x' y5 coefficient

Xy5

y' x coefficient

Yx

y' y coefficient

Yy

y' delta

Y1

y' (x * y) coefficient

Yxy

y' x2 coefficient

Yx2

y' y2 coefficient

Yy2

y' x3 coefficient

Yx3

y' (x2 * y) coefficient

Yx2y

y' (x * y2) coefficient

Yxy2

y' y3 coefficient

Yy3

y' x4 coefficient

Yx4

y' (x3 * y) coefficient

Yx3y

y' (x2 * y2) coefficient

Yx2y2

y' (x * y3) coefficient

Yxy3

y' y4 coefficient

Yy4

y' x5 coefficient

Yx5

y' (x4 * y) coefficient

Yx4y

y' (x3 * y2) coefficient

Yx3y2

y' (x2 * y3) coefficient

Yx2y3

y' (x * y4) coefficient

Yxy4

y' y5 coefficient

Yy5