deegree 2.3 (2010/04/09 10:10 build-4-official)

org.deegree.crs.transformations.helmert
Class Helmert

java.lang.Object
  extended by org.deegree.crs.Identifiable
      extended by org.deegree.crs.transformations.Transformation
          extended by org.deegree.crs.transformations.helmert.Helmert
All Implemented Interfaces:
Serializable

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: 18195 $, $Date: 2009-06-18 17:55:39 +0200 (Do, 18. Jun 2009) $
Author:
Rutger Bezema, last edited by: $Author: mschneider $
See Also:
Serialized Form

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(CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String identifier)
          Construct a conversion info with all parameters set to 0;
Helmert(CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String[] identifiers)
          Construct a conversion info with all parameters set to 0;
Helmert(CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String[] identifiers, String[] names, String[] versions, String[] descriptions, String[] areasOfUse)
          Construct a conversion info with all parameters set to 0;
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, CoordinateSystem sourceCRS, CoordinateSystem targetCRS, Identifiable identifiable)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, CoordinateSystem sourceCRS, CoordinateSystem targetCRS, Identifiable identifiable, boolean inRadians)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String identifier)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String[] identifiers)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String[] identifiers, String[] names, String[] versions, String[] descriptions, String[] areaOfUses)
           
Helmert(double dx, double dy, double dz, double ex, double ey, double ez, double ppm, CoordinateSystem sourceCRS, CoordinateSystem targetCRS, String identifier, String name, String version, String description, String areaOfUse)
           
 
Method Summary
 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.crs.transformations.Transformation
areInverse, createFromTo, doTransform, doTransform, getSourceCRS, getSourceDimension, getTargetCRS, getTargetDimension, getTransformationName, getTransformationPath, inverse, isInverseTransform, setSourceCRS
 
Methods inherited from class org.deegree.crs.Identifiable
checkForNullObject, checkForNullObject, checkForNullObject, getAreaOfUse, getAreaOfUseBBox, getAreasOfUse, getDescription, getDescriptions, getIdAndName, getIdentifier, getIdentifiers, getName, getNames, getVersion, getVersions, hasID
 
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,
               CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               Identifiable 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,
               CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               Identifiable 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(CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String[] identifiers,
               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
identifiers -
names -
versions -
descriptions -
areasOfUse -

Helmert

public Helmert(CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String identifier)
Construct a conversion info with all parameters set to 0;

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

Helmert

public Helmert(CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String[] identifiers)
Construct a conversion info with all parameters set to 0;

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

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String[] identifiers,
               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
identifiers -
names -
versions -
descriptions -
areaOfUses -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String identifier,
               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
identifier -
name -
version -
description -
areaOfUse -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String[] identifiers)
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
identifiers -

Helmert

public Helmert(double dx,
               double dy,
               double dz,
               double ex,
               double ey,
               double ez,
               double ppm,
               CoordinateSystem sourceCRS,
               CoordinateSystem targetCRS,
               String identifier)
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
identifier -
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 Identifiable

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 Identifiable
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 Object
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)

deegree 2.3 (2010/04/09 10:10 build-4-official)

an open source project founded by lat/lon, Bonn, Germany.
For more information visit: http://www.deegree.org