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 Prime Meridian (usually Greenwich), 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 is often,
but not necessarily, the World Geodetic System 1984 (WGS 84) datum.
If the source and target datum does not have the same prime meridian, then it is user's responsibility to apply longitude rotation before to use the Bursa-Wolf parameters.
BursaWolfParameters
are used in three contexts:
DefaultGeodeticDatum
with the WGS 84 target datum for
providing the parameter values to display in the TOWGS84[…]
element of Well Known Text
(WKT) version 1. Note that WKT version 2 does not have TOWGS84[…]
element anymore.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. |
double[] |
getValues()
Returns the parameter values.
|
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.
|
void |
setValues(double... elements)
Sets the parameters to the given values.
|
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 double[] getValues()
TimeDependentBWP
, then the array length will be 14.dS
value, then the array length will be 7 with
tX
, tY
, tZ
, rX
, rY
, rZ
and dS
values
in that order.public void setValues(double... elements)
tX
, tY
, tZ
, rX
, rY
, rZ
and dS
fields in that order.
BursaWolfParameters
is a new instance).TimeDependentBWP
.elements
- the new parameter values, as an array of any length.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()
.
If the source datum and the target datum do not use the same prime meridian, then it is caller's responsibility to apply longitude rotation before to use the matrix returned by this method.
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–2017 The Apache Software Foundation. All rights reserved.