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 String
mark for key to specify phix - rotation constrainstatic final String
mark for key to specify phix - rotation constrainstatic final String
mark for key to specify sx - scale in x constrainstatic final String
mark for key to specify sxy - skew constrainstatic final String
mark for key to specify sy - scale in y constrainstatic final String
mark for key to specify tx - translation in x constrainstatic final String
mark 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 TypeMethodDescriptionvoid
Clears all constrainsprotected MathTransform
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
Returns difference that is required between steps in iterationint
Returns the minimum number of points required by this builder.int
Return max number of iteration steps.protected GeneralMatrix
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 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:
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 Details
-
setConstrain
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
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: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
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: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.
-