Class DefaultOperationMethod
- All Implemented Interfaces:
Serializable,Formattable,Deprecable,LenientComparable,IdentifiedObject,OperationMethod
OperationMethod
is a kind of metadata: it does not perform any coordinate operation (e.g. map projection) by itself, but
tells us what is needed in order to perform such operation.
The most important parts of an OperationMethod are its name and its
group of parameter descriptors. The parameter descriptors do not contain
any value, but tell us what are the expected parameters, together with their units of measurement.
In Apache SIS implementation, the name is the only mandatory property. However, it is recommended to provide also identifiers (e.g. “EPSG:9804” in the following example) because names can sometimes be ambiguous or be spelled in different ways.
Example
An operation method named “Mercator (variant A)” (EPSG:9804) expects the following parameters:- “Latitude of natural origin” in degrees. Default value is 0°.
- “Longitude of natural origin” in degrees. Default value is 0°.
- “Scale factor at natural origin” as a dimensionless number. Default value is 1.
- “False easting” in metres. Default value is 0 m.
- “False northing” in metres. Default value is 0 m.
Departure from the ISO 19111 standard
The following properties are mandatory according ISO 19111, but may be missing under some conditions in Apache SIS:- The formula if it has not been provided to the constructor, or if it cannot be inferred from the given math transform.
- The parameters if the
DefaultOperationMethod(MathTransform)constructor cannot infer them.
Relationship with other classes or interfaces
OperationMethod describes parameters without providing any value (except sometimes default values).
When values have been assigned to parameters, the result is a SingleOperation.
Note that there is different kinds of SingleOperation depending on the nature and accuracy of the
coordinate operation. See getOperationType() for more information.
The interface performing the actual work of taking coordinates in the
source CRS and calculating the new coordinates in the
target CRS is MathTransform.
In order to allow Apache SIS to instantiate those MathTransforms from given parameter values,
DefaultOperationMethod subclasses should implement the
MathTransformProvider interface.
Immutability and thread safety
This class is immutable and thread-safe if all properties given to the constructor are also immutable and thread-safe. It is strongly recommended for all subclasses to be thread-safe, especially theMathTransformProvider implementations to be used with
DefaultMathTransformFactory.- Since:
- 0.5
- See Also:
-
Field Summary
Fields inherited from class AbstractIdentifiedObject
DEPRECATED_KEY, LOCALE_KEYFields inherited from interface IdentifiedObject
ALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEYFields inherited from interface OperationMethod
FORMULA_KEY -
Constructor Summary
ConstructorsModifierConstructorDescriptionDefaultOperationMethod(Map<String, ?> properties, ParameterDescriptorGroup parameters) Constructs an operation method from a set of properties and a descriptor group.DefaultOperationMethod(MathTransform transform) Convenience constructor that creates an operation method from a math transform.protectedCreates a new operation method with the same values than the specified one. -
Method Summary
Modifier and TypeMethodDescriptionstatic DefaultOperationMethodcastOrCopy(OperationMethod object) Returns a SIS operation method implementation with the same values than the given arbitrary implementation.protected longInvoked byhashCode()for computing the hash code when first needed.booleanequals(Object object, ComparisonMode mode) Compares this operation method with the specified object for equality.protected StringFormats this operation as a Well Known TextMethod[…]element.Formula(s) or procedure used by this operation method.Class<? extends OperationMethod> Returns the GeoAPI interface implemented by this class.Class<? extends SingleOperation> Returns the base interface of theCoordinateOperationinstances that use this method.Returns the set of parameters.Deprecated.This attribute has been removed from ISO 19111:2019.Deprecated.This attribute has been removed from ISO 19111:2019.Methods inherited from class AbstractIdentifiedObject
castOrCopy, equals, formatTo, getAlias, getDescription, getDomains, getIdentifiers, getName, getRemarks, hashCode, isDeprecated, isHeuristicMatchForNameMethods inherited from class FormattableObject
print, toString, toString, toWKTMethods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface IdentifiedObject
getAlias, getIdentifiers, getName, getRemarks, toWKT
-
Constructor Details
-
DefaultOperationMethod
Constructs an operation method from a set of properties and a descriptor group. The properties map is given unchanged to the super-class constructor. In addition to the properties documented in the parent constructor, the following properties are understood by this constructor:Recognized properties (non exhaustive list) Property name Value type Returned by "formula" Formula,CitationorCharSequencegetFormula()Defined in parent classes (reminder) "name" IdentifierorStringAbstractIdentifiedObject.getName()"alias" GenericNameorCharSequence(optionally as array)AbstractIdentifiedObject.getAlias()"identifiers" Identifier(optionally as array)AbstractIdentifiedObject.getIdentifiers()"remarks" InternationalStringorStringAbstractIdentifiedObject.getRemarks()- Parameters:
properties- set of properties. Shall contain at least"name".parameters- description of parameters expected by this operation.- Since:
- 1.1
-
DefaultOperationMethod
Convenience constructor that creates an operation method from a math transform. The information provided in the newly created object are approximations, and usually acceptable only as a fallback when no other information are available.- Parameters:
transform- the math transform to describe.
-
DefaultOperationMethod
Creates a new operation method with the same values than the specified one. This copy constructor provides a way to convert an arbitrary implementation into a SIS one or a user-defined one (as a subclass), usually in order to leverage some implementation-specific API.This constructor performs a shallow copy, i.e. the properties are not cloned.
- Parameters:
method- the operation method to copy.- See Also:
-
-
Method Details
-
castOrCopy
Returns a SIS operation method implementation with the same values than the given arbitrary implementation. If the given object isnull, thennullis returned. Otherwise if the given object is already a SIS implementation, then the given object is returned unchanged. Otherwise a new SIS implementation is created and initialized to the attribute values of the given object.- Parameters:
object- the object to get as a SIS implementation, ornullif none.- Returns:
- a SIS implementation containing the values of the given object (may be the
given object itself), or
nullif the argument was null.
-
getInterface
Returns the GeoAPI interface implemented by this class. The SIS implementation returnsOperationMethod.class.Note for implementers
Subclasses usually do not need to override this information since GeoAPI does not defineOperationMethodsub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their own set of interfaces.- Overrides:
getInterfacein classAbstractIdentifiedObject- Returns:
OperationMethod.classor a user-defined sub-interface.
-
getOperationType
Returns the base interface of theCoordinateOperationinstances that use this method. The baseCoordinateOperationinterface is usually one of the following subtypes:Transformationif the coordinate operation has some errors (typically of a few metres) because of the empirical process by which the operation parameters were determined. Those errors do not depend on the floating point precision or the accuracy of the implementation algorithm.Conversionif the coordinate operation is theoretically of infinite precision, ignoring the limitations of floating point arithmetic (including rounding errors) and the approximations implied by finite series expansions.Projectionif the coordinate operation is a conversion (as defined above) converting geodetic latitudes and longitudes to plane (map) coordinates. This type can optionally be refined with one of theCylindricalProjection,ConicProjectionorPlanarProjectionsubtypes.
getOperationType()can conservatively return the base type. The default implementation returnsSingleOperation.class, which is the most conservative return value.- Returns:
- interface implemented by all coordinate operations that use this method.
- See Also:
-
getFormula
Formula(s) or procedure used by this operation method. This may be a reference to a publication. Note that the operation method may not be analytic, in which case this attribute references or contains the procedure, not an analytic formula.Departure from the ISO 19111 standard
This property is mandatory according ISO 19111, but optional in Apache SIS.- Specified by:
getFormulain interfaceOperationMethod- Returns:
- the formula used by this method, or
nullif unknown. - See Also:
-
getSourceDimensions
Deprecated.This attribute has been removed from ISO 19111:2019.Number of dimensions in the source CRS of this operation method. May be null if unknown, as in an Affine Transform.- Specified by:
getSourceDimensionsin interfaceOperationMethod- Returns:
- the dimension of source CRS, or
nullif unknown. - See Also:
-
getTargetDimensions
Deprecated.This attribute has been removed from ISO 19111:2019.Number of dimensions in the target CRS of this operation method. May be null if unknown, as in an Affine Transform.- Specified by:
getTargetDimensionsin interfaceOperationMethod- Returns:
- the dimension of target CRS, or
nullif unknown. - See Also:
-
getParameters
Returns the set of parameters.Departure from the ISO 19111 standard
This property is mandatory according ISO 19111, but may benullin Apache SIS if theDefaultOperationMethod(MathTransform)constructor has been unable to infer it.- Specified by:
getParametersin interfaceOperationMethod- Returns:
- the parameters, or
nullif unknown. - See Also:
-
equals
Compares this operation method with the specified object for equality. If themodeargument value isSTRICTorBY_CONTRACT, then all available properties are compared including the formula.- Specified by:
equalsin interfaceLenientComparable- Overrides:
equalsin classAbstractIdentifiedObject- Parameters:
object- the object to compare tothis.mode-STRICTfor performing a strict comparison, orIGNORE_METADATAfor comparing only properties relevant to transformations.- Returns:
trueif both objects are equal.- See Also:
-
computeHashCode
protected long computeHashCode()Invoked byhashCode()for computing the hash code when first needed. SeeAbstractIdentifiedObject.computeHashCode()for more information.- Overrides:
computeHashCodein classAbstractIdentifiedObject- Returns:
- the hash code value. This value may change in any future Apache SIS version.
-
formatTo
Formats this operation as a Well Known TextMethod[…]element.- Overrides:
formatToin classAbstractIdentifiedObject- Parameters:
formatter- the formatter where to format the inner content of this WKT element.- Returns:
"Method"(WKT 2) or"Projection"(WKT 1).- See Also:
-