public class BursaWolfParameters extends FormattableObject implements Cloneable, Serializable
DefaultGeodeticDatum
class javadoc.
The Bursa-Wolf parameters shall 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.
|
|
BursaWolfParameters
class use the EPSG abbreviations
with 4 additional constraints compared to the EPSG definitions:
dS
) is fixed to parts per million.tX
, tY
, tZ
) is fixed to metres.rX
, rY
, rZ
) is fixed to arc-seconds.DefaultGeodeticDatum
instance
that contain this BursaWolfParameters
. It can be any datum, including datum that are valid only locally.
The target datum is specified at construction time and often fixed to
WGS 84 for the needs of the TOWGS84[…]
element in Well Known Text (WKT 1) representation.
BursaWolfParameters
are used in three contexts:
DefaultGeodeticDatum
for the sole needs of the WKT 1 TOWGS84[…]
element.
In this case, only Bursa-Wolf parameters having a WGS 84 target datum are
useful.DefaultGeodeticDatum
construction time for arbitrary target datum.
Apache SIS will ignore those Bursa-Wolf parameters, except as a fallback if no parameters
can been found in the EPSG database for a given pair of source and target CRS.DefaultGeodeticDatum.getBursaWolfParameters()
,
Wikipedia: Helmert transformation,
Serialized FormDefined in the sis-referencing
module
Modifier and Type | Field and Description |
---|---|
double |
dS
The scale difference in parts per million (EPSG:8611).
|
double |
rX
X-axis rotation in arc-seconds (EPSG:8608), sign following the Position Vector convention.
|
double |
rY
Y-axis rotation in arc-seconds (EPSG:8609), sign following the Position Vector convention.
|
double |
rZ
Z-axis rotation in arc-seconds (EPSG:8610), sign following the Position Vector convention.
|
double |
tX
X-axis translation in metres (EPSG:8605).
|
double |
tY
Y-axis translation in metres (EPSG:8606).
|
double |
tZ
Z-axis translation in metres (EPSG:8607).
|
Constructor and Description |
---|
BursaWolfParameters(GeodeticDatum targetDatum,
Extent domainOfValidity)
Creates a new instance for the given target datum and domain of validity.
|
Modifier and Type | Method and Description |
---|---|
BursaWolfParameters |
clone()
Returns a copy of this object.
|
boolean |
equals(Object object)
Compares the specified object with this object for equality.
|
protected String |
formatTo(Formatter formatter)
Formats this object as a Well Known Text
ToWGS84[…] element. |
Extent |
getDomainOfValidity()
Returns the region or timeframe in which a coordinate transformation based on those Bursa-Wolf parameters is
valid, or
null if unspecified. |
Matrix |
getPositionVectorTransformation(Date time)
Returns the position vector transformation (geocentric domain) as an affine transform.
|
GeodeticDatum |
getTargetDatum()
Returns the target datum for this set of parameters, or
null if unknown. |
int |
hashCode()
Returns a hash value for this object.
|
void |
invert()
Inverts in-place the transformation by inverting the sign of all numerical parameters.
|
boolean |
isIdentity()
Returns
true if a transformation built from this set of parameters would perform no operation. |
boolean |
isTranslation()
Returns
true if a transformation built from this set of parameters would perform only a translation. |
void |
reverseRotation()
|
void |
setPositionVectorTransformation(Matrix matrix,
double tolerance)
Sets all Bursa-Wolf parameters from the given Position Vector transformation matrix.
|
print, toString, toString, toWKT
public double tX
"dx"
.public double tY
"dy"
.public double tZ
"dz"
.public double rX
"ex"
.public double rY
"ey"
.public double rZ
"ez"
.public double dS
"ppm"
.
public BursaWolfParameters(GeodeticDatum targetDatum, Extent domainOfValidity)
tX
, tY
, tZ
).
Alternatively, numerical fields can also be initialized by a call to
setPositionVectorTransformation(Matrix, double)
.
targetDatum
- The target datum (usually WGS 84) for this set of parameters, or null
if unknown.domainOfValidity
- Area or region in which a coordinate transformation based on those Bursa-Wolf parameters
is valid, or null
is unspecified.public GeodeticDatum getTargetDatum()
null
if unknown.
This is usually the WGS 84 datum, but other targets are allowed.
The source datum is the DefaultGeodeticDatum
that contain this BursaWolfParameters
instance.
null
if unknown.public boolean isIdentity()
true
if a transformation built from this set of parameters would perform no operation.
This is true when the value of all parameters is zero.true
if the parameters describe no operation.public boolean isTranslation()
true
if a transformation built from this set of parameters would perform only a translation.true
if the parameters describe a translation only.public void reverseRotation()
rX
, rY
, rZ
).
This method can be invoked for converting a Coordinate Frame Rotation transformation
(EPSG operation method 9607) to a Position Vector transformation (EPSG operation method 9606).
The later convention is used by IAG and recommended by ISO 19111.public void invert()
public Matrix getPositionVectorTransformation(Date time)
R
is a conversion factor from arc-seconds to radians:
This affine transform can be applied on geocentric coordinates. This is identified as operation method 1033 in the EPSG database. Those geocentric coordinates are typically converted from geographic coordinates in the region or timeframe given byR = toRadians(1″) S = 1 + dS/1000000 ┌ ┐ ┌ ┐ ┌ ┐ │ X' │ │ S -rZ*RS +rY*RS tX │ │ X │ │ Y' │ = │ +rZ*RS S -rX*RS tY │ │ Y │ │ Z' │ │ -rY*RS +rX*RS S tZ │ │ Z │ │ 1 │ │ 0 0 0 1 │ │ 1 │ └ ┘ └ ┘ └ ┘
getDomainOfValidity()
.
null
values default to the transformation's
reference time.
MatrixSIS.inverse()
in order to increase the chances
that concatenation of transformations A → B followed by B → A
gives back the identity transform.time
- Date for which the transformation is desired, or null
for the transformation's reference time.DefaultGeodeticDatum.getPositionVectorTransformation(GeodeticDatum, Extent)
public void setPositionVectorTransformation(Matrix matrix, double tolerance) throws IllegalArgumentException
matrix
without the last row and last column shall be
skew-symmetric (a.k.a. antisymmetric).matrix
- The matrix from which to get Bursa-Wolf parameters.tolerance
- The tolerance error for the skew-symmetric matrix test, in units of PPM or arc-seconds (e.g. 1E-8).IllegalArgumentException
- if the specified matrix does not meet the conditions.getPositionVectorTransformation(Date)
public Extent getDomainOfValidity()
null
if unspecified. If an extent was specified at construction time, then that extent is
returned. Otherwise the datum domain of validity (which may be null
) is returned.null
.DefaultExtent
public BursaWolfParameters clone()
public boolean equals(Object object)
public int hashCode()
protected String formatTo(Formatter formatter)
ToWGS84[…]
element.
The WKT contains the parameters in translation, rotation, scale order,
like below:
TOWGS84[tX, tY, tZ, rX,
rY, rZ, dS]
TOWGS84
is defined in the WKT 1 specification only."ToWGS84"
in the common case where the target datum
is WGS 84. For other targets, the element name will be derived from the datum name.formatTo
in class FormattableObject
formatter
- The formatter where to format the inner content of this WKT element."ToWGS84"
.FormattableObject.toWKT()
,
FormattableObject.toString()
Copyright © 2010–2014 The Apache Software Foundation. All rights reserved.