public class BursaWolfTransformBuilder extends MathTransformBuilder
The equations:
X = q * R * x + T ,Where X is the Matrix of destination points, q is the scale, R is the rotation Matrix, x is the Matrix of source points and T is matrix of translation. Expressing the errors, we get this:
Err = A * Dx + lwhere Err is the Error Matrix, A is Matrix of derivations, Dx is Matrix of difference changes of 7 parameters, and l is value of DX, DY, DZ for calculated from approximate values. Using the least square method to minimalize the errors we get this result:
Dx = (ATA)-1 ATl
mtFactory
Constructor and Description |
---|
BursaWolfTransformBuilder(List<MappedPosition> vectors)
Creates a BursaWolfTransformBuilder.
|
Modifier and Type | Method and Description |
---|---|
protected MathTransform |
computeMathTransform()
Returns MathtTransform setup as BursaWolf transformation.
|
protected GeneralMatrix |
getA()
Glues the submatrix of derivations into the A matrix.
|
BursaWolfParameters |
getBursaWolfParameters(GeodeticDatum Datum)
Returns Bursa Wolf Transformation parameters.
|
Class<? extends CartesianCS> |
getCoordinateSystemType()
Returns the required coordinate system type, which is cartesian CS.
|
int |
getDimension()
|
protected GeneralMatrix |
getDq()
Generates partial derivative in q (scale factor).
|
protected GeneralMatrix |
getDRalfa()
Generates partial derivative with respect to alfa.
|
protected GeneralMatrix |
getDRbeta()
Generates partial derivative with respect to beta.
|
protected GeneralMatrix |
getDRgamma()
Generates partial derivative with respect to gamma.
|
GeneralMatrix |
getDxMatrix()
Method that claculates the parameters by iteration.
|
protected GeneralMatrix |
getl()
Calculates the matrix of errors from aproximate values of prameters.
|
int |
getMinimumPointCount()
Returns the minimum number of points required by this builder, which is 3.
|
protected double[] |
getParameters()
Returns array of doubles of transformation parameters (dx, dy, dz, ex, ey, ez, scale).
|
protected GeneralMatrix |
getRalfa()
Generates rotation matrix around X axis.
|
protected GeneralMatrix |
getRbeta()
Generates rotation matrix around Y axis.
|
protected GeneralMatrix |
getRgamma()
Generates rotation matrix around Z axis.
|
protected GeneralMatrix |
getx()
Fills the x matrix by coordinates of source points.
|
protected GeneralMatrix |
getX()
Fills the x matrix by coordinates of destination points.
|
void |
setTargetGeodeticDatum(GeodeticDatum gd) |
protected GeneralMatrix |
specialMul(GeneralMatrix R,
GeneralMatrix x)
Method for multiplying matrix (3,3) by matrix of coordintes (3 number of coordinates,1)
|
getErrorStatistics, getMappedPositions, getMathTransform, getName, getSourceCRS, getSourcePoints, getTargetCRS, getTargetPoints, getTransformation, printPoints, setMappedPositions, setSourcePoints, setTargetPoints, toString
public BursaWolfTransformBuilder(List<MappedPosition> vectors)
vectors
- list of mapped positions.public int getMinimumPointCount()
getMinimumPointCount
in class MathTransformBuilder
public int getDimension()
getDimension
in class MathTransformBuilder
target
CRS,
which is 2.public Class<? extends CartesianCS> getCoordinateSystemType()
getCoordinateSystemType
in class MathTransformBuilder
protected GeneralMatrix getx()
protected GeneralMatrix getX()
protected GeneralMatrix getRalfa()
protected GeneralMatrix getRbeta()
protected GeneralMatrix getRgamma()
protected GeneralMatrix getDRalfa()
protected GeneralMatrix getDRbeta()
protected GeneralMatrix getDRgamma()
protected GeneralMatrix getDq()
protected GeneralMatrix getl()
protected GeneralMatrix specialMul(GeneralMatrix R, GeneralMatrix x)
R
- ratrixx
- matrixprotected GeneralMatrix getA()
protected double[] getParameters()
public GeneralMatrix getDxMatrix()
public BursaWolfParameters getBursaWolfParameters(GeodeticDatum Datum)
Datum
- The target datum for this parameters.public void setTargetGeodeticDatum(GeodeticDatum gd)
protected MathTransform computeMathTransform() throws FactoryException
computeMathTransform
in class MathTransformBuilder
FactoryException
- when the size of source and destination point is not the same or if
the number of points is too small to define such transformation.Copyright © 1996–2019 Geotools. All rights reserved.