gistoolkit.projection.ellipsoid.transform
Class CoordinateFrameRotation
java.lang.Object
gistoolkit.projection.ellipsoid.transform.EllipsoidTransform
gistoolkit.projection.ellipsoid.transform.PositionVectorTransform
gistoolkit.projection.ellipsoid.transform.CoordinateFrameRotation
- public class CoordinateFrameRotation
- extends PositionVectorTransform
Although being common practice in particularly the European E&P industry Position Vector Transformation sign convention is not universally accepted. A variation on this formula is also used, particularly in the USA E&P industry. That formula is based on the same definition of translation and scale parameters, but a different definition of the rotation parameters. The associated convention is known as the "Coordinate Frame Rotation" convention.
The formula is:
(X’) ( 1 +Rz -Ry) (X) (dX)
(Y’) = M * ( -Rz 1 +Rx) * (Y) + (dY)
(Z’) ( +Ry -Rx 1 ) (Z) (dZ)
and the parameters are defined as:
(dX, dY, dZ) : Translation vector, to be added to the point's position vector in coordinate system 'A' in order to transform from system 'A' to system 'B'; also: the coordinates of the origin of system 'A' in the 'B' frame.
(Rx, Ry, Rz) : Rotations to be applied to the coordinate frame. The sign convention is such that a positive rotation of the frame about an axis is defined as a clockwise rotation of the coordinate frame when viewed from the origin of the Cartesian coordinate system in the positive direction of that axis, that is a positive rotation about the Z-axis only from system 'A' to system 'B' will result in a smaller longitude value for the point in system 'B'.
M : The scale factor to be applied to the position vector in coordinate system 'A' in order to obtain the correct scale of coordinate system 'B'. M = (1+S*10 6), whereby S is the scale correction expressed in parts per million.
In the absence of rotations the two formulas are identical; the difference is solely in the rotations. The name of the second method reflects this.
Note that the same rotation that is defined as positive in the first method is consequently negative in the second and vice versa. It is therefore crucial that the convention underlying the definition of the rotation parameters is clearly understood and is communicated when exchanging datum transformation parameters, so that the parameters may be associated with the correct coordinate transformation method (algorithm).
- Author:
- ithaqua
Constructor Summary |
CoordinateFrameRotation()
Creates a new CoordinateFrameRotation |
CoordinateFrameRotation(Ellipsoid inFromEllipsoid,
Ellipsoid inToEllipsoid,
double inXTranslation,
double inYTranslation,
double inZTranslation,
double inXRotation,
double inYRotation,
double inZRotation,
double inScaleDifference)
Creates new CoordinateFrameRotation. |
Method Summary |
protected void |
doForward(Point inPoint)
Transform the coordinates in the forward direction |
protected void |
doReverse(Point inPoint)
Transform the coordinates in the reverse direction |
static void |
main(java.lang.String[] inargs)
Test this transform |
Methods inherited from class gistoolkit.projection.ellipsoid.transform.PositionVectorTransform |
getEditPanel, getScale, getXRotation, getXTranslation, getYRotation, getYTranslation, getZRotation, getZTranslation, setParameter, setScale, setXRotation, setXTranslation, setYRotation, setYTranslation, setZRotation, setZTranslation |
Methods inherited from class gistoolkit.projection.ellipsoid.transform.EllipsoidTransform |
forward, getFromEllipsoid, getIsReversed, getName, getToEllipsoid, reverse, setFromEllipsoid, setIsReversed, setName, setToEllipsoid, toCartesian, toPolar, toString |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
CoordinateFrameRotation
public CoordinateFrameRotation()
- Creates a new CoordinateFrameRotation
CoordinateFrameRotation
public CoordinateFrameRotation(Ellipsoid inFromEllipsoid,
Ellipsoid inToEllipsoid,
double inXTranslation,
double inYTranslation,
double inZTranslation,
double inXRotation,
double inYRotation,
double inZRotation,
double inScaleDifference)
- Creates new CoordinateFrameRotation. The To and From ellipsoids provide the reference frame. The STranslation and YTranslation are in the units of measure of the ellipsoids
The Rotation parameters must be epxressed in decimal degreese. The scale difference is expressed in parts per million or ppm.
doForward
protected void doForward(Point inPoint)
- Transform the coordinates in the forward direction
- Overrides:
doForward
in class PositionVectorTransform
doReverse
protected void doReverse(Point inPoint)
- Transform the coordinates in the reverse direction
- Overrides:
doReverse
in class PositionVectorTransform
main
public static void main(java.lang.String[] inargs)
- Test this transform