Class BursaWolfTransformBuilder


  • public class BursaWolfTransformBuilder
    extends MathTransformBuilder
    Builds MathTransform setup as BursaWolf transformation from a list of MappedPosition. The calculation uses least square method. Calculated parameters can be used for following operations:

    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 + l 
    where 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  
    Since:
    2.4
    Author:
    Jan Jezek
    • Constructor Detail

      • BursaWolfTransformBuilder

        public BursaWolfTransformBuilder​(List<MappedPosition> vectors)
        Creates a BursaWolfTransformBuilder.
        Parameters:
        vectors - list of mapped positions.
    • Method Detail

      • getMinimumPointCount

        public int getMinimumPointCount()
        Returns the minimum number of points required by this builder, which is 3.
        Specified by:
        getMinimumPointCount in class MathTransformBuilder
        Returns:
        the minimum number of points required by this builder which is 3.
      • getx

        protected GeneralMatrix getx()
        Fills the x matrix by coordinates of source points.
        Returns:
        x matrix.
      • getX

        protected GeneralMatrix getX()
        Fills the x matrix by coordinates of destination points.
        Returns:
        the X matrix
      • getRalfa

        protected GeneralMatrix getRalfa()
        Generates rotation matrix around X axis.
        Returns:
        rotation Matrix
      • getRbeta

        protected GeneralMatrix getRbeta()
        Generates rotation matrix around Y axis.
        Returns:
        rotation Matrix.
      • getRgamma

        protected GeneralMatrix getRgamma()
        Generates rotation matrix around Z axis.
        Returns:
        rotation Matrix.
      • getDRalfa

        protected GeneralMatrix getDRalfa()
        Generates partial derivative with respect to alfa.
        Returns:
        Matrix, that represents partial derivation of rotation Matrix with respect to alfa.
      • getDRbeta

        protected GeneralMatrix getDRbeta()
        Generates partial derivative with respect to beta.
        Returns:
        Matrix, that represents partial derivation of rotation Matrix with respect to beta.
      • getDRgamma

        protected GeneralMatrix getDRgamma()
        Generates partial derivative with respect to gamma.
        Returns:
        Matrix, that represents partial derivation of rotation Matrix with respect to gamma.
      • getDq

        protected GeneralMatrix getDq()
        Generates partial derivative in q (scale factor).
        Returns:
        rotation Matrix.
      • getl

        protected GeneralMatrix getl()
        Calculates the matrix of errors from aproximate values of prameters.
        Returns:
        the l matrix.
      • specialMul

        protected GeneralMatrix specialMul​(GeneralMatrix R,
                                           GeneralMatrix x)
        Method for multiplying matrix (3,3) by matrix of coordintes (3 number of coordinates,1)
        Parameters:
        R - ratrix
        x - matrix
        Returns:
        matrix
      • getA

        protected GeneralMatrix getA()
        Glues the submatrix of derivations into the A matrix.
        Returns:
        A mtarix
      • getParameters

        protected double[] getParameters()
        Returns array of doubles of transformation parameters (dx, dy, dz, ex, ey, ez, scale).
        Returns:
        array of doubles of transformation parameters (dx, dy, dz, ex, ey, ez, scale).
      • getDxMatrix

        public GeneralMatrix getDxMatrix()
        Method that claculates the parameters by iteration. The tolarance is set to 1 10-8 and max �number of steps is set to 20.
        Returns:
        Matrix of parameters (dx, dy, dz, ex, ey, ez, scale).
      • getBursaWolfParameters

        public BursaWolfParameters getBursaWolfParameters​(GeodeticDatum Datum)
        Returns Bursa Wolf Transformation parameters.
        Parameters:
        Datum - The target datum for this parameters.
        Returns:
        parameters the BursaWolfParameters
      • setTargetGeodeticDatum

        public void setTargetGeodeticDatum​(GeodeticDatum gd)