Package org.apache.sis.referencing.cs
Class DefaultCoordinateSystemAxis
Object
FormattableObject
AbstractIdentifiedObject
DefaultCoordinateSystemAxis
- All Implemented Interfaces:
- Serializable,- Formattable,- Deprecable,- LenientComparable,- CoordinateSystemAxis,- IdentifiedObject
public class DefaultCoordinateSystemAxis
extends AbstractIdentifiedObject
implements CoordinateSystemAxis
Coordinate system axis name, direction, unit and range of values.
 
Axis names
In some case, the axis name is constrained by ISO 19111 depending on the coordinate reference system type. This constraint works in two directions. For example, the names "geodetic latitude" and "geodetic longitude" shall be used to designate the coordinate axis names associated with aGeographicCRS. Conversely, these names shall not be used
 in any other context. See the GeoAPI CoordinateSystemAxis javadoc for more information.
 Immutability and thread safety
This class is immutable and thus thread-safe if the property values (not necessarily the map itself) given to the constructor are also immutable. Unless otherwise noted in the javadoc, this condition holds if all components were created using only SIS factories and static constants.- Since:
- 0.4
- See Also:
Defined in the sis-referencing module
- 
Field SummaryFieldsModifier and TypeFieldDescriptionstatic final StringKey for the"maximumValue"property to be given to the constructor.static final StringKey for the"minimumValue"property to be given to the constructor.static final StringKey for the"rangeMeaning"property to be given to the constructor.Fields inherited from class AbstractIdentifiedObjectDEPRECATED_KEY, LOCALE_KEYFields inherited from interface IdentifiedObjectALIAS_KEY, IDENTIFIERS_KEY, NAME_KEY, REMARKS_KEY
- 
Constructor SummaryConstructorsModifierConstructorDescriptionDefaultCoordinateSystemAxis(Map<String, ?> properties, String abbreviation, AxisDirection direction, Unit<?> unit) Constructs an axis from a set of properties.protectedCreates a new coordinate system axis with the same values than the specified one.
- 
Method SummaryModifier and TypeMethodDescriptioncastOrCopy(CoordinateSystemAxis object) Returns a SIS axis 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 the specified object with this axis for equality.protected StringFormats this axis as a Well Known TextAxis[…]element.Returns the abbreviation used for this coordinate system axes.Returns the direction of this coordinate system axis.Class<? extends CoordinateSystemAxis>Returns the GeoAPI interface implemented by this class.doubleReturns the maximum value normally allowed for this axis, in the unit of measure for the axis.doubleReturns the minimum value normally allowed for this axis, in the unit of measure for the axis.Unit<?>getUnit()Returns the unit of measure used for this coordinate system axis.booleanReturnstrueif either the primary name or at least one alias matches the given string according heuristic rules.Methods inherited from class AbstractIdentifiedObjectcastOrCopy, equals, formatTo, getAlias, getDescription, getIdentifiers, getName, getRemarks, hashCode, isDeprecatedMethods inherited from class FormattableObjectprint, toString, toString, toWKTMethods inherited from class Objectclone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface IdentifiedObjectgetAlias, getIdentifiers, getName, getRemarks, toWKT
- 
Field Details- 
MINIMUM_VALUE_KEYKey for the"minimumValue"property to be given to the constructor. This is used for setting the value to be returned bygetMinimumValue().- See Also:
 
- 
MAXIMUM_VALUE_KEYKey for the"maximumValue"property to be given to the constructor. This is used for setting the value to be returned bygetMaximumValue().- See Also:
 
- 
RANGE_MEANING_KEYKey for the"rangeMeaning"property to be given to the constructor. This is used for setting the value to be returned bygetRangeMeaning().- See Also:
 
 
- 
- 
Constructor Details- 
DefaultCoordinateSystemAxispublic DefaultCoordinateSystemAxis(Map<String, ?> properties, String abbreviation, AxisDirection direction, Unit<?> unit) Constructs an axis from a set of properties. The properties given in argument follow the same rules than for the super-class constructor. Additionally, the following properties are understood by this constructor:
 Generally speaking, information provided in theRecognized properties (non exhaustive list) Property name Value type Returned by "minimumValue" NumbergetMinimumValue()"maximumValue" NumbergetMaximumValue()"rangeMeaning" RangeMeaninggetRangeMeaning()Defined in parent class (reminder) "name" ReferenceIdentifierorStringAbstractIdentifiedObject.getName()"alias" GenericNameorCharSequence(optionally as array)AbstractIdentifiedObject.getAlias()"identifiers" ReferenceIdentifier(optionally as array)AbstractIdentifiedObject.getIdentifiers()"remarks" InternationalStringorStringAbstractIdentifiedObject.getRemarks()propertiesmap are considered ignorable metadata (except the axis name) while information provided as explicit arguments may have an impact on coordinate transformation results. Exceptions to this rule are theminimumValueandmaximumValuein the particular case whererangeMeaningisRangeMeaning.WRAPAROUND.If no minimum, maximum and range meaning are specified, then this constructor will infer them from the axis unit and direction. - Parameters:
- properties- the properties to be given to the identified object.
- abbreviation- the abbreviation used for this coordinate system axis.
- direction- the direction of this coordinate system axis.
- unit- the unit of measure used for this coordinate system axis.
- See Also:
 
- 
DefaultCoordinateSystemAxisCreates a new coordinate system axis 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:
- axis- the coordinate system axis to copy.
- See Also:
 
 
- 
- 
Method Details- 
castOrCopyReturns a SIS axis implementation with the same values than the given arbitrary implementation. If the given object isnull, then this method returnsnull. 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 values of the given object.- Parameters:
- object- the object to get as a SIS implementation, or- nullif none.
- Returns:
- a SIS implementation containing the values of the given object (may be the
         given object itself), or nullif the argument was null.
 
- 
getInterfaceReturns the GeoAPI interface implemented by this class. The SIS implementation returnsCoordinateSystemAxis.class.Note for implementers: Subclasses usually do not need to override this method since GeoAPI does not defineCoordinateSystemAxissub-interface. Overriding possibility is left mostly for implementers who wish to extend GeoAPI with their own set of interfaces.- Overrides:
- getInterfacein class- AbstractIdentifiedObject
- Returns:
- CoordinateSystemAxis.classor a user-defined sub-interface.
 
- 
getDirectionReturns the direction of this coordinate system axis. This direction is often approximate and intended to provide a human interpretable meaning to the axis. A coordinate system cannot contain two axes having the same direction or opposite directions.- Specified by:
- getDirectionin interface- CoordinateSystemAxis
- Returns:
- the direction of this coordinate system axis.
 
- 
getAbbreviationReturns the abbreviation used for this coordinate system axes. Examples are "X" and "Y".- Specified by:
- getAbbreviationin interface- CoordinateSystemAxis
- Returns:
- the coordinate system axis abbreviation.
 
- 
getUnitReturns the unit of measure used for this coordinate system axis. If thisCoordinateSystemAxiswas given byCoordinateSystem.getAxis(i)- Specified by:
- getUnitin interface- CoordinateSystemAxis
- Returns:
- the unit of measure used for coordinate values along this coordinate system axis.
 
- 
getMinimumValuepublic double getMinimumValue()Returns the minimum value normally allowed for this axis, in the unit of measure for the axis. If there is no minimum value, then this method returns negative infinity.- Specified by:
- getMinimumValuein interface- CoordinateSystemAxis
- Returns:
- the minimum value normally allowed for this axis.
 
- 
getMaximumValuepublic double getMaximumValue()Returns the maximum value normally allowed for this axis, in the unit of measure for the axis. If there is no maximum value, then this method returns negative infinity.- Specified by:
- getMaximumValuein interface- CoordinateSystemAxis
- Returns:
- the maximum value normally allowed for this axis.
 
- 
getRangeMeaningReturns the meaning of axis value range specified by the minimum and maximum values. If there is no minimum and maximum values (i.e. if those values are negative infinity and positive infinity respectively), then this method returnsnull.- Specified by:
- getRangeMeaningin interface- CoordinateSystemAxis
- Returns:
- the meaning of axis value range, or nullif unspecified.
 
- 
isHeuristicMatchForNameReturnstrueif either the primary name or at least one alias matches the given string according heuristic rules. This method performs the comparison documented in thesuper-class, with an additional flexibility for latitudes and longitudes:- "Lat",- "Latitude"and- "Geodetic latitude"are considered equivalent.
- "Lon",- "Longitude"and- "Geodetic longitude"are considered equivalent.
 Future evolutionsThis method implements heuristic rules learned from experience while trying to provide inter-operability with different data producers. Those rules may be adjusted in any future SIS version according experience gained while working with more data producers.- Overrides:
- isHeuristicMatchForNamein class- AbstractIdentifiedObject
- Parameters:
- name- the name to compare.
- Returns:
- trueif the primary name of at least one alias matches the specified- name.
- See Also:
 
- 
equalsCompares the specified object with this axis for equality. The strictness level is controlled by the second argument. This method compares the following properties in every cases: In the particular case wheregetRangeMeaning()isWRAPAROUND, thengetMinimumValue()andgetMaximumValue()are considered non-ignorable metadata and will be compared for every modes. All other properties are compared only for modes stricter thanComparisonMode.IGNORE_METADATA.- Specified by:
- equalsin interface- LenientComparable
- Overrides:
- equalsin class- AbstractIdentifiedObject
- Parameters:
- object- the object to compare to- this.
- mode-- STRICTfor performing a strict comparison, or- IGNORE_METADATAfor comparing only properties relevant to coordinate transformations.
- Returns:
- trueif both objects are equal.
- See Also:
 
- 
computeHashCodeprotected long computeHashCode()Invoked byhashCode()for computing the hash code when first needed. SeeAbstractIdentifiedObject.computeHashCode()for more information.- Overrides:
- computeHashCodein class- AbstractIdentifiedObject
- Returns:
- the hash code value. This value may change in any future Apache SIS version.
 
- 
formatToFormats this axis as a Well Known TextAxis[…]element.Constraints for WKT validityThe ISO 19162 specification puts many constraints on axis names, abbreviations and directions allowed in WKT. Most of those constraints are inherited from ISO 19111 — seeCoordinateSystemAxisjavadoc for some of those. The current Apache SIS implementation does not verify whether this axis name and abbreviation are compliant; we assume that the user created a valid axis. The only actions (derived from ISO 19162 rules) taken by this method (by default) are:- Replace “Geodetic latitude” and “Geodetic longitude” names (case insensitive) by “latitude” and “longitude” respectively.
- For latitude and longitude axes, replace “φ” and “λ” abbreviations by “B” and “L” respectively (from German “Breite” and “Länge”, used in academic texts worldwide). Note that “L” is also the transliteration of Greek letter “lambda” (λ).
- In SphericalCS, replace “φ” and “θ” abbreviations by “U” and “V” respectively.
- In PolarCS, replace “θ” abbreviation by “U”.
 WKTFormat.setTransliterator(Transliterator).- Overrides:
- formatToin class- AbstractIdentifiedObject
- Parameters:
- formatter- the formatter where to format the inner content of this WKT element.
- Returns:
- "Axis".
- See Also:
 
 
-