Class AdvancedAffineBuilder
- Object
-
- MathTransformBuilder
-
- AdvancedAffineBuilder
-
public class AdvancedAffineBuilder extends MathTransformBuilder
Builder for affine transformation with possibility to set several constrains for affine parameters that will be respected during calculation. This is convenient for example to use when you want affine transformation with skew parameter equal to zero. Development carried out thanks to R&D grant DC08P02OUK006 - Old Maps Online (www.oldmapsonline.org) from Ministry of Culture of the Czech Republic- Author:
- jezekjan
-
-
Field Summary
Fields Modifier and Type Field Description static String
PHIX
mark for key to specify phix - rotation constrainstatic String
PHIY
mark for key to specify phix - rotation constrainstatic String
SX
mark for key to specify sx - scale in x constrainstatic String
SXY
mark for key to specify sxy - skew constrainstatic String
SY
mark for key to specify sy - scale in y constrainstatic String
TX
mark for key to specify tx - translation in x constrainstatic String
TY
mark for key to specify ty - translation in y constrain-
Fields inherited from class MathTransformBuilder
mtFactory
-
-
Constructor Summary
Constructors Constructor Description AdvancedAffineBuilder(List<MappedPosition> vectors)
Constructs builder from set of GCPsAdvancedAffineBuilder(List<MappedPosition> vectors, AffineTransform2D affineTrans)
Constructs affine transform from GCPs and approximate values for calculation.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearConstrains()
Clears all constrainsprotected MathTransform
computeMathTransform()
Calculates the math transform immediately.protected GeneralMatrix
getA()
Generates A matrix (Matrix of derivation of affine equation).protected GeneralMatrix
getB()
Fill matrix of derivations of constrains by affine parameters.protected GeneralMatrix
getL()
Fill L matrix.double
getMaxIterationDifference()
Returns difference that is required between steps in iterationint
getMinimumPointCount()
Returns the minimum number of points required by this builder.int
getNumberOfIterationSteps()
Return max number of iteration steps.protected GeneralMatrix
getProjectiveMatrix()
Calculates coefficients of Projective transformation matrix from geometric parameters.protected GeneralMatrix
getU()
Fill matrix of constrain values (e.g. for constrain skew = 0 the value is 0)void
setConstrain(String param, double value)
Sets constrain thatparam
is equal tovalue
.void
setMaxIterationDifference(double dif)
Sets difference that is required between steps in iteration.void
setNumberOfIterationSteps(int steps)
Sets max number of iteration steps.-
Methods inherited from class MathTransformBuilder
getCoordinateSystemType, getDimension, getErrorStatistics, getMappedPositions, getMathTransform, getName, getSourceCRS, getSourcePoints, getTargetCRS, getTargetPoints, getTransformation, printPoints, setMappedPositions, setSourcePoints, setTargetPoints, toString
-
-
-
-
Field Detail
-
SX
public static final String SX
mark for key to specify sx - scale in x constrain- See Also:
- Constant Field Values
-
SY
public static final String SY
mark for key to specify sy - scale in y constrain- See Also:
- Constant Field Values
-
SXY
public static final String SXY
mark for key to specify sxy - skew constrain- See Also:
- Constant Field Values
-
PHIX
public static final String PHIX
mark for key to specify phix - rotation constrain- See Also:
- Constant Field Values
-
PHIY
public static final String PHIY
mark for key to specify phix - rotation constrain- See Also:
- Constant Field Values
-
TX
public static final String TX
mark for key to specify tx - translation in x constrain- See Also:
- Constant Field Values
-
TY
public static final String TY
mark for key to specify ty - translation in y constrain- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AdvancedAffineBuilder
public AdvancedAffineBuilder(List<MappedPosition> vectors) throws IllegalArgumentException, MismatchedDimensionException, MismatchedReferenceSystemException, FactoryException
Constructs builder from set of GCPs- Parameters:
vectors
- GCPs- Throws:
IllegalArgumentException
MismatchedDimensionException
MismatchedReferenceSystemException
FactoryException
-
AdvancedAffineBuilder
public AdvancedAffineBuilder(List<MappedPosition> vectors, AffineTransform2D affineTrans) throws IllegalArgumentException, MismatchedDimensionException, MismatchedReferenceSystemException, FactoryException
Constructs affine transform from GCPs and approximate values for calculation. This constructor should be used when the default calculation is divergating.- Parameters:
vectors
- GCPsaffineTrans
- approximate affine transformation- Throws:
IllegalArgumentException
MismatchedDimensionException
MismatchedReferenceSystemException
FactoryException
-
-
Method Detail
-
setConstrain
public void setConstrain(String param, double value)
Sets constrain thatparam
is equal tovalue
. Be aware that the calculation may diverge in the case you set some values that are not 'close' to approximate values. I the case of divergence you can set approximate values using proper constructor- Parameters:
param
- parameter name - set one of AdvancedAffineBuilder static variables.value
- required value
-
clearConstrains
public void clearConstrains()
Clears all constrains
-
getA
protected GeneralMatrix getA()
Generates A matrix (Matrix of derivation of affine equation). Each column is derivation by each transformation parameter (sx, sy, sxy, phi, tx,ty). The rows are derivations of fx and fy.- Returns:
- A matrix
-
getL
protected GeneralMatrix getL()
Fill L matrix. This matrix contains differences between expected value and value calculated from affine parameters- Returns:
- l matrix
-
getMinimumPointCount
public int getMinimumPointCount()
Description copied from class:MathTransformBuilder
Returns the minimum number of points required by this builder. This minimum depends on the algorithm used. For example affine transform builders require at least 3 points, while similar transform builders requires only 2 points.- Specified by:
getMinimumPointCount
in classMathTransformBuilder
-
getB
protected GeneralMatrix getB()
Fill matrix of derivations of constrains by affine parameters.- Returns:
- B matrix
-
getU
protected GeneralMatrix getU()
Fill matrix of constrain values (e.g. for constrain skew = 0 the value is 0)- Returns:
- U matrix
-
getProjectiveMatrix
protected GeneralMatrix getProjectiveMatrix() throws FactoryException
Calculates coefficients of Projective transformation matrix from geometric parameters.- Returns:
- Projective Matrix
- Throws:
FactoryException
-
computeMathTransform
protected MathTransform computeMathTransform() throws FactoryException
Description copied from class:MathTransformBuilder
Calculates the math transform immediately.- Specified by:
computeMathTransform
in classMathTransformBuilder
- Returns:
- Math transform from
MappedPosition
. - Throws:
FactoryException
- if the math transform can't be created.
-
getMaxIterationDifference
public double getMaxIterationDifference()
Returns difference that is required between steps in iteration- Returns:
- max difference that is required for iteration steps
-
setMaxIterationDifference
public void setMaxIterationDifference(double dif)
Sets difference that is required between steps in iteration.
-
getNumberOfIterationSteps
public int getNumberOfIterationSteps()
Return max number of iteration steps. If the difference between calculated values in each iteration steps is still bigger than required then Exception is thrown. This is not the number that was really needed for iteration.- Returns:
- max number of iteration steps.
-
setNumberOfIterationSteps
public void setNumberOfIterationSteps(int steps)
Sets max number of iteration steps. If the difference between calculated values in each iteration steps is still bigger than required than Exception is thrown.- Parameters:
steps
- max number of iterations.
-
-