Departures from the ISO/OGC specifications

The following sections list all the departures from the ISO standards taken by the GeoAPI interface library. The rationale for these departures fall into the following categories:

Departure from OGC/ISO standard for closer integration with the Java environment

Package datum

The Calendar code list is omitted because the handling of calendar systems is delegated to the java.time framework.

Interface ControlledVocabulary

Provided for allowing developers to handles Enum and CodeList in the same way for some common tasks.

Interface MathTransform2D

This interface is not part of OGC specification. It has been added in GeoAPI for close integration with the Java2D library. The API defined in this interface matches the java.awt.geom.AffineTransform API.

Interface ParameterValue

This interface merges the OperationParameterValue interface and ParameterValue union. The valueFileCitation and geographicObject properties were omitted because those more complex objects can be specified by setting the <T> parameterized type to Citation and Geometry respectively.

Interface TemporalDatum

The calendar attribute is omitted because the handling of calendar systems is delegated to the java.time framework.

Interface TimeCS

ISO 19111:2019 renamed this interface from TimeCS to TemporalCS. GeoAPI has kept the ISO 19111:2007 interface name for historical reasons, but also to emphasize the relationship with the java.time package.

Interface VerticalExtent

ISO 19115 provides two ways to define a coordinate reference system, with the restriction that only one of those two ways can be used:
  1. verticalCRS of type VerticalCRS (from ISO 19111),
  2. verticalCRSId of type MD_ReferenceSystem (from ISO 19115).
GeoAPI provides only the first way, because the MD_ReferenceSystem type has been intentionally omitted in order to have a single CRS framework (the ISO 19111 one).

Interface AvailableFunction

Method getReturnType

OGC/ISO defines the return type as org.opengis.util.ScopedName. However this is at odd with other classes returning type information, which use TypeName.

Interface BrowseGraphic

Method getFileName

ISO 19115 type is CharacterString. Since the specification clearly states that the string shall be a filename, a more specific Java type like URI seem appropriate.

Interface CoordinateMetadata

Method getCoordinateEpoch

The ISO specification uses a decimal year in the Gregorian calendar. For example, 2017-03-25 in the Gregorian calendar is epoch 2017.23. GeoAPI delegates to the Java time package instead.

Interface CoordinateSet

Method stream

Added for allowing developers to process coordinate tuples efficiently in Java environments. The use of Java streams makes parallel processing easier.

Method asDoubleBuffers,
Method asFloatBuffers

Added for allowing developers to access coordinate tuples efficiently in Java environments, including the case where the coordinate values are in the memory of a native application.

Interface DataFile

Method getFileName

ISO 19115-3 type is <gcx:FileName>, which we map to a URI in Java.

Method getFileType

ISO 19115-3 type is <gcx:MimeFileType>.

Interface DataIdentification

Method getLocalesAndCharsets

GeoAPI replaces ISO 19115:2014 LanguageCode, CountryCode and MD_CharacterSetCode code lists by equivalent objects from the standard Java library. See org.opengis.metadata.Metadata#getLocalesAndCharsets() for more information.

Interface DigitalTransferOptions

Method getTransferFrequency

The type defined by ISO 19115 is TM_PeriodDuration, an interface defined by ISO 19108. That ISO type should be mapped to java.time.Period from the standard Java library, or to java.time.Duration if a precision smaller than one day is needed.

Interface FeatureCatalogueDescription

Method getLocalesAndCharsets

GeoAPI replaces ISO 19115:2014 LanguageCode, CountryCode and MD_CharacterSetCode code lists by equivalent objects from the standard Java library. See org.opengis.metadata.Metadata#getLocalesAndCharsets() for more information.

Interface Identification

Method getTemporalResolutions

The type defined by ISO 19115 is TM_Duration, an interface defined by ISO 19108. That ISO type can be mapped to the java.time.Period or java.time.Duration classes from the standard Java library.

Interface Instant

Method getIndeterminatePosition

Moved from TM_TemporalPosition to TM_Instant because the former is replaced by the Temporal standard Java interface, and Temporal does not have an association to the IndeterminateValue code list.

Interface Metadata

Method getLocalesAndCharsets

GeoAPI replaces ISO 19115-1:2014 LanguageCode, CountryCode and MD_CharacterSetCode code lists by equivalent objects from the standard Java library. The PT_Locale class, which is a container for above code-lists, is replaced by Map entries in order to avoid to introduce a new class and because the character set information is not as relevant in Java than in XML documents. For example, the character encoding information is irrelevant to InternationalString because the Java language fixes the encoding of all String instances to UTF-16.

In addition ISO 19115:2014 defines defaultLocale and otherLocale(s) as separated attributes, but GeoAPI groups them in a single collection for compatibility with standard Java methods like Locale.lookup(…, Collection<Locale>)Locale#lookup(List, Collection). This API design makes easy to provide the collection of Locale objects with getLocalesAndCharsets().keySet()Map#keySet().

Interface StandardOrderProcess

Method getCurrency

This method is not part of ISO specification. It has been added in GeoAPI for integration with the standard JDK library.

Interface Type

Method toJavaType

Added for integration with the Java language.

Interface TypeName

Method toJavaType

Added for allowing implementations to define their own mapping to a class in the Java programming language.

Interface ValueStructure

Method toJavaType

Added for integration with the Java language.

Convenience extension to OGC/ISO standard

Interface DirectPosition,
Interface Envelope

The ISO specification defines this interface in the coordinate sub-package. GeoAPI moved this interface into the org.opengis.geometry root package for convenience, because it is extensively used.

Interface Filter

In ISO specification, Filter contains a "filter" property of type Operator. Then various Operator subclasses are provided such as SpatialOperator, etc. GeoAPI removes this indirection level and extends Filter directly instead.

Interface CoordinateMetadata

Method getCoordinateReferenceSystem

The ISO specification defines two conditional attributes: an identifier (crsID) or an association to a CRS object (crs), with the requirement that at least one of them shall be supplied. GeoAPI retains only the latter for client applications ease of use, therefor making this attribute mandatory. Implementers shall resolve identifiers, for example using org.opengis.referencing.crs.CRSAuthorityFactory.

Interface CoordinateOperationFactory

Method getOperationMethod

This method has been added in order to free the user from choosing whether he should get the operation method from CoordinateOperationAuthorityFactory, or from MathTransformFactory, or creating it himself.

Interface CoordinateSet

Method getDimension

This shortcut has been added because this is a frequently used information.

Interface Element

Method getMeasure

This method is not part of ISO 19157 specification. Instead, the standard provides only a MeasureReference that clients can use for finding the full measure description in a measure register or catalogue. Because Java interfaces can execute code (as opposed to static data encoded in XML or JSON documents), implementers are free to do themselves the work of fetching this information from an external source when getMeasure() is invoked. This method is added in the Element interface for making that feature possible. This is an optional feature; implementers can ignore this method and implement only the #getMeasureReference() method.

Interface Envelope

Method getCoordinateReferenceSystem,
Method getDimension

ISO does not define this method - the CRS or the dimension can be obtained only through one of the corner DirectPosition objects. GeoAPI adds this method for convenience as a more direct way of obtaining the information and to free the user from the need to choose an arbitrary corner (very defensive code might feel the need to get the value from both corners to check they were the same).

Method getMinimum,
Method getMaximum,
Method getMedian

This method is not part of ISO specification. GeoAPI adds this method for convenience and efficiency, since some implementations might store the minimum and maximum coordinate values directly in the Envelope itself rather than in a contained DirectPosition corner.

Method getSpan

This method is not part of ISO specification. GeoAPI adds this method for convenience and efficiency, since some implementations might store the span values directly in the Envelope itself rather than calculating it from the corners.

Interface GenericName

Method tip

This method is not part of ISO specification. It does not provide any additional information compared to that accessible though the standard methods defined by ISO, but provides easier to access frequently requested information.

Method toFullyQualifiedName

This method is not part of ISO specification. It does not provide any additional information compared to that accessible though the standard methods defined by ISO, but makes easier to access frequently requested information.

Interface Matrix

Method isIdentity

Added as a convenience for a frequently requested operation.

Interface OperationMethod

Method getParameters

The sequence if GeneralParameter is replaced by a ParameterGroup because it provides method for fetching parameters by their names.

Interface ParameterDescriptorGroup

Method descriptor

This method is not part of the ISO specification. It has been added in an attempt to make this interface easier to use.

Interface ParameterValueGroup

Method parameter

This method is not part of the ISO specification. It has been added in an attempt to make this interface easier to use.

Method groups,
Method addGroup

This method is not part of the ISO specification. It has been added for ease of use.

Interface Record

Method set

This is a convenience shortcut for a frequently used operation.

Interface RecordType

Method getMembers

This is a convenience shortcut for a common operation.

Method isInstance

This method provides no additional information compared to the ISO standard methods, but is declared in GeoAPI for convenience.

Interface ScopedName

Method path

This method is not part of ISO specification. It has been added in GeoAPI as a complement of the ISO tail() method.

Interface SingleCRS

Method getDatum

The ISO specification declares the datum as absent when the association is indirect. GeoAPI recommends to follow the link to the base CRS for users convenience.

Interface SingleOperation

Method getParameterValues

The sequence if GeneralParameterValue is replaced by a ParameterValueGroup because it provides method for fetching parameters by their names.

Interface SpatialCapabilities

Method getSpatialOperators

GeoAPI replaces the SpatialOperatorDescription type by Map.Entry. It reduces the number of interfaces and makes easy to query the operands for a specific operator.

Interface TemporalCapabilities

Method getTemporalOperators

GeoAPI replaces the TemporalOperatorDescription type by Map.Entry. It reduces the number of interfaces and makes easy to query the operands for a specific operator.

Departure from OGC/ISO standard for harmonization between different specifications

Package cs

The OrdinalCS and TemporalCountCS interfaces are omitted because they are about a type of coordinate values (integers) rather than the mathematical rules implied by the coordinate system. The DateTimeTemporalCS interface is omitted for similar reason. The TemporalMeasureCS interface is omitted because it behaves like most other axes, and therefor is adequately covered by the TimeCS parent interface.

Package parameter

ISO 19111 defines parameters in the Coordinate Operation package, while ISO 19115 defines parameters in the Services package. GeoAPI moves those classes in this parameter independent package and tries to provide a single model for the two standards when possible. With this move, GeoAPI has extended the use of these parameter classes to a more general use rather than only for referencing operation types.

Interface DynamicReferenceFrame

ISO 19111 defines two distinct interfaces, DynamicGeodeticReferenceFrame and DynamicVerticalReferenceFrame. GeoAPI defines a single interface for all cases, with the requirement that implementers shall combine this interface with GeodeticReferenceFrame or VerticalReferenceFrame respectively using multi-inheritance of interfaces. This is a design similar to org.opengis.referencing.crs.DerivedCRS.

Interface Factory

This interface is not part of the OGC specification. It is added for uniformity, in order to provide a common base class for all factories.

Interface ObjectFactory

This interface is not part of any OGC specification. It is added for uniformity, in order to provide a common base class for all referencing factories producing IdentifiedObject instances.

Interface ReferenceSystem

The type defined in ISO 19115 has no relationship with ISO 19111. GeoAPI redefines this type as a subtype of IdentifiedObject and the common parent for org.opengis.referencing.crs.CoordinateReferenceSystem and org.opengis.referencing.gazetteer.ReferenceSystemUsingIdentifiers. This change makes this interface closer to the legacy ISO 19115:2003 RS_ReferenceSystem than to ISO 19115:2015 MD_ReferenceSystem.

Interface AvailableFunction

Method getArguments

Usage of the ISO 19143 Argument type has been replaced by usage of the ISO 19111 OperationParameter type in order to provide a unified parameter API.

Interface DistanceOperator

Method getExpressions

ISO 19143 defines a single expression (valueReference) completed by 2 parameters (geometry and distance). GeoAPI puts the expression and the 2 parameters in a single list for enabling access to all parameters in a more generic wayFilter#getExpressions().

Interface Instant

Method getPosition

ISO 19108 defines this property as an union of date8601, time8601, dateTime8601 or anyOther properties. Unions are not explicitly supported by the Java language, but the same result is achieved with type hierarchy. The mappings of ISO 19103 Date, Time and DateTime types are described in above Javadoc. The TM_TemporalPosition type used by the anyOther property is replaced by a vendor-specific Temporal implementation.

Interface Measure

Method getParameters

Usage of the ISO 19157 DQM_Parameter type has been replaced by usage of the ISO 19111 OperationParameter type, completed with some new DQM_Parameter properties, in order to provide a unified parameter API. Note that OperationParameter is named org.opengis.parameter.ParameterDescriptor in GeoAPI to reflect its extended scope.

Interface OperationMetadata

Method getParameters

Usage of the ISO 19115 SV_Parameter type has been replaced by usage of the ISO 19111 OperationParameter type, completed with new SV_Parameter properties, in order to provide a unified parameter API. Note that OperationParameter is named org.opengis.parameter.ParameterDescriptor in GeoAPI to reflect its extended scope.

Interface ParametricDatum

Method getDatumDefiningParameter

ISO 19111 defines a DefiningParameter class. GeoAPI retrofits in the org.opengis.parameter framework.

Interface SampleDimension

Method getTransferFunctionType

ISO 19115-2 defines this property in the MI_Band type (a MD_Band subtype) for historical reasons. GeoAPI moves this property up in the hierarchy to a more natural place when not constrained by historical reasons, which is together with the offset and scale factor.

Method getNominalSpatialResolution

ISO 19115-2 defines this property in the MI_Band type (a MD_Band subtype) for historical reasons. GeoAPI moves this property up in the hierarchy since this property can apply to any sample dimension, not only the measurements in the electromagnetic spectrum.

Interface TemporalPrimitive

Method findRelativePosition

ISO 19108 defines a TM_RelativePosition code list which is identical to the ISO 19143 TemporalOperatorName code list, except that the latter has one more value for "any interacts". GeoAPI uses the latter for avoiding duplication.

Extension to OGC/ISO standard

Interface MathTransform1D

This interface is not part of the OGC specification. It has been added as a complement of MathTransform2D and because the 1D case provides opportunities for optimization through a transform method accepting a single double primitive type.

Interface NameFactory

Added in order to provide constructors for GenericName and related interfaces.

Interface AuthorityFactory

Method getAuthorityCodes

This method is not part of the OGC specification but has been added as a way to publish the capabilities of a factory.

Interface CoordinateOperationAuthorityFactory

Method createOperationMethod

This method has been added because OGC 01-009 does not define a factory method for creating such object.

Interface CoordinateOperationFactory

Method createOperation

This method has been added at user request, in order to specify the desired transformation path when many are available.

Method createConcatenatedOperation,
Method createOperationMethod

This method has been added because OGC 01-009 does not define a factory method for creating such object.

Method createDefiningConversion

The defining conversion concept appears in ISO 19111 specification without formalization in UML diagrams. This concept has been formalized in GeoAPI in order to allow the creation of ProjectedCRS instances.

Interface GeneralParameterDescriptor

Method createValue

This method is not part of the ISO specification. It is provided in GeoAPI as a kind of factory method.

Interface GenericName

Method toInternationalString

This method is not part of the ISO specification. It has been added to provide a way to localize the name.

Interface IdentifiedObject

Method toWKT

This method is not part of the OGC specification. It has been added in order to provide the converse of the CRSFactory.createFromWKT(String) method, which is defined in OGC 01-009.

Interface MathTransformFactory

Method getAvailableMethods

This method is not part of the OGC specification. It has been added as a way to publish the capabilities of a factory.

Method getLastMethodUsed

This method is not part of the OGC specification. It has been added because this information appears to be important in some situations. We did not defined a {MathTransform, OperationMethod} tuple in order to keep create(…) simpler in the common case where the operation method is not needed, and for historical reasons (conformance to OGC 01-009).

Method getDefaultParameters,
Method createBaseToDerived

This method is part of the GeoAPI mechanism for defining the math transform parameters or deriving other transforms.

Interface ParameterDescriptor

Method getValidValues,
Method getUnit

This method is not part of ISO specification. It is provided as a complement of information.

Method createValue

This method is not part of the ISO specification. It is provided in GeoAPI as a kind of factory method.

Interface ParameterDescriptorGroup

Method createValue

This method is not part of the ISO specification. It is provided in GeoAPI as a kind of factory method.

Departure from OGC/ISO standard for historical reason

Interface CoordinateOperation

Method getScope

This method has been kept conformant with the specification published in 2003. The revision published in 2007 replaced the singleton by a collection and changed the obligation from "optional" to "mandatory", requiring a return value of not known if the scope is unknown. This change is still under review.

Interface Datum

Method getScope

This method has been kept conformant with the specification published in 2003. The revision published in 2007 replaced the singleton by a collection and changed the obligation from "optional" to "mandatory", requiring a return value of not known if the scope is unknown.

Interface ExtendedElementInformation

Method getName

This property has been kept conform to ISO 19115:2003 for simplicity. The 2014 revision defines two mutually exclusive names depending on the data type: "conceptName" for ENUMERATION, CODE_LIST or CODE_LIST_ELEMENT, and "name" for all other data types. GeoAPI keeps the "name" property for all data types and let developers inspect the "dataType" property if needed.

Interface PrimeMeridian

Method getAngularUnit

This attribute is inherited from an older OGC specification. In ISO 19111, greenwichLongitude is a property of type Angle rather than double, and the unit of measure is part of the Angle value.

Interface QuantitativeResult

Method getValueType

Renamed from "valueRecordType" to "valueType" for compatibility with ISO 19115:2003 and because the return object type does not need to be repeated in Java method name.

Interface Record

Method get

This method was named locate in ISO 19103:2005 and removed in ISO 19103:2015. It has been kept in GeoAPI as a convenience shortcut for a frequently used operation.

Interface RecordType

Method locate

This method was provided in ISO 19103:2003 and removed in ISO 10103:2015. GeoAPI keeps it for compatibility reasons, since this method can be seen as a shortcut to other methods.

Departure from OGC/ISO standard in the name

Class DistributedComputingPlatform

Renamed from "DCPList" to "DistributedComputingPlatform" for the following reasons:
  1. GeoAPI avoids the "List" suffix because instances of this class are not list. The concept of list rather applies to the list of predefined static constants in this class.
  2. "DCP" is an abbreviation, and Java usage is to avoid abbreviations unless they are well known.

Interface GeneralParameterDescriptor,
Interface ParameterDescriptor,
Interface ParameterDescriptorGroup

GeoAPI uses a name which contains the "Descriptor" word for consistency with other libraries in Java (e.g. ParameterListDescriptor in Java Advanced Imaging).

Interface InternationalString

This is called PT_FreeText in ISO 19115 standard, and can be applied to all metadata elements who's data type is CharacterString and domain is “free text”. GeoAPI uses the InternationalString name for historical reasons and for consistency with similar object in Internationalization Service for J2EE.

Interface DerivedCRS

Method getConversionFromBase

Was toBase in OGC 01-009, conversion in ISO 19111:2007 and derivingConversion in ISO 19111:2019. By analogy with 01-009, GeoAPI defines a method name which contains the "FromBase" words for making clear which CRS is the source or which one is the target.

Interface Element

Method getMeasureReference

The ISO 19157 property name is measure. This is renamed measureReference in GeoAPI for reflecting the return type and for making room for a measure property for the full Measure description.

Interface EvaluationMethod

Method getReferenceDocuments

Renamed from "referenceDoc" to "referenceDocument" for avoiding abbreviation (a Java usage).

Interface FeatureCatalogueDescription

Method getFeatureTypeInfo

Renamed from "featureTypes" to "featureTypeInfo" for the following reasons:
  1. Avoid name collision with the ISO 19115:2003 definition of "featureTypes".
  2. Avoid confusion between FeatureTypeInfo and org.opengis.feature.FeatureType. A getFeatureTypes() method name would suggest that the collection contains the latter.

Interface GeographicExtent

Method getInclusion

The ISO identifier is "extentTypeCode" and defines the value 1 for inclusion, and 0 for exclusion. GeoAPI uses a name which better expresses the meaning of the return value.

Interface ParameterValue

Method doubleValue

Renamed the method from "value" to "doubleValue" for consistency with Number.doubleValue() and the other "*Value" methods defined in this interface.

Method intValue

Renamed the method from "integerValue" to "intValue" for consistency with Number.intValue() and the int Java primitive type.

Method doubleValueList

Renamed the method from "valueList" to "doubleValueList" both for consistency with doubleValue() and also because, like doubleValue(), this method returns an array of double values rather than a Measure object.

Method intValueList

Renamed the attribute from "integerValueList" to "intValueList" for consistency with intValue().

Interface ParameterValueGroup

Method getDescriptor

The ISO name was "group". GeoAPI uses "descriptor" instead in order to override the getDescriptor() generic method provided in the parent interface. In addition the "descriptor" name makes more apparent that this method returns an abstract definition of parameters - not their actual values - and is consistent with usage in other Java libraries like the Java Advanced Imaging library.

Interface Party

Method getIdentifiers

Renamed from "partyIdentifier" to "identifier" for providing a unified method signature for identifiers.

Departure from OGC/ISO standard due to constraint of the Java language

Package cs

The GeodeticCS, EngineeringCS and DerivedProjectedCS unions are omitted because unions are not directly supported in the Java language (they are supported in some other languages such as C/C++). Unions could be simulated, for example, by defining GeodeticCS as a parent interface of org.opengis.referencing.cs.CartesianCS, org.opengis.referencing.cs.SphericalCS and org.opengis.referencing.cs.EllipsoidalCS (the members of the GeodeticCS union). However, it would blur the semantics of subtyping as an “is type of” hierarchy. For example, a CartesianCS can be used in non-geodetic contexts.

Interface Ellipsoid

ISO 19111 defines the union named secondDefiningParameter as being either semiMinorAxis or inverseFlattening. The union construct (defined in some languages like C/C++) does not exist in Java. GeoAPI changed the interface to require both ellipsoidal parameters (in addition to the semiMajorAxis parameter which is mandatory in any case), as was done in OGC 01-009. However, implementers could readily permit users to only provide one of the two parameters by creating a class which calculates the second parameter from the first. For precision, GeoAPI imports the isIvfDefinitive attribute from OGC 01-009 to enable the user to establish which of the two parameters was used to define the instance.

Interface Position

ISO 19107 defines Position as a union of DirectPosition and Point but unions are not allowed in Java. GeoAPI defines Position as the base interface of both types, and the Java instanceof operation should be used for determining the type.

Interface BinarySpatialOperator

Method getOperand2

ISO 19143 restricts the type to SpatialDescription, which is a union between Geometry, Envelope and ValueReference. Union has no direct equivalence in Java and is replaced by documentation in this method.

Enum Obligation

Enum FORBIDDEN

ISO specifications sometimes override a parent method with a comment saying that the method is not allowed for a particular class. Since there is no construct in Java for expressing this constraint in the method signature, GeoAPI defines a FORBIDDEN obligation (not in original ISO specifications) to be used with the @UML annotation and which adds a flag in the Java documentation.

Interface TemporalOperator

Method getExpressions

ISO 19143 uses two properties, named operand1 and operand2, of type ValueReference and TemporalOperand respectively. The later is a union of TM_Object and ValueReference, which has no direct equivalence in Java. The union purpose is replaced by documentation in this method. The two values are put in a list for retrofitting in Filter#getExpressions().

Departure from OGC/ISO standard by generalization

Interface AuthorityFactory

Method createObject

This method is not part of the OGC specification. It has been added to leverage the capability of factories that can automatically determine the type of the requested object at runtime.

Interface BinarySpatialOperator

Method getOperand1

ISO 19143 restricts the type to ValueReference. GeoAPI relaxes this restriction by allowing arbitrary expressions.

Interface CompoundCRS

Method getComponents

Added as an alternative to the association defined by ISO 19111 for resolving the problem of metadata lost. The ISO 19111 requirement is still available as the #getSingleComponents() method.

Method getCoordinateSystem

ISO 19111 defines this method for SingleCRS only. GeoAPI declares this method in CompoundCRS as well for user convenience, because CS dimension and axes are commonly requested information that are still available (indirectly) for compound CRS.

Interface CoordinateReferenceSystem

Method getCoordinateSystem

ISO 19111 defines this method for SingleCRS only. GeoAPI declares this method in this parent interface for user convenience, because CRS dimension and axes are commonly requested information and are always available, directly or indirectly, even for CompoundCRS.

Interface Filter

Method getOperatorType

The ISO/OGC standard defines an operatorType property in UnaryLogicOperator, BinaryLogicOperator, BinaryComparisonOperator, BinarySpatialOperator and DistanceOperator. This method has been added for providing a single access point for that information without the need to check for each sub-type.

Method getExpressions

This method has been added for providing a single access point for information provided in sub-types. The properties captured here have different names in OGC/ISO specification depending on the sub-type: expression (with a cardinality of 1, 2 or unlimited), operand1, operand2, or valueReference. This method provides a way to access those expressions without the need to make special cases for each sub-type.

Interface GeneralParameterDescriptor

Method getMaximumOccurs

Moved up (in the interface hierarchy) the maximumOccurs method from ParameterDescriptorGroup into this super-interface, for parallelism with the minimumOccurs method.

Interface GenericName

Method head

ISO defines this method in ScopedName only. GeoAPI defines it in the base class since LocalName can return a sensible value for it. This reduces the need for casts.

Interface IdentifiedObject

Method getDomains

ISO 19111 defines this property in an ObjectUsage subtype so that only the org.opengis.referencing.datum.Datum, org.opengis.referencing.crs.CoordinateReferenceSystem and org.opengis.referencing.operation.CoordinateOperation subtypes inherit this property. GeoAPI relaxes this restriction for two reasons:
  • A need to specify a scope can also occur in other subtypes. For example a Minkowski org.opengis.referencing.cs.CoordinateSystem may want to specify "For objects moving at relativistic speed" scope.
  • The ObjectUsage type name is at odd with the semantics of subclassing as an “is type of” hierarchy. Qualifying a CRS as “a type of object usage” is restrictive. Instead, CRS contains a description of object usage. Omitting the ObjectUsage subtype avoids this semantic oddity.

historical

Interface CitationDate

Method getReferenceDate

Renamed for avoiding a conflict with the getDate() method defined in GeoAPI 3.0.

Interface Event

Method getDateOfOccurrence

Renamed for avoiding a conflict with the getTime() method defined in GeoAPI 3.0.