org.deegree.cs.transformations.helmert
Class Helmert

java.lang.Object
  extended by org.deegree.cs.CRSIdentifiable
      extended by org.deegree.cs.transformations.Transformation
          extended by org.deegree.cs.transformations.helmert.Helmert
All Implemented Interfaces:
Object, TypedObjectNode, CRSResource

public class Helmert
extends Transformation

Parameters for a geographic transformation into another datum. The Bursa Wolf parameters should be applied to geocentric coordinates, where the X axis points towards the Greenwich Prime Meridian, the Y axis points East, and the Z axis points North.

Version:
$Revision: 30120 $, $Date: 2011-03-22 10:04:15 +0100 (Tue, 22 Mar 2011) $
Author:
Rutger Bezema, last edited by: $Author: aschmitz $

Field Summary
 double dx
          Bursa Wolf shift in meters.
 double dy
          Bursa Wolf shift in meters.
 double dz
          Bursa Wolf shift in meters.
 double ex
          Bursa Wolf rotation in arc seconds, which is 1/3600 of a degree.
 double ey
          Bursa Wolf rotation in arc seconds.
 double ez
          Bursa Wolf rotation in arc seconds.
 double ppm
          Bursa Wolf scaling in parts per million.
 
Constructor Summary
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, ICRS sourceCRS, ICRS targetCRS, CRSCodeType code)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, ICRS sourceCRS, ICRS targetCRS, CRSCodeType[] codes)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, ICRS sourceCRS, ICRS targetCRS, CRSCodeType[] codes, String[] names, String[] versions, String[] descriptions, String[] areaOfUses)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, ICRS sourceCRS, ICRS targetCRS, CRSCodeType code, String name, String version, String description, String areaOfUse)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, ICRS sourceCRS, ICRS targetCRS, CRSResource identifiable)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, ICRS sourceCRS, ICRS targetCRS, CRSResource identifiable, boolean inRadians)
           
Helmert(ICRS sourceCRS, CRSCodeType[] codes)
          Construct a conversion info with all parameters set to 0, the target crs is GeographicCRS.WGS84
Helmert(ICRS sourceCRS, ICRS targetCRS, CRSCodeType code)
          Construct a conversion info with all parameters set to 0;
Helmert(ICRS sourceCRS, ICRS targetCRS, CRSCodeType[] codes)
          Construct a conversion info with all parameters set to 0;
Helmert(ICRS sourceCRS, ICRS targetCRS, CRSCodeType[] codes, String[] names, String[] versions, String[] descriptions, String[] areasOfUse)
          Construct a conversion info with all parameters set to 0;
 
Method Summary
 boolean areRotationsInRad()
           
static Transformation createAxisAllignedTransformedHelmertTransformation(Helmert transform)
           
 List<javax.vecmath.Point3d> doTransform(List<javax.vecmath.Point3d> srcPts)
          Do a transformation, e.g. the incoming data will be transformed into other coordinates.
 boolean equals(Object other)
           
 javax.vecmath.Matrix4d getAsAffineTransform()
          Returns an affine transformation also known as the "Helmert" transformation.
 String getImplementationName()
           
 int hashCode()
          Implementation as proposed by Joshua Block in Effective Java (Addison-Wesley 2001), which supplies an even distribution and is relatively fast.
 boolean hasValues()
           
 boolean isIdentity()
           
 String toString()
          Returns the Well Know Text (WKT) for this object.
 
Methods inherited from class org.deegree.cs.transformations.Transformation
areInverse, canTransform, contains, copyTransformation, createFromTo, doTransform, doTransform, equalOnCRS, getSourceCRS, getSourceDimension, getTargetCRS, getTargetDimension, getTransformationName, getTransformationPath, inverse, isInverseTransform, setSourceCRS
 
Methods inherited from class org.deegree.cs.CRSIdentifiable
addAreaOfUse, addName, checkForNullObject, checkForNullObject, checkForNullObject, getAreaOfUse, getAreaOfUseBBox, getAreasOfUse, getCode, getCodeAndName, getCodes, getDescription, getDescriptions, getId, getName, getNames, getOrignalCodeStrings, getVersion, getVersions, hasCode, hasId, hasIdOrName, setDefaultAreaOfUse, setDefaultDescription, setDefaultId, setDefaultName, setDefaultVersion
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Field Detail

dx

public double dx
Bursa Wolf shift in meters.


dy

public double dy
Bursa Wolf shift in meters.


dz

public double dz
Bursa Wolf shift in meters.


ex

public double ex
Bursa Wolf rotation in arc seconds, which is 1/3600 of a degree.


ey

public double ey
Bursa Wolf rotation in arc seconds.


ez

public double ez
Bursa Wolf rotation in arc seconds.


ppm

public double ppm
Bursa Wolf scaling in parts per million.

Constructor Detail

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               ICRS sourceCRS,
               ICRS targetCRS,
               CRSResource identifiable,
               boolean inRadians)
Parameters:
dx - Bursa Wolf shift in meters.
dy - Bursa Wolf shift in meters.
dz - Bursa Wolf shift in meters.
ex - Bursa Wolf rotation in arc seconds or in radians (by setting the flag).
ey - Bursa Wolf rotation in arc seconds or in radians (by setting the flag).
ez - Bursa Wolf rotation in arc seconds or in radians (by setting the flag).
ppm - Bursa Wolf scaling in parts per million.
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
identifiable - object containing all relevant id.
inRadians - true if the rotation parameters are in radians

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               ICRS sourceCRS,
               ICRS targetCRS,
               CRSResource identifiable)
Parameters:
dx - Bursa Wolf shift in meters.
dy - Bursa Wolf shift in meters.
dz - Bursa Wolf shift in meters.
ex - Bursa Wolf rotation in arc seconds.
ey - Bursa Wolf rotation in arc seconds.
ez - Bursa Wolf rotation in arc seconds.
ppm - Bursa Wolf scaling in parts per million.
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
identifiable - object containing all relevant id.

Helmert

public Helmert(ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType[] codes,
               String[] names,
               String[] versions,
               String[] descriptions,
               String[] areasOfUse)
Construct a conversion info with all parameters set to 0;

Parameters:
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
codes -
names -
versions -
descriptions -
areasOfUse -

Helmert

public Helmert(ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType code)
Construct a conversion info with all parameters set to 0;

Parameters:
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
code -

Helmert

public Helmert(ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType[] codes)
Construct a conversion info with all parameters set to 0;

Parameters:
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
codes -

Helmert

public Helmert(ICRS sourceCRS,
               CRSCodeType[] codes)
Construct a conversion info with all parameters set to 0, the target crs is GeographicCRS.WGS84

Parameters:
sourceCRS - of this helmert transformation
codes -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType[] codes,
               String[] names,
               String[] versions,
               String[] descriptions,
               String[] areaOfUses)
Parameters:
dx - Bursa Wolf shift in meters.
dy - Bursa Wolf shift in meters.
dz - Bursa Wolf shift in meters.
ex - Bursa Wolf rotation in arc seconds.
ey - Bursa Wolf rotation in arc seconds.
ez - Bursa Wolf rotation in arc seconds.
ppm - Bursa Wolf scaling in parts per million.
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
codes -
names -
versions -
descriptions -
areaOfUses -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType code,
               String name,
               String version,
               String description,
               String areaOfUse)
Parameters:
dx - Bursa Wolf shift in meters.
dy - Bursa Wolf shift in meters.
dz - Bursa Wolf shift in meters.
ex - Bursa Wolf rotation in arc seconds.
ey - Bursa Wolf rotation in arc seconds.
ez - Bursa Wolf rotation in arc seconds.
ppm - Bursa Wolf scaling in parts per million.
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
code -
name -
version -
description -
areaOfUse -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType[] codes)
Parameters:
dx - Bursa Wolf shift in meters.
dy - Bursa Wolf shift in meters.
dz - Bursa Wolf shift in meters.
ex - Bursa Wolf rotation in arc seconds.
ey - Bursa Wolf rotation in arc seconds.
ez - Bursa Wolf rotation in arc seconds.
ppm - Bursa Wolf scaling in parts per million.
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
codes -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               ICRS sourceCRS,
               ICRS targetCRS,
               CRSCodeType code)
Parameters:
dx - Bursa Wolf shift in meters.
dy - Bursa Wolf shift in meters.
dz - Bursa Wolf shift in meters.
ex - Bursa Wolf rotation in arc seconds.
ey - Bursa Wolf rotation in arc seconds.
ez - Bursa Wolf rotation in arc seconds.
ppm - Bursa Wolf scaling in parts per million.
sourceCRS - of this helmert transformation
targetCRS - of this helmert transformation
code -
Method Detail

getAsAffineTransform

public javax.vecmath.Matrix4d getAsAffineTransform()
Returns an affine transformation also known as the "Helmert" transformation. The matrix representation of this transformation (also known as "Bursa Wolf" formula) is as follows:
       S = 1 + ppm*1E-6
       [ X ]     [ S          -ez*S  +ey*S   dx ]  [ X ]
       [ Y ]  = [ +ez*S  S          -ex*S   dy ]  [ Y ]
       [ Z ]     [ -ey*S   +ex*S   S         dz ]  [ Z ]
       [ 1 ]     [ 0           0           0           1 ]  [ 1 ]
 
This affine transform can be applied to transform geocentric coordinates from one datum into geocentric coordinates of an other datum. see http://www.posc.org/Epicentre.2_2/DataModel/ExamplesofUsage/eu_cs35.html for more information.

Returns:
the affine "Helmert" transformation as a Matrix4d.

hasValues

public boolean hasValues()
Returns:
true if any of the helmert parameters were set.

equals

public boolean equals(Object other)
Overrides:
equals in class Transformation

toString

public String toString()
Returns the Well Know Text (WKT) for this object. The WKT is part of OpenGIS's specification and looks like TOWGS84[dx, dy, dz, ex, ey, ez, ppm].

Overrides:
toString in class CRSIdentifiable
Returns:
the Well Know Text (WKT) for this object.

hashCode

public int hashCode()
Implementation as proposed by Joshua Block in Effective Java (Addison-Wesley 2001), which supplies an even distribution and is relatively fast. It is created from field f as follows:

Combining the hash code(s) computed above: result = 37 * result + code;

Overrides:
hashCode in class CRSIdentifiable
Returns:
(int) ( result >>> 32 ) ^ (int) result;
See Also:
Object.hashCode()

doTransform

public List<javax.vecmath.Point3d> doTransform(List<javax.vecmath.Point3d> srcPts)
                                        throws TransformationException
Description copied from class: Transformation
Do a transformation, e.g. the incoming data will be transformed into other coordinates.

Specified by:
doTransform in class Transformation
Parameters:
srcPts - the points which must be transformed, expected are following values either, long_1, lat_1, height_1, long_2, lat_2, height_2. or long_1, lat_1, long_2, lat_2
Returns:
the transformed points
Throws:
TransformationException - if a transform could not be calculated.

getImplementationName

public String getImplementationName()
Specified by:
getImplementationName in class Transformation
Returns:
the name of the transformation.

isIdentity

public boolean isIdentity()
Specified by:
isIdentity in class Transformation
Returns:
true if this transformation doesn't transform the incoming points. (e.g. is the id. matrix)

areRotationsInRad

public boolean areRotationsInRad()
Returns:

createAxisAllignedTransformedHelmertTransformation

public static Transformation createAxisAllignedTransformedHelmertTransformation(Helmert transform)


Copyright © 2011. All Rights Reserved.