Class AdvancedAffineBuilder
Object
MathTransformBuilder
AdvancedAffineBuilder
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
FieldsModifier and TypeFieldDescriptionstatic final Stringmark for key to specify phix - rotation constrainstatic final Stringmark for key to specify phix - rotation constrainstatic final Stringmark for key to specify sx - scale in x constrainstatic final Stringmark for key to specify sxy - skew constrainstatic final Stringmark for key to specify sy - scale in y constrainstatic final Stringmark for key to specify tx - translation in x constrainstatic final Stringmark for key to specify ty - translation in y constrainFields inherited from class MathTransformBuilder
mtFactory -
Constructor Summary
ConstructorsConstructorDescriptionAdvancedAffineBuilder(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
Modifier and TypeMethodDescriptionvoidClears all constrainsprotected MathTransformCalculates the math transform immediately.protected GeneralMatrixgetA()Generates A matrix (Matrix of derivation of affine equation).protected GeneralMatrixgetB()Fill matrix of derivations of constrains by affine parameters.protected GeneralMatrixgetL()Fill L matrix.doubleReturns difference that is required between steps in iterationintReturns the minimum number of points required by this builder.intReturn max number of iteration steps.protected GeneralMatrixCalculates coefficients of Projective transformation matrix from geometric parameters.protected GeneralMatrixgetU()Fill matrix of constrain values (e.g. for constrain skew = 0 the value is 0)voidsetConstrain(String param, double value) Sets constrain thatparamis equal tovalue.voidsetMaxIterationDifference(double dif) Sets difference that is required between steps in iteration.voidsetNumberOfIterationSteps(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 Details
-
SX
mark for key to specify sx - scale in x constrain- See Also:
-
SY
mark for key to specify sy - scale in y constrain- See Also:
-
SXY
mark for key to specify sxy - skew constrain- See Also:
-
PHIX
mark for key to specify phix - rotation constrain- See Also:
-
PHIY
mark for key to specify phix - rotation constrain- See Also:
-
TX
mark for key to specify tx - translation in x constrain- See Also:
-
TY
mark for key to specify ty - translation in y constrain- See Also:
-
-
Constructor Details
-
AdvancedAffineBuilder
public AdvancedAffineBuilder(List<MappedPosition> vectors) throws IllegalArgumentException, MismatchedDimensionException, MismatchedReferenceSystemException, FactoryException Constructs builder from set of GCPs- Parameters:
vectors- GCPs- Throws:
IllegalArgumentExceptionMismatchedDimensionExceptionMismatchedReferenceSystemExceptionFactoryException
-
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:
IllegalArgumentExceptionMismatchedDimensionExceptionMismatchedReferenceSystemExceptionFactoryException
-
-
Method Details
-
setConstrain
Sets constrain thatparamis 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
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
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:MathTransformBuilderReturns 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:
getMinimumPointCountin classMathTransformBuilder
-
getB
Fill matrix of derivations of constrains by affine parameters.- Returns:
- B matrix
-
getU
Fill matrix of constrain values (e.g. for constrain skew = 0 the value is 0)- Returns:
- U matrix
-
getProjectiveMatrix
Calculates coefficients of Projective transformation matrix from geometric parameters.- Returns:
- Projective Matrix
- Throws:
FactoryException
-
computeMathTransform
Description copied from class:MathTransformBuilderCalculates the math transform immediately.- Specified by:
computeMathTransformin 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.
-