Package org.opengis.parameter

Description and storage of parameter values.

Parameters are described extensively in the OpenGIS® Spatial Referencing by Coordinates (Topic 2) specification, but appear also in other specifications like Metadata and Web Processing Services. This GeoAPI package is derived mostly from the referencing model (ISO 19111), augmented with some properties from the metadata model (ISO 19115) in order to provide a unified framework for both standards.

Interfaces in this package can be grouped in two categories:

  • Parameter descriptors are immutable types that describes the parameters needed by an operation or a process. Descriptors contain information like parameter name, optionality, repeatability and value type, but do not contain the actual parameter value.
  • Parameter values are mutable (descriptor, value) tuples, together with convenience methods for searching a single parameter for a given name, performing unit conversions and getting the values as instances of some commonly used types.
Type hierarchy
Parameter descriptor Parameter value
  └─ GeneralParameterDescriptor
      ├─ ParameterDescriptor
      └─ ParameterDescriptorGroup
  └─ GeneralParameterValue
      ├─ ParameterValue
      └─ ParameterValueGroup
Parameter descriptor instantiations are implementation-dependent. Descriptors are usually not instantiated directly, but rather provided as parts of larger objects like OperationMethod. Parameter value instances are created by GeneralParameterDescriptor.createValue().

Coordinate Operation parameters

Most parameter values are real numbers. Those values can be obtained by the ParameterValue.doubleValue() method. But for some operation methods, notably those implementing a grid interpolation algorithm, the parameter value could be a file name or URI. Those values can be obtained by the ParameterValue.getValue() method. Note that such URI may be valid only for some locations. An example is the coordinate transformation from NAD 27 to NAD 83 in the USA; depending on the locations of the points to be transformed, one of a series of grid files should be used.

Some operations may require a large number of parameters. Also, some operations require that groups of parameters be repeatable as a group. In such cases, it is helpful to group related parameters in parameter descriptor groups. Each parameter group consists of a set of parameter descriptors, or other, nested parameter groups. This way of modeling is not mandatory; all parameters may be assigned directly to the operation method.

Service Metadata parameters

The metadata standard uses a simple parameter class (SV_Parameter) with only name, direction, description, optionality and repeatibility properties. However in order to provide a unified parameter API, GeoAPI omits the metadata parameter class and instead defines a mapping from metadata properties to GeoAPI properties. The mapping is documented in OperationMetadata.getParameters() and in GeneralParameterDescriptor javadoc.

Web Processing Service parameters

The Web Processing Service (WPS) standard defines Input and Output structures with some properties similar to the GeneralParameterDescriptor ones. In particular, Identifier, Abstract, MinOccurs and MaxOccurs have direct equivalences to GeoAPI. While GeoAPI does not yet support WPS, we plan to retrofit WPS input/output in existing API if possible.

Departure from OGC/ISO specification:
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.