OGC 09-083r3
Open Geospatial Consortium Date: 2011-04-25 Reference number of this OGC® project document: OGC 09-083r3
Version: 3.0.0 Category: OGC® Implementation Standard Editor: Adrian Custer
GeoAPI 3.0 Implementation Standard
Copyright notice
Copyright © 2009-2011 Open Geospatial Consortium To obtain additional rights of use, visit http://www.opengeospatial.org/legal/.
Warning This document is an OGC Member approved international standard. This document is available on a royalty free, non-discriminatory basis. Recipients of this document are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation. Document type: Document stage: Document language:
OGC® Publicly Available Implementation Standard Approved English
License Agreement Permission is hereby granted by the Open Geospatial Consortium, ("Licensor"), free of charge and subject to the terms set forth below, to any person obtaining a copy of this Intellectual Property and any associated documentation, to deal in the Intellectual Property without restriction (except as set forth below), including without limitation the rights to implement, use, copy, modify, merge, publish, distribute, and/or sublicense copies of the Intellectual Property, and to permit persons to whom the Intellectual Property is furnished to do so, provided that all copyright notices on the intellectual property are retained intact and that each person to whom the Intellectual Property is furnished agrees to the terms of this Agreement. If you modify the Intellectual Property, all copies of the modified Intellectual Property must include, in addition to the above copyright notice, a notice that the Intellectual Property includes modifications that have not been approved or adopted by LICENSOR. THIS LICENSE IS A COPYRIGHT LICENSE ONLY, AND DOES NOT CONVEY ANY RIGHTS UNDER ANY PATENTS THAT MAY BE IN FORCE ANYWHERE IN THE WORLD. THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE DO NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE INTELLECTUAL PROPERTY WILL MEET YOUR REQUIREMENTS OR THAT THE OPERATION OF THE INTELLECTUAL PROPERTY WILL BE UNINTERRUPTED OR ERROR FREE. ANY USE OF THE INTELLECTUAL PROPERTY SHALL BE MADE ENTIRELY AT THE USER’S OWN RISK. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ANY CONTRIBUTOR OF INTELLECTUAL PROPERTY RIGHTS TO THE INTELLECTUAL PROPERTY BE LIABLE FOR ANY CLAIM, OR ANY DIRECT, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM ANY ALLEGED INFRINGEMENT OR ANY LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR UNDER ANY OTHER LEGAL THEORY, ARISING OUT OF OR IN CONNECTION WITH THE IMPLEMENTATION, USE, COMMERCIALIZATION OR PERFORMANCE OF THIS INTELLECTUAL PROPERTY. This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party. Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it. None of the Intellectual Property or underlying information or technology may be downloaded or otherwise exported or reexported in violation of U.S. export laws and regulations. In addition, you are responsible for complying with any local laws in your jurisdiction which may impact your right to import, export or use the Intellectual Property, and you represent that you have complied with any regulations or registration procedures required by applicable law to make this license enforceable
ii
Copyright © 2012 Open Geospatial Consortium
OGC 09-083r3
Content i. Abstract ............................................................................................................................. iv ii. Preface ................................................................................................................................v iii. Submitting organizations ............................................................................................... vii iv. Submission contact points .............................................................................................. vii v. Changes to the OGC® Abstract Specification ................................................................ vii vi. Foreword ....................................................................................................................... viii vii. Introduction .................................................................................................................... ix 1. Scope ..................................................................................................................................1 2. Conformance ......................................................................................................................1 3. Normative references .........................................................................................................2 4. Terms and definitions .........................................................................................................3 4.1 Application Programming Interface (API) ..................................................................3 4.2 Java ..............................................................................................................................3 5. Conventions ........................................................................................................................3 5.1 Symbols (and abbreviated terms) ................................................................................3 6. A Geographic API in Java ..................................................................................................5 7. Annotation package ............................................................................................................6 7.1 Use of the annotation types .........................................................................................6 8. Utility package ...................................................................................................................7 8.1 Package Mapping ........................................................................................................8 8.1.1 Primitive Types ....................................................................................................8 8.1.2 Collection and dictionary types ...........................................................................9 8.1.3 Enumerated types ...............................................................................................10 8.1.4 Representation types ..........................................................................................10 8.1.5 Name types ........................................................................................................ 11 8.1.6 Derived types ..................................................................................................... 11 8.2 Use of the utility types ...............................................................................................12 8.3 Departure from ISO 19103 ........................................................................................13 8.4 Future improvements .................................................................................................14 9. Metadata packages ...........................................................................................................15 9.1 Package mapping .......................................................................................................15 9.2 Use of the GeoAPI metadata packages......................................................................16 9.3 Departures from standard ..........................................................................................17 9.4 Future work ...............................................................................................................18 10. Geometry packages ........................................................................................................20 10.1 Defined types ...........................................................................................................20 ii
Copyright 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
10.2 Use of the geometry packages ................................................................................ 21 10.3 Departure from Standards ....................................................................................... 21 10.4 Future work ............................................................................................................. 21 11. Referencing and Parameter packages ............................................................................ 22 11.1 Package Mapping .................................................................................................... 24 11.2 Use of the referencing and parameter types ............................................................ 24 11.2.1 Creating a Projected Coordinate Reference System........................................ 24 11.2.2 Build a Coordinate Operation.......................................................................... 25 11.2.3 Transform a coordinate between coordinate reference systems. ..................... 26 11.3 Departure from Standards ....................................................................................... 26 11.4 Future work ............................................................................................................. 27
Copyright 2009-2011 Open Geospatial Consortium.
iii
OGC 09-083r3
i. Abstract The GeoAPI Implementation Standard defines, through the GeoAPI library, a Java language application programming interface (API) including a set of types and methods which can be used for the manipulation of geographic information structured following the specifications adopted by the Technical Committee 211 of the International Organization for Standardization (ISO) and by the Open Geospatial Consortium (OGC). This standard standardizes the informatics contract between the client code which manipulates normalized data structures of geographic information based on the published API and the library code able both to instantiate and operate on these data structures according to the rules required by the published API and by the ISO and OGC standards.
iv
Copyright 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
ii. Preface This GeoAPI standard evolved from a long effort at the Open Geospatial Consortium (OGC) and in the free software community focused on developing a library of interfaces defining a coherent data model for the manipulation of geospatial data based on the data model defined in the OGC Abstract Specification. The GeoAPI library has been developed to facilitate the creation of interoperable, standards compliant, Java language software. The GeoAPI interface library originates with the publication in January 2001 of the implementation specification OGC 01-009 Coordinate Transformation Services Revision 1.00 (Martin Daly, ed.) which included a set of interfaces written in the Java language and in the org.opengis namespace. The GeoAPI project started in 2003 as an effort from several contributors to develop a set of Java language interfaces which could be shared between several projects. The GeoAPI project subsequently considered the interfaces of OGC 01-009 as version 0.1 of the GeoAPI library and started working on GeoAPI 1.0 in collaboration with developers writing the OGC specification Geographic Objects. Subsequently, the Open Geospatial Consortium jettisoned its own Abstract Specifications and adopted, as the basis for further work, the standards developed by the Technical Committee 211 of the International Organization for Standardization (ISO) in its ISO 19100 series. The GeoAPI project therefore realigned its library with those standards. In 2003, version 1.0 of the GeoAPI library was released to match the release of the first public draft of the implementation specification OGC 03-064 GO-1 Application Objects Version 1.0 (Greg Reynolds, ed.). The standardization effort of GO-1 took a couple of years during which extensive work was made on the GeoAPI library. Release 2.0 of the GeoAPI library was made at the time of the final publication of the GO-1 specification in 2005. This brief historical synopsis explains why this specification adopts the version number 3.0 despite there being no prior OGC specification of the same name. We expect to release version 3.0 of the GeoAPI library with the final version of this specification. The GeoAPI library and its reference implementation provide the OGC dual benefits. The reference implementation demonstrates to the standards writers that it is possible to develop a single, coherent implementation of all the ISO/OGC specifications covered by the standardized API. The API provides the OGC community with a new point of interoperability between client code written to use the API and library code written to implement the API, with this layer of interoperability explicitly based on the interfaces defined by the core standards of the OGC.
Copyright 2009-2011 Open Geospatial Consortium.
v
OGC 09-083r3
iii. Submitting organizations The following organizations submitted this Implementation Standard to the Open Geospatial Consortium: a) Geomatys, Arles, France.
iv. Submission contact points All questions regarding this submission should be directed to the editor: Martin Desruisseaux Geomatys 24, Rue Pierre-Renaudel 13200 Arles, France [email protected]
v. Changes to the OGC® Abstract Specification The OGC® Abstract Specification does not require changes to accommodate this OGC® standard.
Copyright 2009-2011 Open Geospatial Consortium.
vii
OGC 09-083r3
vi. Foreword The GeoAPI interface library is developed by the GeoAPI project (http://www.geoapi.org/). These interfaces have been developed over a number of years with contributors acting as individual volunteers, as government or institutional workers, or as employees in technology companies. The formal list of contributors is maintained in the project documentation at http://www.geoapi.org/team-list.html but many others have contributed to the project through discussions at meetings of the Technical Committee of the OGC, on the project mailing lists and elsewhere, by working on implementations or client code of the GeoAPI interfaces, or by helping with other concerns of the project. This standard complements existing OGC standards by defining a new, language specific layer of normalization. This standard does not replace the core standards developing the ISO/OGC abstract model but complements those documents for developers who use the Java language by documenting the mapping of types and methods from the abstract model into Java and explaining the use of the GeoAPI library. Because this standard differs in design and ambition from earlier OGC specifications which also included Java language interfaces, this document has been proposed as a new standardization effort in its own right. The GeoAPI Javadoc completed by the annexes A (Conformance) and B (Source Java Archives) are normative, while the annexes C (Types and methods), D (UML diagram for referencing operation types), E (Departures from ISO standards) and F (Comparison with legacy OGC specifications) are informative. The interfaces described in this standard follow directly, without introducing any new concepts, from the previously published standards of the Open Geospatial Consortium and the International Organization for Standardization. Nonetheless, attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium Inc. shall not be held responsible for identifying any or all such patent rights. Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation.
viii
Copyright 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
vii. Introduction The GeoAPI Implementation Standard defines the normalized use of the GeoAPI library. The GeoAPI library contains a series of interfaces and classes in the Java language defined in several packages which interpret into Java the data model and UML types of the ISO and OGC standards documents. The library includes extensive Javadoc code documentation which complement the injunctions of the ISO/OGC specifications by explaining particularities of the GeoAPI library: interpretations made of the specifications where there was room for choice, constraints due to the library's use of Java, or standard patterns of behavior expected by the library, notably in its handling of return types during exceptional situations. This document explains the GeoAPI library and defines its use by library code implementing the API and by client code calling the API. Jointly with the library itself, this work aims to provide a carefully considered interpretation of the OGC specifications for the Java language, to provide a base structure to facilitate the creation of software libraries which implementing OGC standards, and to give application developers a well defined, full documented binding reducing the programming effort of using the OGC abstract model and facilitating the portability of application code between different implementations. The interfaces defined in this standard provide one way to structure the use the Java language to implement software which follows the design and intents of the OGC/ISO specifications. The creators of the GeoAPI interfaces consider this approach as an effective compromise between the OGC specifications, the requirements of the Java language, and the tradition of the core Java libraries. This version of the standard does not yet propose a complete set of interfaces covering the entire abstract standard of the ISO/OGC but focuses on an initial group of interfaces only. This initial group of interfaces covers enough of the abstract model to permit the definition of geospatial coordinate systems and geodetic anchoring points and to enable the conversion of coordinate tuples between different reference systems. The work writing interfaces matching other OGC specifications has already begun in the 'pending' version of the GeoAPI library. It is expected that these other interfaces will be proposed for standardization in subsequent revisions of this specification but the interfaces must first have been implemented, ideally several times, and then tested extensively by use.
Copyright 2009-2011 Open Geospatial Consortium.
ix
OGC 09-083r3
GeoAPI Implementation Standard
1. Scope The GeoAPI Implementation Standard defines, through the GeoAPI library, a Java language application programming interface (API) including a set of types and methods which can be used for the manipulation of geographic information structured following the specifications adopted by the Technical Committee 211 of the International Organization for Standardization (ISO) and by the Open Geospatial Consortium (OGC). This standard standardizes the informatics contract between the client code which manipulates normalized data structures of geographic information based on the published API and the library code able both to instantiate and operate on these data structures according to the rules required by the published API and by the ISO and OGC standards. The normative publication of the library occurs in a Java Archive (JAR) format binary. That binary is distributed along with a ZIP format bundle of the Javadoc comments as HTML files. An online version of the Javadoc comments, which may contain fixes for errata discovered after publication of this specification, is available at the URL http://www.geoapi.org/3.0/javadoc/index.html. Version 3.0 of the library covers the base of the OGC Abstract Model for geographic information. GeoAPI 3.0 provides utilities, base types, metadata structures, and georeferencing data elements which enable the creation of reference systems for spatial coordinates related to the Earth and of mathematical operators to convert coordinates from one coordinate reference system to another. This version of the standard covers the specifications ISO 19103, ISO 19115, ISO 19111, some elements from the closely related OGC™ specification OGC 01-009 and four elements from ISO 19107 necessary to the implementation of ISO 19111. Future versions of this specification are expected to expand this set of interfaces to cover the full model of the OGC Abstract Specification series, including notably Coverage and Feature data structures, with the 'pending' portion of the GeoAPI project already exploring these new areas.
2. Conformance This specification places no conformance constraints on client code which uses this API backed by some implementation. The Java compiler will both ensure that the client code correctly calls the methods which are invoked and ensure type safety for the objects obtained from the method call. Nonetheless, programmers of client code which uses GeoAPI are urged Copyright © 2009-2011 Open Geospatial Consortium.
1
OGC 09-083r3
to follow the best practices for use of the API which are documented in the Javadoc comments of GeoAPI as well as elsewhere, including herein. This specification makes certain requirements of libraries implementing this API and defines several conformance classes for implementations covering different packages of the API or providing different levels of complexity in their implementations. These requirements and conformance classes are presented in Annex A (normative). GeoAPI does not currently have any formal test suite through which to establish conformance of GeoAPI implementations. The construction of such a test suite presents several complex challenges which may be tackled over time. However, GeoAPI does include a validation framework which can be used during unit testing as explained in Annex A.
3. Normative references The following normative documents contain provisions which, through reference in this text, constitute provisions of this specification, OGC 09-083r3, except for any departures from the listed specifications which are explicitly mentioned in this text. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. However, parties to agreements based on this specification, OGC 09-083r3, are encouraged to investigate the possibility of applying the most recent editions of the normative documents indicated below. For undated references, the latest edition of the normative document referred to applies. Ó ISO 19103, Geographic information — Conceptual schema language, 2005. Ó ISO 19115, Geographic information — Metadata, 2003. Ó ISO 19115, Geographic information — Metadata / Corrigendum 1, 2006. Ó ISO 19115-2, Geographic information — Extensions for imagery and gridded data, 2007. Ó ISO 19111, Geographic information — Spatial referencing by coordinates, 2007. Ó OGC 01-009, OpenGIS® Implementation Specification: Coordinate Transformation Services, revision 1.00, 2001 (partially) Ó The Java Language Specification, 3rd Edition. James Gosling, Bill Joy, Guy Steele, Gilad Bracha, Sun Microsystems, 2005. Ó The Unified Code for Units of Measure, http://unitsofmeasure.org/.
2
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
The normative reference towards the ISO metadata standard, ISO 19115, follows the lead of ISO 19111 in excluding all references to MD_CRS and associated types. ISO 19111 states: "Normative reference to ISO 19115 is restricted as follows: in this international standard, normative reference to ISO 19111 excludes the MD_CRS class and its components classes." ISO 19111:2007, section 3 "Normative References" Despite this statement here, this is documented as a departure from the standard in annex E.
4. Terms and definitions For the purposes of this document, the following terms and definitions apply.
4.1 Application Programming Interface (API) A formally defined set of types and methods which establish a contract between client code which uses the API and implementation code which provides the API.
4.2 Java Trademark of Oracle used to refer to an object oriented, single inheritance programming language whose syntax derives from the C programming language and which is defined by the Java Language Specification.
5. Conventions The conventions in this document follow the model of the ISO 19100 series specifications and standard practice in the fields of geographic information systems and software programming.
5.1 Symbols (and abbreviated terms) API Application Program Interface ISO International Organization for Standardization OGC Open Geospatial Consortium
Copyright © 2009-2011 Open Geospatial Consortium.
3
OGC 09-083r3
UML Unified Modeling Language XML eXtended Markup Language 1D One Dimensional 2D Two Dimensional 3D Three Dimensional nD Multi-Dimensional
4
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
6. A Geographic API in Java The GeoAPI library formalizes the handling of the types defined in the specification documents for working with geographic information adopted by the International Organization for Standardization (ISO) and the Open Geospatial Consortium (OGC). Whereas the specifications define data types, methods and relationships using the general UML notation, the GeoAPI library implements those standards as Java language interfaces or simple classes. The GeoAPI types jointly form an application programming interface (API) which provides two groups of developers with a common point of exchange. Developers wishing to implement code which fulfills the requirements of the ISO and OGC specifications can adopt GeoAPI as a roadmap for their development. Developers wishing to write code which uses the data types defined by the standards can simply call the methods of the interfaces; they also gain a measure of independence from the particular implementation they are using since another implementation of the API can be swapped without breaking any calls made to the GeoAPI interfaces. The structure of the GeoAPI library mirrors the packaging and separation of the different ISO and OGC specifications by grouping different types and functionality in separate Java language packages.
Figure 1: ISO specifications and GeoAPI packages mapping
The library rests on the org.opengis.annotation package which provides the annotation system used to document the origin and obligation level of all methods and types in the library. These annotations are available through introspection at runtime for any code which wishes to exploit this information. The base of the library is formed by a formal mapping of the core types used by the ISO and OGC standards to Java equivalents along with extra types Copyright © 2009-2011 Open Geospatial Consortium.
5
OGC 09-083r3
not defined in Java which are provided in the org.opengis.util package. The packages in the org.opengis.metadata namespace cover the data types defined in the ISO 19115 Metadata specification which are data structures holding textual references to elements describing other structures. The packages in the org.opengis.parameter and org.opengis.referencing namespaces implement the types from the ISO 19111 Spatial Referencing by Coordinates specification complemented by the mathematical operator types from the OGC 01-009 Implementation specification Coordinate Transformation Services. The packages in the org.opengis.geometry namespace cover the data types defined in the ISO 19107 Spatial Schema specification, although in version 3.0 of the library only defines the elements from that specification needed by the geo-referencing types defined in the OGC 01-009 specification since these packages are inter-dependent.
7. Annotation package The GeoAPI annotation package uses the org.opengis.annotation namespace and implements Java language annotations and supporting classes which enable GeoAPI to document the origin, original name, and necessity of the various types and methods integrated from the various specification documents. All classes in GeoAPI, including interfaces and enumeration types, which are based on a published standard should have an annotation label "@UML" documenting the standard in which are defined the type or method, the original name of the element and the obligation level of the type if other than the default mandatory level of obligation.
7.1 Use of the annotation types As an example, the annotation label for the ProjectedCRS interface appears in the source code as: @UML(identifier = "SC_ProjectedCRS", specification = ISO_19111)
which specifies that the type was defined in ISO 19111 standard, in the SC "Coordinate Reference System" package as the type "GeographicCRS" while the method getCoordinateSystem() of that class has the annotation: @UML(identifier = "coordinateSystem", obligation = MANDATORY, specification = ISO_19111)
6
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
which indicates that the method was defined in the same ISO 19111 specification but had the name "coordinateSystem" in the standard rather than the "getCoordinateSystem" name used by GeoAPI and that a non-null value must be provided by every ProjectedCRS instance. These annotations are available at runtime by Java introspection. This is useful, for example, when code needs to marshall data using the name defined by the ISO standard rather than the GeoAPI name. At runtime, the annotation of a reference to a GeoAPI interface can be obtained as follows, taking as an example the method getTitle() in the Citation type: Class<?> type = Citation.class; Method method = type.getMethod("getTitle", (Class<?>[]) null); UML annot = method.getAnnotation(UML.class); String ident = annot.identifier(); Specification spec = annot.specification(); Obligation obl = annot.obligation();
Java provides a class instance like the Citation.class instance used here for every type, either interface or class, defined in the runtime. The getMethod(…) call uses introspection to obtain a reference to the method from which the annotation can then be obtained. The annotation system therefore provides access, at runtime, to the original definition of the element.
8. Utility package The GeoAPI utility package uses the org.opengis.util namespace and implements the types which are defined in the specification from the International Organization for Standardization ISO 19103:2005 Geographic Information – Conceptual schema language but are not already present in the Java language itself or in the standard Java library. The utility package of GeoAPI completes the GeoAPI type mapping from the UML types used by the 19100 series of ISO standards into Java types by providing the elements missing from the Java language or standard library. The ISO 19103 specification defines types and utilities which are used as building blocks by the other standards in the 19100 series. GeoAPI maps these types either to existing types from the Java language and library or, when needed, to types defined in the utility package. For various practical reasons the mapping is not a oneto-one relationship. ISO 19103:2005 defines Primitive types (§8.1.1, of that standard), Collection or Dictionary types (§8.1.2), Enumerated types (§8.1.3), Representational types (§8.1.4), Name types (§8.1.5), and Derived types (§8.1.6). The mapping actually used is explained below. The utility package also includes the extra type InternationalString to handle textual sequences which might need to be represented in multiple languages and a basic factory.
Copyright © 2009-2011 Open Geospatial Consortium.
7
OGC 09-083r3
The Java types mapped by GeoAPI or provided in the utility package can be used like regular Java language elements. Most of the types can be instantiated directly through public constructors. Enumeration types provide public access to each of their constants. CodeList types provide the static valueOf(…) method through which instances can be obtained. The NameFactory interface provides public methods for the instantiation of the various GenericName types. GeoAPI does not specify any extra constraints on the behavior or use of these types.
8.1 Package Mapping GeoAPI maps the types of ISO 19103 into equivalents from the Java language and library or into types defined in the utility package. However, not all of the types in ISO 19103 have had a mapping defined because the need for these types has not yet appeared since they have not yet appeared in any other specification for which GeoAPI defines interfaces. Such types are listed as 'unimplemented' in the tables below. 8.1.1 Primitive Types The Primitive types of the ISO/OGC specifications map to single object structures in GeoAPI. Where the mapping can be made directly to a Java primitive type, such as int and double, the Java primitive is preferred; however, when the value must be able to be set to null, the object wrapper of that primitive is used. The following table shows the mapping used by GeoAPI to represent the types in the ISO 19100 series. Table 1: Primitive Types Mapping Type Group Numeric
ISO 19103 Type Integer
GeoAPI Type int long
/ /
Real
double
/
Decimal
java.math.BigDecimal
Number
java.lang.Number
unimplemented
UnlimitedInteger
CharacterString
java.lang.String org.opengis.util.InternationalString
Sequence<Character>
java.lang.CharSequence
Character
char
CharacterSetCode
org.opengis.metadata.identification. CharacterSet
LanguageCharacterString
Date and Time
8
java.lang.Double
unimplemented
Vector
Text
java.lang.Integer java.lang.Long
unimplemented
Date
java.util.Date
Time
java.util.Date
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3 DateTime
Truth
DatePrecision
unimplemented
Probability
unimplemented
Boolean
Multiplicities Enumerations
java.util.Date
boolean
/
java.lang.Boolean
Logical
unimplemented
Truth
unimplemented
DiscreteTruth
unimplemented
ContinuousTruth
unimplemented
Multiplicity
unimplemented
MultiplicityRange
unimplemented
Sign
unimplemented
Digit
unimplemented
Bit
unimplemented
Several of the objects in ISO 19103 have not been implemented since they have not yet been needed during the development of the rest of the interfaces. GeoAPI will consider implementing these types when they become necessary for the implementation of other elements in the ISO and OGC standards. The interface InternationalString is an extension used by GeoAPI to handle Java String objects which may potentially need to be translated for users of different locales. Conceptually this acts as a String but may, depending on the implementation, provide access to locale specific representations of that String. This is useful, for example, when an implementation is operating on a server that serves multiple languages simultaneously, to allow sending String representations in the locale of the client rather than the locale of the server running the GeoAPI implementation. Note: InternationalString is inspired by JSR-150 (Internationalization Service for J2EE) with support for different timezones omitted.
8.1.2 Collection and dictionary types GeoAPI implements ISO 19103 collection types using the standard Java Collections Framework. The one major difference is that GeoAPI collections do not implement the TransfiniteSet interface. Table 2: Collection and Dictionary Types Mapping ISO 19103 Type
GeoAPI Type unimplemented
Transfinite Set Collection
java.util.Collection
Set
java.util.Set
Bag
java.util.Collection
Copyright © 2009-2011 Open Geospatial Consortium.
9
OGC 09-083r3 Sequence
java.util.List
unimplemented
CircularSequence Dictionary
java.util.Map
KeyValuePair
java.util.Map.Entry
These collection types are used within GeoAPI qualified with a parametric type, which does not quite follow strictly the template notion which these types have in the ISO standards but is the closest one can conveniently do in the Java language. 8.1.3 Enumerated types GeoAPI distinguishes between two enumerated types depending on whether the complete set of literal types is known when the code is originally created or if the list may be extended at run time or when the code is extended. The Java language provides the Enum language construct for the former case and GeoAPI defines the CodeList interface for the latter case. Table 3: Enumerated Types Mapping ISO 19103 Type
GeoAPI Type
Enumeration
java.lang.Enum
CodeList
org.opengis.util.CodeList
8.1.4 Representation types GeoAPI currently defines only a strict minimum of the representation types in order to cover those necessary for the coverage package implementing the types in ISO 19123. Table 4: Representation Types Mapping ISO 19103 Type Schema
10
GeoAPI Type Unimplemented
Any
java.lang.Object
Type
org.opengis.util.Type
RecordSchema
org.opengis.util.RecordSchema
RecordType
org.opengis.util.RecordType
Record
org.opengis.util.Record
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
8.1.5 Name types The name types in ISO 19103 have little documentation. The current explanation for how we interpret this Name system is in the Javadoc for GenericName: http://www.geoapi.org/snapshot/javadoc/org/opengis/util/GenericName.html which explains our current interpretation of scopes and namespaces. Table 5: Name Types Mapping ISO 19103 Type
GeoAPI Type
(constructors)
org.opengis.util.NameFactory
NameSpace
org.opengis.util.NameSpace
GenericName
org.opengis.util.GenericName
ScopedName
org.opengis.util.ScopedName
LocalName
org.opengis.util.LocalName
TypeName
org.opengis.util.TypeName
MemberName
org.opengis.util.MemberName
The NameFactory is an extension of the GeoAPI project designed to allow the construction of instances of these Name types. 8.1.6 Derived types The derived types from ISO 19103 are almost all related to units and measurements. GeoAPI relies for these types on the interfaces defined by the external project JSR-275. The JScience project (http://jscience.org/) provides an implementation of these APIs. The UOMo interfaces rely extensively on parametrized types to qualify the type of Unit or Measure being used. Table 6: Derived Types Mapping ISO 19103 Type
GeoAPI Type
Measure
javax.measure.quantity.Quantity
UnitOfMeasure
javax.measure.unit.Unit<? extends Quantity>
Area
javax.measure.quantity.Area
UomArea
javax.measure.unit.Unit<Area>
Length
javax.measure.quantity.Length
Copyright © 2009-2011 Open Geospatial Consortium.
11
OGC 09-083r3 Distance
javax.measure.quantity.Length
UomLength
javax.measure.Unit<Length>
Angle
javax.measure.quantity.Angle
UomAngle
javax.measure.unit.Unit<Angle>
Scale
javax.measure.quantity.Dimensionless
UomScale
javax.measure.unit.Unit<Dimensionless>
Time
javax.measure.quantity.Time
UomTime
javax.measure.unit.Unit<Time>
Volume
javax.measure.quantity.Volume
UomVolume
javax.measure.unit.Unit<Volume>
Velocity
javax.measure.quantity.Velocity
UomVelocity
javax.measure.unit.Unit<Velocity>
AngularVelocity
javax.measure.quantity.AngularVelocity
UomAngularVelocity
javax.measure.unit.Unit<AngluarVelocity>
NULL
null
EMPTY
java.util.Collections.EMPTY_SET
GeoAPI uses the Java language keyword null to represent the ISO NULL value and the empty set from the Java Collections Framework for the ISO EMPTY. Note that programmers, for type safety when using Java Generics, should call the method java.util.Collections.emptySet() rather than refer directly to the constant, since the former will have the parametric type at compile time.
8.2 Use of the utility types Use of the types in the GeoAPI utility package follows directly standard practice in Java. The org.opengis.util.InternationalString interface provides a container for multiple versions of the same text, each for a specific Locale – the identifier used in Java for a specific language, possibly in a named territory. NameFactory factory = ...{Implementation dependent} Map<Locale,String> names = new HashMap<Locale,String>(); names.put(Locale.ENGLISH, "My documents"); names.put(Locale.FRENCH, "Mes documents"); InternationalString localized = factory.createInternationalString(names); System.out.println(localized);
12
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3 System.out.println(localized.toString(Locale.FRENCH));
The method to obtain factories is not specified by this standard and therefore depends on the design of the library implementation. Also, the locale used by default depends on the choice of the implementation so the result of the call toString() without parameters will depend on the implementation. The use of org.opengis.util.CodeList constructs includes accessing statically defined elements, defining new elements and retrieving any element defined for the code list. Considering, for example, org.opengis.metadata.distribution.MediumName used to specify the kinds of physical media on which a data set could be distributed, the following code could be used MediumName cd = MediumName.CD_ROM; MediumName usbkey = MediumName.valueOf("USB_KEY");
where the second locution will create a new value if it does not exist. Special care should be taken to keep such calls consistent throughout the code since the CodeList will create a new element if there are any differences between the String parameters: for example, the call MediumName med = MediumName.valueOf("CDROM");
would return a new value rather than the static CD_ROM. The use of javax.measure.unit.Unit and associated types is explained at length in the specification document Units and Measures. Here, only a trivial example is presented: Unit<Length> sourceUnit = NonSI.MILE; Unit<Length> targetUnit = SI.KILO(SI.METRE); UnitConverter converter = source.getConverterTo(target); double source = 123.2; double target = converter.convert(source);
where the initial calls define units of length and then a converter is used to obtain the equivalent length in a new unit.
8.3 Departure from ISO 19103 GeoAPI differs from ISO 19103 in not providing all of the types defined in the standard. The elements that have not been defined have not yet been encountered in subsequent standards implemented by GeoAPI. The InternationalString type provided by the utility package extends the basic CharSequence type provided by Java for internationalization by enabling the object to hold a separate String for every locale it wishes to handle.
Copyright © 2009-2011 Open Geospatial Consortium.
13
OGC 09-083r3
The NameFactory type provided by the utility package complements the Name types defined by ISO 19103 by providing a formalized approach to instantiating the objects. The Collections provided by GeoAPI are the standard Java collections and therefore do not extend TransfiniteSet as required by the ISO 19103 specification. However, the concept of TransfiniteSet applies most naturally to geometric constructs rather than to sets more generally.
8.4 Future improvements There are several improvements related to the GeoAPI utility package that are to be expected in future revisions of this standard. The GenericName system may need another revision since it has proved to be a very difficult system to interpret correctly. Similarly, the Record system remains unclear and may need revision. The mapping of elements to Date might eventually evolve since the Java standard library is gaining its third implementation of data types designed to hold calendar based temporal references; if the new constructs replace the old with much more convenient functionality it might be worth moving to the new constructs in some future revision.
14
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
9. Metadata packages The GeoAPI metadata packages use the org.opengis.metadata namespace and implement the types defined in the specification from the International Organization for Standardization ISO 19115:2003 Geographic Information – Metadata along with the modifications of Technical Corrigendum 1 from 2006. They are completed or merged with the types defined in ISO 19115-2:2007 Geographic Information – Extensions for imagery and gridded data. The metadata packages of GeoAPI provide container types for descriptive elements which may be related to data sets or components. All of these data structures are essentially containers for strings, and the interfaces consist almost exclusively of methods which provide access to the strings or a container. The API defines no methods which manipulate or modify the data structures. The metadata packages of GeoAPI have been built primarily in support of the geodetic types defined in the referencing packages and therefore consider primarily read access to the data structure contents. The GeoAPI metadata interfaces provide no methods to set the values of the types. Furthermore, because the way that wild-cards for Java Generics have been used in the interfaces, the collection instances are constrained to be read only. Implementors are free to provide a fully mutable implementation of GeoAPI interfaces, but users may need to cast to the implementation classes in order to modify a metadata. The GeoAPI rules of method return values have been changed for the metadata packages. Elsewhere in GeoAPI, methods which have a mandatory obligation in the specification must return an instance of the return type and cannot return the Java null reference. However, in the metadata package this rule is relaxed because data sets are encountered so frequently which have not correctly followed the requirements of the specification. In the GeoAPI metadata packages, all methods are considered to have an optional obligation and must follow the rules for that obligation level. This means that metadata methods shall return the object if present or otherwise either return null or return the empty collection, if the method return type is a Java Collection. This modification has been adopted to allow implementations sufficient latitude to handle metadata records which do not correctly conform to the specification. Nonetheless, sophisticated implementations can determine if a metadata record conforms with the specification by inspecting the annotation at runtime.
9.1 Package mapping The mapping of ISO 19115 packages to GeoAPI packages follows an almost perfectly parallel naming scheme.
Copyright © 2009-2011 Open Geospatial Consortium.
15
OGC 09-083r3 Table 7: Metadata Package Mapping ISO 19115 Package
GeoAPI Package
Metadata entity set information
org.opengis.metadata
Identification information
org.opengis.metadata.identification
Constraint information
org.opengis.metadata.constraint
Data quality information
org.opengis.metadata.quality org.opengis.metadata.lineage
Maintenance information
org.opengis.metadata.maintenance
Spatial representation information
org.opengis.metadata.spatial
Reference system information
org.opengis.referencing.* org.opengis.parameter
(see below)
Content information
org.opengis.metadata.content
Portrayal catalogue reference
org.opengis.metadata
Distribution information
org.opengis.metadata.distribution
Metadata extension information
org.opengis.metadata
Application schema information
org.opengis.metadata
Extent information
org.opengis.metadata.extent
Citation and responsible party information
org.opengis.metadata.citation
Several minor packages have been aggregated into the top level package. The Data quality information package has been split into two packages to separate the DQ_* types from the LI_* types. As explained next, the Reference system information has been replaced by the types from the referencing package.
9.2 Use of the GeoAPI metadata packages The types in the GeoAPI metadata packages are primarily containers of Java String types, primitive types and other metadata types, and have been designed around providing read access to those elements. Metadata elements will be encountered in the data types from the referencing packages and the interfaces enable users to obtain the elements of the data type. As an example, we want to print a list of all the authors for a document starting with an org.opengis.metadata.citation.Citation element. Citation citation = ...; // We assume this instance is already available
16
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3 for (ResponsibleParty rp : citation.getCitedResponsibleParties()) { if (rp.getRole() == Role.AUTHOR) { String author = rp.getIndividualName(); System.out.println(author); } }
The remainder of the metadata packages work in similar ways, where client code must disaggregate an instance to obtain the elements needed.
9.3 Departures from standard The major departure in the GeoAPI metadata packages from the published ISO 191115 standard come from GeoAPI following the ISO 19111 standard and replacing the MD_CRS type from ISO 19115 with the types in ISO 19111. The types from ISO 19111 duplicate the classes present in the metadata specification but with richer, more complete semantics. GeoAPI does not implement the following classes but substitutes a suitable replacement from the referencing packages. Table 8: Mapping of types from the reference system information package ISO 19115 type
GeoAPI replacement
MD_ReferenceSystem
org.opengis.referencing.ReferenceSystem
MD_CRS
org.opengis.referencing.crs.CoordinateReferenceSystem
MD_EllipsoidParameters
org.opengis.referencing.datum.Ellipsoid
MD_ProjectionParameters
org.opengis.parameter.ParameterValueGroup
MD_ObliqueLineAzimuth
org.opengis.parameter.ParameterValue
MD_ObliqueLinePoint
org.opengis.parameter.ParameterValue
Note however, that the parameter package of GeoAPI and ISO 19111 is more generic than the explicit types defined in ISO 19115, handling referencing constructs in a map like structure rather than as individual, named data types. Another departure is in the way GeoAPI metadata package added the types and methods defined in the specification ISO 19115-2 Geographic Information – Metadata – Part 2: Extensions for imagery and gridded data. The latter was forced to create a number of types to hold elements which naturally could occur directly in the types defined by ISO 19115. We integrated such types directly into the existing types rather than adding complexity to the API which exists by historical accident.
Copyright © 2009-2011 Open Geospatial Consortium.
17
OGC 09-083r3
9.4 Future work Future revisions of these packages may add factory interfaces through which these types could be instantiated. However, the actual design for such a factory system has not yet been agreed upon by the contributors to GeoAPI.
18
Copyright © 2009-2011 Open Geospatial Consortium.
OGC 09-083r3
10. Geometry packages The GeoAPI geometry packages use the org.opengis.geometry namespace and implement the types defined in the specification from the International Organization for Standardization ISO 19107:2003 Geographic Information - Spatial schema. The geometry packages of GeoAPI provide spatial types combining coordinates with the reference system used for those coordinates. These types implement a vector based spatial representation of elements. The geometry packages also include a sophisticated containership hierarchy, objects which know of their boundary, and topological data structures. The geometry types defined in this standard include only the two simplest types in the specification along with their abstract parent interface. It is expected that the two concrete types will be instantiated through public constructors.
10.1 Defined types GeoAPI defines a minimal set of four types from the ISO 19107 Geographic Information - Spatial schema specification, DirectPosition, Position, Envelope, and MismatchedDimensionException, because these types are needed by the referencing package. Table 9: Mapping of types from the Coordinate geometry package ISO 19107 type
GeoAPI type
GM_Position
org.opengis.geometry.coordinate.Position
DirectPosition
org.opengis.geometry.DirectPostion
GM_Envelope
org.opengis.geometry.Envelope
The DirectPosition type represents a single location in the anchored coordinate space defined by a CoordinateReferenceSystem. Since DirectPosition extends the Position type that interface was needed as well. The Envelope type represents the lower and upper extreme values along each axis. The type is frequently conflated with a bounding rectilinear box but the two elements differ conceptually in subtle ways. For example, the bounding box of Siberia crosses the antimeridian and runs from around 60 degrees east of Greenwich to 170 degrees west whereas the Envelope for Siberia goes from -180 degrees longitude to 180 degrees longitude. A further possible confusion arises because the Envelope type in ISO 19107 provides methods to obtain the 'corners' of the Envelope as DirectPositions. However, users should note that 20
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
these DirectPositions might not have any meaning in physical space. For example the corners could be outside the CRS domain of validity even if the feature itself is fully inside that domain. The corner DirectPositions are acting, for convenience, as data containers for a tuple of ordinates but not as representations of an actual Position so the ordinates of the tuple must be considered independent. GeoAPI also defines a MismatchedDimensionException Java exception. This type can be used for method calls whose parameters might be nonsensical if they do not share the same, or have the correct, dimension.
10.2 Use of the geometry packages The usage of the data types in the geometry package of GeoAPI follow the standard rules of Java and do not warrant extended explanation here.
10.3 Departure from Standards GeoAPI has moved the DirectPosition and Envelope types from the coordinate subpackage where they are defined in the ISO 19107 specification up to the org.opengis.geometry package due to their importance and frequency of use. Conceptually, the ISO 19107 standard considers geometric objects to be collections of DirectPositions so that data structure is used throughout the API.
10.4 Future work Future versions of this specification are expected to present a much larger set of interfaces for the types from ISO 19107. For now, the interfaces defined by the GeoAPI project remain experimental with no functional reference implementation.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
21
OGC 09-083r3
11. Referencing and Parameter packages The GeoAPI referencing and parameter packages use the org.opengis.referencing and org.opengis.parameter namespaces respectively and implement the types defined in the standard from the International Organization for Standardization ISO 19111:2007 Geographic Information - Spatial referencing by coordinates. The referencing package also includes the types describing object factories and mathematical transformation operators between reference frames defined in the standard from the Open Geospatial Consortium OGC 01-009 OpenGIS Implementation Specification: Coordinate Transformation Services from 2003. The referencing and parameter packages of GeoAPI provide data constructs and operations for geospatial referencing and coordinate operations.
Figure 2: Components of a CRS
(after Fig.2, ISO 19111:2007) The referencing package types can be used to define geospatial referencing constructs based on the ISO 19111 specification which can be used to define various engineering and geodetic datums, define various coordinate systems, and combine those to define all the coordinate referencing systems (CRS) generally encountered in geospatial science.
Figure 3: Components of a Mercator projection
22
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Finally, the referencing packages include factory types also defined originally in the OGC 01009 specification. These object factories define a normalized approach to object instantiation and come in two forms, the ObjectFactories which instantiate objects by assembling types passed as arguments and the AuthorityFactories which instantiate objects based on the values of some third party database, notably those in the EPSG SQL database of referencing objects assembled by the Surveying & Positioning Committee of the International Association of Oil & Gas producers.
Figure 4: Referencing factories
The use of the types defined in the GeoAPI referencing and parameter packages follows the general usage pattern of the library. Since these packages provide factories, so code that needs to instantiate one of the objects defined in these packages should first obtain a reference to the factory in some implementation dependent manner and then use the factory methods to instantiate the desired object instances. These instances can then be used through the interface defined in the GeoAPI library. The only unusual pattern in these packages arises because the ParameterValue types provide methods to set the value of the type. In the general use pattern for these types, a ParameterValueGroup containing all the named parameters for a method of an operation is first obtained from the MathTransformFactory and then each ParameterValue type is obtained in turn and its value set. This use pattern ensures that all the needed parameters for an operation method can be obtained as a single block.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
23
OGC 09-083r3
11.1 Package Mapping The mapping of ISO 19111 packages to GeoAPI packages follows an almost perfectly parallel naming scheme while the OGC 01-009 packages map to GeoAPI less linearly because the factory system of the OGC standard provides factory types in each GeoAPI package. Table 10: Referencing and Parameter Package Mapping ISO 19111 (OGC 01-009) Package
GeoAPI Package
IO Identified Object
org.opengis.referencing
RS Reference System
org.opengis.referencing
SC Coordinate Reference System
org.opengis.referencing.crs
CS Coordinate System
org.opengis.referencing.cs
CD Datum
org.opengis.referencing.datum
CC Coordinate Operation
org.opengis.referencing.operation org.opengis.parameter
CS Coordinate Systems (OGC 01-009)
org.opengis.referencing org.opengis.referencing.crs org.opengis.referencing.datum
CT Coordinate Transformations (OGC 01-009)
org.opengis.referencing.operation
PT Positioning (OGC 01-009)
org.opengis.referencing.operation
Nonetheless, the mapping is fairly straightforward. It should be noted, as was discussed in the section on Metadata, that several types from the ISO 19115 specification also map into the GeoAPI referencing packages.
11.2 Use of the referencing and parameter types The following examples illustrate the use of the referencing and parameter packages of GeoAPI. 11.2.1 Creating a Projected Coordinate Reference System A Coordinate Reference System can be constructed on its own or can be derived from other systems. This example shows how to build a ProjectedCRS based on the Mercator projection. Here we use an Authority which has already defined the method for this projection and then set the parameters to desired values before creating the CRS.
24
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 // Obtaining factory instances is implementation dependent CRSFactory crsFactory = ...; CoordinateOperationFactory opFactory = ...; CoordinateOperationAuthorityFactory af = ...; // We assume these instances are already available (used at end) GeographicCRS baseGeograhpicCRS = ...; CartesianCS cartesianCS = ...; // Get the parameters initialized to their default values OperationMethod method = af.createOperationMethod("Mercator (1SP)"); ParameterValueGroup pg = method.getParameters().createValue(); // Set the parameter values pg.parameter("semi-major axis").setValue(6377397.155); pg.parameter("semi-minor axis").setValue(6377397.155 * (1 - 1/299.15281)); pg.parameter("Latitude of natural origin").setValue(0.0); pg.parameter("Longitude of natural origin").setValue(110.0); pg.parameter("Scale factor at natural origin").setValue(0.997); pg.parameter("False easting").setValue(3900000.0); pg.parameter("False northing").setValue(900000.0); // Create the defining conversion Map<String,Object> properties = new HashMap<String,Object>(); properties.put(Conversion.NAME_KEY, "Makassar / NEIEZ"); Conversion def = opFactory.createDefiningConversion(properties, method, pg); // Create the projected CRS properties.clear(); properties.put(Conversion.NAME_KEY, "Makassar / NEIEZ"); ProjectedCRS projectedCRS = crsFactory.createProjectedCRS( properties, baseGeographicCRS, def, cartesianCS);
This gives us a ProjectedCRS with the appropriate parameters for our needs. 11.2.2 Build a Coordinate Operation In this usage example we build an operation using a sophisticated factory. // Obtaining factory instances is implementation dependent CoordinateOperationFactory opFactory = ...; // We assume these instances are already available (taken from above) CoordinateReferenceSystem sourceCRS = baseGeographicCRS; CoordinateReferenceSystem targetCRS = projectedCRS; CoordinateOperation op = opFactory.createOperation(sourceCRS, targetCRS);
The factory has done all the work of establishing which parameters should be used and correctly instantiating the operation.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
25
OGC 09-083r3
11.2.3 Transform a coordinate between coordinate reference systems. In this example, we use the operation we just created to calculate the coordinates in a destination coordinate reference system equivalent to the coordinates in a source coordinate reference system. // We assume these instances are already available CoordinateOperation op = ...; double[] sourceOrdinates = ...; // Create the destination array double[] targetOrdinates = new double[sourceOrdinates.length]; MathTransform mt = op.getMathTransform(); mt.transform(sourceOrdinates, 0, targetOrdinates, 0, sourceOrdinates.length / mt.getSourceDimensions());
with the user needing to guarantee that the length of the ordinate arrays are the same integer multiple of the number of dimensions in their respective coordinate reference systems.
11.3 Departure from Standards The major departure of GeoAPI from the ISO 19111 standard comes from the inclusion, directly in the CoordinateOperation type, of a method providing access to the MathTransform construct from the older OGC specification. This departure fundamentally alters the function of these packages: under the ISO 19111 standard the classes only describe coordinate reference systems and the operations which convert between them, under GeoAPI the classes also provide an object which can actually calculate the coordinates in a destination CRS equivalent to given coordinates in a source CRS. For reasons of consistency with the OGC 01-009 approach, the method providing access to the MathTransform has been directly integrated into the CoordinateOperation interface so that users can obtain the mathematical object directly from the object that defines the operation. GeoAPI further departs in defining its own 1D and 2D MathTransforms, for speed, convenience and interoperability with the Java2D graphics library. The second major departure of GeoAPI from the ISO 19111 standard comes from the addition of the factory system defined in the OGC 01-009 standard. This departure adds two factory hierarchies, a default factory hierarchy in which new instances are obtained by providing the content as parameters to the method calls and an 'authority' factory hierarchy in which instances are obtained based on some code identifier of the object desired specific to the particular authority supported by the factory instance. The factories provide a common basis for object instantiation and, if used exclusively, simplify the work of switching between implementations. The interfaces describe two type hierarchies for factory types: the hierarchy rooted in the ObjectFactory type all instantiate objects by given the necessary content elements whereas the factories rooted in AuthorityFactory instantiate objects based on some identification code and some data source mapping the code to object contents. GeoAPI focuses especially on the few authority codes provided by the OGC in the CRS and AUTO 26
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
namespaces and the authority codes provided by the EPSG database of the Surveying & Positioning Committee of the International Association of Oil & Gas producers (OGP). One minor departure from the ISO 19111 specification comes from GeoAPI defining an Ellipsoidal VerticalDatumType. The ISO specification does not allow distances above an ellipsoid independent of the longitude and latitude coordinates in order to prevent users from misusing the vertical ordinate during conversion. However, this separation is not inherently incorrect, but merely dangerous, and is necessary to handle older constructs such as the coordinate reference systems defined in the Well-Known Text textual format. GeoAPI has therefore elected to integrate this vertical datum type.
11.4 Future work The referencing and parameter packages are not expected to change fundamentally in subsequent revisions of this standard. The only changes which might arise would come from unforeseen conflicts during the integration of the temporal types from the ISO 19108 Geographic Information - Temporal Schema standard which defines its own TemporalCRS and TemporalCS which are expected to be dropped in favor of the types already defined in the referencing packages.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
27
OGC 09-083r3
Annex A (normative)
Conformance Libraries implementing GeoAPI are enjoined to follow certain requirements to claim conformance with this standard. The standard does permit implementations with different levels of coverage of the library by providing, below, a number of conformance classes for implementation libraries.
A.1 Fundamental requirements All implementing libraries must follow the requirements made in this clause. Implementing libraries must satisfy all paragraphs in this standard and in the library Javadoc that use the keywords "required", "shall", "shall not", or "must". Java libraries which provide code implementations of the GeoAPI interfaces and which wish to claim conformance with this standard shall follow the dictates both of the Javadoc comments in the API and of the language of the OGC specifications which define each Java method. Conformant libraries shall respect the following general pattern for method return values unless countermanded by the Javadoc code documentation for a particular method. Methods which generate new instances, such as Factory methods, are expected to return the desired value or to throw a checked exception such as a FactoryException. 'Setter' methods, methods which set the value of an object, are expected either to succeed or to throw an UnsupportedOperationException if the method is either not implemented or illegal in that implementation. 'Getter' methods, methods which obtain a value from an object, are documented through annotations to the Javadoc as mandatory or optional. Mandatory 'getter' methods are expected to return the requested value unless the value is missing in which case they shall throw the runtime exception, IllegalStateException. (An exception is made to this rule in the metadata packages because of the extensive existence of incomplete metadata. In those packages, all methods are treated as optional.) Optional 'getter' methods are expected to return the requested value unless the value is missing or the method is not implemented in which case they shall return null. Exceptions to these general rules occur occasionally but are documented in the Javadoc comments. All the instances of GeoAPI interfaces which are generated by a conformant library shall be valid according to the test validator, whenever a validator exists for the instance type. This does not require that all instances be tested but merely that if the instances were tested, they would validate. 28
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
A.2 Conformance levels This standard provides several levels of conformance for libraries that wish to claim conformance with this standard. All implementations must necessarily provide a fully functional implementation of the base types required by the library. This means that all implementing libraries must provide a fully working implementation of the JSR-275 standard, possibly by including the reference implementation directly. All implementing libraries must also provide functional implementations of the types defined in the org.opengis.util package.
A.2.1 Conformance Level M – Metadata The first level of conformance, M1, requires the implementing library to provide a functional implementation of methods annotated with @Profile(level=CORE) in the org.opengis.metadata packages. The second level of conformance, M2, requires the implementing library to provide a functional implementation of all the types defined in the org.opengis.metadata packages.
A.2.2 Conformance Level R-A – Referencing Base Libraries implementing the types defined in the org.opengis.referencing and org.opengis.parameter packages can reach several different levels of conformance depending on the coverage and complexity of their implementation. The simplest conformant status for the Referencing level, Status R-A1 provides code, including the ObjectFactory types, which can instantiate all the objects in the org.opengis.referencing.datum, cs, and crs packages but may be limited to the creation of coordinate referencing systems which are not compound. The next status for this level, Status R-A2 provides the types in level R-A1 but includes all the types necessary for compound coordinate reference systems. At this conformance level, the implementation must be able to construct any CoordinateReferenceSystem which is legal under the ISO 19111 standard, including all of the projected systems.
A.2.3 Conformance Level R-B – Referencing Authority Factories This conformance level requires implementations to be able to instantiate types from the Authority factories.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
29
OGC 09-083r3
The simplest conformance status for this level, Status R-B1 requires being able to instantiate the most common objects from the OGC authority. The factory must be able to handle the following identifiers: • • • • • • • • • •
CRS:1 (computer display) CRS:84 (geographic, WGS 84) CRS:83 (geographic, NAD83) CRS:27 (geographic, NAD27) CRS:88 (NAD vertical datum) AUTO2:42001 (Universal Transverse Mercator) AUTO2:42002 (Transverse Mercator) AUTO2:42003 (Orthographic) AUTO2:42004 (Equirectangular) AUTO2:42005 (Mollweide)
which are defined by the OGC for other implementation specifications. The factory should also be able to handle the URN form of these identifiers, such as urn:ogc:def:crs:epsg:4326, and the URL form, such as http://www.opengis.net/gml/srs/epsg.xml#4326. The next conformance status for this level, Status R-B2 requires being able to instantiate valid instances from any Well-Known Text (WKT) string. WKT is defined in OGC 01-009. The final conformance status for this level, Status R-B3 requires being able to instantiate a valid instances of the Datum, CoordinateSystem, or CoordinateReferenceSystem interfaces based on the codes and values in the EPSG database. The database is maintained by the Surveying and Positioning Committee of the International Association of Oil and Gas Producers and can be found at the URL http://www.epsg.org/.
A.2.4 Conformance Level R-C – Referencing Operations This conformance level requires implementations to be able to create the types in the org.opengis.referencing.operation and org.opengis.parameter packages.
The simplest conformance status for this level, Status R-C1 requires implementations to provide the CoordinateOperationFactory type and be able to instantiate any of the types in the two packages. The
second
conformance
status
for
this
level,
Status
R-C2
requires
a
CoordinateOperationAuthorityFactory able to instantiate the CoordinateOperation
instances based on the codes and values in the EPSG database.
30
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
A.2.5 Conformance Level R-M – Math Transforms This conformance level requires that the CoordinateOperations provided by the implementations be able to create the appropriate MathTransform instance for the OperationMethod of the CoordinateOperation. The MathTransform will then permit the calculation of coordinates in a target coordinate reference system from the values of a coordinate in a source coordinate reference system. The different status categories for this level are distinguished by the mathematical complexity of the OperationMethod which are supported. The first conformance status for this level, Status R-M1 requires that conformant implementations be able to instantiate the appropriate MathTransform instance for any CoordinateOperation which uses one of the OperationMethod types identified below: • • • • •
Affine general parametric transformation (EPSG:9624) Longitude rotation (EPSG:9601) Equidistant Cylindrical (EPSG:9842, 9823) Mercator (1SP) (EPSG:9804) Mercator (2SP) (EPSG:9805)
These MathTransform instances involve no shift in Datum and the most basic mathematical treatment. The next conformance status for this level, Status R-M2, requires that conformant implementations be able to instantiate the appropriate MathTransform instance for any CoordinateOperation which uses one of the OperationMethod types identified below: • • • • •
Transverse Mercator (EPSG:9807) Transverse mercator (South Orientated) (EPSG:9808) Lambert Conic Conformal (1SP) (EPSG:9801) Lambert Conic Conformal (2SP) (EPSG:9802) Lambert Conic Conformal (2SP Belgium) (EPSG:9803)
These operations involve no shift in Datum but require more advanced mathematics. The third conformance status for this level, Status R-M3, requires that conformant implementations be able to instantiate the appropriate MathTransform instance for any CoordinateOperation which uses one of the OperationMethod types identified below: • • • • • •
Molodensky transformation (EPSG:9604) Abridged Molodensky transformation (EPSG:9605) Geographic/geocentric conversions (EPSG:9602) Geocentric translation (EPSG:9603) Position Vector 7-parameters (EPSG:9606) Coordinate Frame rotation (EPSG:9607)
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
31
OGC 09-083r3
These operations perform a shift in Datum but the shifts require only a small number of parameters. The final conformance status for this level, Status R-M4 requires that conformant implementations be able to instantiate the appropriate MathTransform instance for any CoordinateOperation which uses one of the OperationMethod types identified below: • Ellipsoid to Geoid • North American Datum Conversion (EPSG:9613) These operations require a shift in Datum based on an extensive set of parameters using a numerical Grid or a set of spherical harmonic parameters.
A.3 Validation The GeoAPI source bundle, in the test packages of the conformance modules, contains a number of validator which can be used in JUnit test cases to test compliance of the objects created in an implementation. This is not as sophisticated as a full conformance test suite. Nonetheless, the GeoAPI validators can establish that certain instances are invalid and therefore can readily be integrated into the test suite of any implementation library.
A.3.1 Example of a validation test The following code demonstrates an example which uses the validators contained in the GeoAPI binary distribution to evaluate an instance object created by the implementation within a unit test. This test would require the JUnit library, version 4 or later, on the Java Classpath. import static org.opengis.test.Validators.*; public class ValidationTests { @Test public void testCRS() { // The implementation would build this CRS CoordinateReferenceSystem crs = ...; validate(crs); } }
If the validation fails, the JUnit library would throw an AssertionError. Also, the GeoAPI binary JAR archive must be on the Java CLASSPATH for the library to be linkable at runtime.
32
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Annex B (normative)
GeoAPI Source Java Archive In addition to this document, this specification includes the normative GeoAPI Java archive file: geoapi-3.00-sources.jar
That archive contains the authoritative Javadoc code documentation for the types and methods. The Java archive file contains the following elements: META-INF/MANIFEST.MF org.opengis.annotation/ org.opengis.geometry/ org.opengis.geometry.coordinate/ org.opengis.metadata/ org.opengis.metadata.citation/ org.opengis.metadata.constraint/ org.opengis.metadata.content/ org.opengis.metadata.distribution/ org.opengis.metadata.extent/ org.opengis.metadata.identification/ org.opengis.metadata.lineage/ org.opengis.metadata.maintenance/ org.opengis.metadata.quality/ org.opengis.metadata.spatial/ org.opengis.parameter/ org.opengis.referencing/ org.opengis.referencing.crs/ org.opengis.referencing.cs/ org.opengis.referencing.datum/ org.opengis.referencing.operation/ org.opengis.util/
with each directory holding Java source files (.java extension) and some directories having documentation directories holding text or image files.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
33
OGC 09-083r3
Annex C (informative)
GeoAPI Types and Methods This annex lists the GeoAPI identifiers (first column) together with the OGC/ISO identifiers and their originating specifications. This list includes every types and members present in the Javadoc, but without their method signature. Implementors should refer to the Javadoc for the detailed API description.
Package org.opengis.geometry Interface DirectPosition
DirectPosition
ISO 19107
getCoordinateReferenceSystem getDimension getCoordinate getOrdinate setOrdinate equals hashCode
coordinateReferenceSystem dimension coordinate
ISO 19107 ISO 19107 ISO 19107
Interface Envelope
GM_Envelope
ISO 19107
lowerCorner upperCorner
ISO 19107 ISO 19107
getCoordinateReferenceSystem getDimension getLowerCorner getUpperCorner getMinimum getMaximum getMedian getSpan
Java Java
Class MismatchedDimensionException
Package org.opengis.geometry.coordinate Interface Position
GM_Position
ISO 19107
getDirectPosition
direct
ISO 19107
34
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Package org.opengis.metadata Interface ApplicationSchemaInformation MD_ApplicationSchemaInformation ISO 19115 getName getSchemaLanguage getConstraintLanguage getSchemaAscii getGraphicsFile getSoftwareDevelopmentFile getSoftwareDevelopmentFileFormat
name schemaLanguage constraintLanguage schemaAscii graphicsFile softwareDevelopmentFile softwareDevelopmentFileFormat
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list Datatype
MD_DatatypeCode
ISO 19115
CLASS CODE_LIST ENUMERATION CODE_LIST_ELEMENT ABSTRACT_CLASS AGGREGATE_CLASS SPECIFIED_CLASS DATATYPE_CLASS INTERFACE_CLASS UNION_CLASS META_CLASS TYPE_CLASS CHARACTER_STRING INTEGER ASSOCIATION
class codelist enumeration codelistElement abstractClass aggregateClass specifiedClass datatypeClass interfaceClass unionClass metaClass typeClass characterString integer association
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface ExtendedElementInformation
MD_ExtendedElementInformation
ISO 19115
getName getShortName getDomainCode getDefinition getObligation getCondition getDataType getMaximumOccurrence getDomainValue getParentEntity getRule getRationales getSources
name shortName domainCode definition obligation condition dataType maximumOccurrence domainValue parentEntity rule rationale source
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface FeatureTypeList
MD_FeatureTypeList
ISO 19115
getSpatialObject getSpatialSchemaName
spatialObject spatialSchemaName
ISO 19115 ISO 19115
Interface Identifier
MD_Identifier
ISO 19115
getCode getAuthority
code authority
ISO 19115 ISO 19115
Interface Metadata
MD_Metadata
ISO 19115
getFileIdentifier getLanguage
fileIdentifier language
ISO 19115 ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
35
OGC 09-083r3 getCharacterSet getParentIdentifier getHierarchyLevels getHierarchyLevelNames getContacts getDateStamp getMetadataStandardName getMetadataStandardVersion getDataSetUri getLocales getSpatialRepresentationInfo getReferenceSystemInfo getMetadataExtensionInfo getIdentificationInfo getContentInfo getDistributionInfo getDataQualityInfo getPortrayalCatalogueInfo getMetadataConstraints getApplicationSchemaInfo getMetadataMaintenance getAcquisitionInformation
characterSet parentIdentifier hierarchyLevel hierarchyLevelName contact dateStamp metadataStandardName metadataStandardVersion dataSetURI locale spatialRepresentationInfo referenceSystemInfo metadataExtensionInfo identificationInfo contentInfo distributionInfo dataQualityInfo portrayalCatalogueInfo metadataConstraints applicationSchemaInfo metadataMaintenance acquisitionInformation
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115-2
Interface MetadataExtensionInformation MD_MetadataExtensionInformation
ISO 19115
getExtensionOnLineResource getExtendedElementInformation
extensionOnLineResource extendedElementInformation
ISO 19115 ISO 19115
Code list Obligation
MD_ObligationCode
ISO 19115
MANDATORY OPTIONAL CONDITIONAL
mandatory optional conditional
ISO 19115 ISO 19115 ISO 19115
Interface PortrayalCatalogueReference
MD_PortrayalCatalogueReference
ISO 19115
getPortrayalCatalogueCitations
portrayalCatalogueCitation
ISO 19115
Package org.opengis.metadata.acquisition Interface AcquisitionInformation
MI_AcquisitionInformation
ISO 19115-2
getAcquisitionPlans getAcquisitionRequirements getEnvironmentalConditions getInstruments getObjectives getOperations getPlatforms
acquisitionPlan acquisitionRequirement environmentalConditions instrument objective operation platform
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list Context
MI_ContextCode
ISO 19115-2
ACQUISITION PASS WAY_POINT
acquisition pass wayPoint
ISO 19115-2 ISO 19115-2 ISO 19115-2
36
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Interface EnvironmentalRecord
MI_EnvironmentalRecord
ISO 19115-2
getAverageAirTemperature getMaxRelativeHumidity getMaxAltitude getMeteorologicalConditions
averageAirTemperature maxRelativeHumidity maxAltitude meteorologicalConditions
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface Event
MI_Event
ISO 19115-2
getIdentifier getTrigger getContext getSequence getTime getExpectedObjectives getRelatedPass getRelatedSensors
identifier trigger context sequence time expectedObjective relatedPass relatedSensor
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list GeometryType
MI_GeometryTypeCode
ISO 19115-2
POINT LINEAR AREAL STRIP
point linear areal strip
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface Instrument
MI_Instrument
ISO 19115-2
getCitations getIdentifier getType getDescription getMountedOn
citation identifier type description mountedOn
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface Objective
MI_Objective
ISO 19115-2
getIdentifiers getPriority getTypes getFunctions getExtents getObjectiveOccurences getPass getSensingInstruments
identifier priority type function extent objectiveOccurence pass sensingInstrument
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list ObjectiveType
MI_ObjectiveTypeCode
ISO 19115-2
INSTANTANEOUS_COLLECTION PERSISTENT_VIEW SURVEY
instantaneousCollection persistentView survey
ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface Operation
MI_Operation
ISO 19115-2
getDescription getCitation getIdentifier getStatus getType getChildOperations getObjectives getParentOperation getPlan getPlatforms
description citation identifier status type childOperation objective parentOperation plan platform
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
37
OGC 09-083r3 getSignificantEvents
significantEvent
ISO 19115-2
Code list OperationType
MI_OperationTypeCode
ISO 19115-2
REAL SIMULATED SYNTHESIZED
real simulated synthesized
ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface Plan
MI_Plan
ISO 19115-2
getType getStatus getCitation getOperations getSatisfiedRequirements
type status citation operation satisfiedRequirement
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface Platform
MI_Platform
ISO 19115-2
getCitation getIdentifier getDescription getSponsors getInstruments
citation identifier description sponsor instrument
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface PlatformPass
MI_PlatformPass
ISO 19115-2
getIdentifier getExtent getRelatedEvents
identifier extent relatedEvent
ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list Priority
MI_PriorityCode
ISO 19115-2
CRITICAL HIGH_IMPORTANCE MEDIUM_IMPORTANCE LOW_IMPORTANCE
critical highImportance mediumImportance lowImportance
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface RequestedDate
MI_RequestedDate
ISO 19115-2
getRequestedDateOfCollection getLatestAcceptableDate
requestedDateOfCollection latestAcceptableDate
ISO 19115-2 ISO 19115-2
Interface Requirement
MI_Requirement
ISO 19115-2
getCitation getIdentifier getRequestors getRecipients getPriority getRequestedDate getExpiryDate getSatisfiedPlans
citation identifier requestor recipient priority requestedDate expiryDate satisfiedPlan
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list Sequence
MI_SequenceCode
ISO 19115-2
START END INSTANTANEOUS
start end instantaneous
ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list Trigger
MI_TriggerCode
ISO 19115-2
AUTOMATIC
automatic
ISO 19115-2
38
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 MANUAL PRE_PROGRAMMED
manual preProgrammed
ISO 19115-2 ISO 19115-2
Package org.opengis.metadata.citation Interface Address
CI_Address
ISO 19115
getDeliveryPoints getCity getAdministrativeArea getPostalCode getCountry getElectronicMailAddresses
deliveryPoint city administrativeArea postalCode country electronicMailAddress
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Citation
CI_Citation
ISO 19115
getTitle getAlternateTitles getDates getEdition getEditionDate getIdentifiers getCitedResponsibleParties getPresentationForms getSeries getOtherCitationDetails getCollectiveTitle getISBN getISSN
title alternateTitle date edition editionDate identifier citedResponsibleParty presentationForm series otherCitationDetails collectiveTitle ISBN ISSN
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface CitationDate
CI_Date
ISO 19115
getDate getDateType
date dateType
ISO 19115 ISO 19115
Interface Contact
CI_Contact
ISO 19115
getPhone getAddress getOnlineResource getHoursOfService getContactInstructions
phone address onlineResource hoursOfService contactInstructions
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list DateType
CI_DateTypeCode
ISO 19115
CREATION PUBLICATION REVISION
creation publication revision
ISO 19115 ISO 19115 ISO 19115
Code list OnLineFunction
CI_OnLineFunctionCode
ISO 19115
DOWNLOAD INFORMATION OFFLINE_ACCESS ORDER SEARCH
download information offlineAccess order search
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
39
OGC 09-083r3 Interface OnlineResource
CI_OnlineResource
ISO 19115
getLinkage getProtocol getApplicationProfile getName getDescription getFunction
linkage protocol applicationProfile name description function
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list PresentationForm
CI_PresentationFormCode
ISO 19115
DOCUMENT_DIGITAL DOCUMENT_HARDCOPY IMAGE_DIGITAL IMAGE_HARDCOPY MAP_DIGITAL MAP_HARDCOPY MODEL_DIGITAL MODEL_HARDCOPY PROFILE_DIGITAL PROFILE_HARDCOPY TABLE_DIGITAL TABLE_HARDCOPY VIDEO_DIGITAL VIDEO_HARDCOPY
documentDigital documentHardcopy imageDigital imageHardcopy mapDigital mapHardcopy modelDigital modelHardcopy profileDigital profileHardcopy tableDigital tableHardcopy videoDigital videoHardcopy
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface ResponsibleParty
CI_ResponsibleParty
ISO 19115
getIndividualName getOrganisationName getPositionName getContactInfo getRole
individualName organisationName positionName contactInfo role
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list Role
CI_RoleCode
ISO 19115
RESOURCE_PROVIDER CUSTODIAN OWNER USER DISTRIBUTOR ORIGINATOR POINT_OF_CONTACT PRINCIPAL_INVESTIGATOR PROCESSOR PUBLISHER AUTHOR
resourceProvider custodian owner user distributor originator pointOfContact principalInvestigator processor publisher author
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Series
CI_Series
ISO 19115
getName getIssueIdentification getPage
name issueIdentification page
ISO 19115 ISO 19115 ISO 19115
Interface Telephone
CI_Telephone
ISO 19115
getVoices getFacsimiles
voice facsimile
ISO 19115 ISO 19115
40
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Package org.opengis.metadata.constraint Code list Classification
MD_ClassificationCode
ISO 19115
UNCLASSIFIED RESTRICTED CONFIDENTIAL SECRET TOP_SECRET
unclassified restricted confidential secret topSecret
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Constraints
MD_Constraints
ISO 19115
getUseLimitations
useLimitation
ISO 19115
Interface LegalConstraints
MD_LegalConstraints
ISO 19115
getAccessConstraints getUseConstraints getOtherConstraints
accessConstraints useConstraints otherConstraints
ISO 19115 ISO 19115 ISO 19115
Code list Restriction
MD_RestrictionCode
ISO 19115
COPYRIGHT PATENT PATENT_PENDING TRADEMARK LICENSE INTELLECTUAL_PROPERTY_RIGHTS RESTRICTED OTHER_RESTRICTIONS
copyright patent patentPending trademark license intellectualPropertyRights restricted otherRestrictions
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface SecurityConstraints
MD_SecurityConstraints
ISO 19115
getClassification getUserNote getClassificationSystem getHandlingDescription
classification userNote classificationSystem handlingDescription
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Package org.opengis.metadata.content Interface Band
MD_Band
ISO 19115
getMaxValue getMinValue getUnits getPeakResponse getBitsPerValue getToneGradation getScaleFactor getOffset getBandBoundaryDefinition getNominalSpatialResolution getTransferFunctionType getTransmittedPolarization getDetectedPolarization
maxValue minValue units peakResponse bitsPerValue toneGradation scaleFactor offset bandBoundaryDefinition nominalSpatialResolution transferFunctionType transmittedPolarization detectedPolarization
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
41
OGC 09-083r3 Code list BandDefinition
MI_BandDefinition
ISO 19115-2
THREE_DB HALF_MAXIMUM FIFTY_PERCENT ONE_OVER_E EQUIVALENT_WIDTH
3dB halfMaximum fiftyPercent oneOverE equivalentWidth
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface ContentInformation
MD_ContentInformation
ISO 19115
Code list CoverageContentType
MD_CoverageContentTypeCode
ISO 19115
IMAGE THEMATIC_CLASSIFICATION PHYSICAL_MEASUREMENT
image thematicClassification physicalMeasurement
ISO 19115 ISO 19115 ISO 19115
Interface CoverageDescription
MD_CoverageDescription
ISO 19115
getAttributeDescription getContentType getDimensions getRangeElementDescriptions
attributeDescription contentType dimension rangeElementDescription
ISO 19115 ISO 19115 ISO 19115 ISO 19115-2
Interface FeatureCatalogueDescription
MD_FeatureCatalogueDescription
ISO 19115
isCompliant getLanguages isIncludedWithDataset getFeatureTypes getFeatureCatalogueCitations
complianceCode language includedWithDataset featureTypes featureCatalogueCitation
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface ImageDescription
MD_ImageDescription
ISO 19115
getIlluminationElevationAngle getIlluminationAzimuthAngle getImagingCondition getImageQualityCode getCloudCoverPercentage getProcessingLevelCode getCompressionGenerationQuantity getTriangulationIndicator isRadiometricCalibrationDataAvailable isCameraCalibrationInformationAvailable isFilmDistortionInformationAvailable isLensDistortionInformationAvailable
illuminationElevationAngle illuminationAzimuthAngle imagingCondition imageQualityCode cloudCoverPercentage processingLevelCode compressionGenerationQuantity triangulationIndicator radiometricCalibrationDataAvailability cameraCalibrationInformationAvailability filmDistortionInformationAvailability lensDistortionInformationAvailability
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list ImagingCondition
MD_ImagingConditionCode
ISO 19115
BLURRED_IMAGE CLOUD DEGRADING_OBLIQUITY FOG HEAVY_SMOKE_OR_DUST NIGHT RAIN SEMI_DARKNESS SHADOW SNOW TERRAIN_MASKING
blurredImage cloud degradingObliquity fog heavySmokeOrDust night rain semiDarkness shadow snow terrainMasking
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
42
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Code list PolarizationOrientation
MI_PolarizationOrientationCode
ISO 19115-2
HORIZONTAL VERTICAL LEFT_CIRCULAR RIGHT_CIRCULAR THETA PHI
horizontal vertical leftCircular rightCircular theta phi
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface RangeDimension
MD_RangeDimension
ISO 19115
getSequenceIdentifier getDescriptor
sequenceIdentifier descriptor
ISO 19115 ISO 19115
Interface RangeElementDescription
MI_RangeElementDescription
ISO 19115-2
getName getDefinition getRangeElements
name definition rangeElement
ISO 19115-2 ISO 19115-2 ISO 19115-2
Code list TransferFunctionType
MI_TransferFunctionTypeCode
ISO 19115-2
LINEAR LOGARITHMIC EXPONENTIAL
linear logarithmic exponential
ISO 19115-2 ISO 19115-2 ISO 19115-2
Package org.opengis.metadata.distribution Interface DataFile
MX_DataFile
ISO 19139
getFeatureTypes getFileFormat
featureType fileFormat
ISO 19139 ISO 19139
Interface DigitalTransferOptions
MD_DigitalTransferOptions
ISO 19115
getUnitsOfDistribution getTransferSize getOnLines getOffLine
unitsOfDistribution transferSize onLine offLine
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Distribution
MD_Distribution
ISO 19115
getDistributionFormats getDistributors getTransferOptions
distributionFormat distributor transferOptions
ISO 19115 ISO 19115 ISO 19115
Interface Distributor
MD_Distributor
ISO 19115
getDistributorContact getDistributionOrderProcesses getDistributorFormats getDistributorTransferOptions
distributorContact distributionOrderProcess distributorFormat distributorTransferOptions
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Format
MD_Format
ISO 19115
getName getVersion getAmendmentNumber getSpecification getFileDecompressionTechnique
name version amendmentNumber specification fileDecompressionTechnique
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
43
OGC 09-083r3 getFormatDistributors
formatDistributor
ISO 19115
Interface Medium
MD_Medium
ISO 19115
getName getDensities getDensityUnits getVolumes getMediumFormats getMediumNote
name density densityUnits volumes mediumFormat mediumNote
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list MediumFormat
MD_MediumFormatCode
ISO 19115
CPIO TAR HIGH_SIERRA ISO_9660 ISO_9660_ROCK_RIDGE ISO_9660_APPLE_HFS
cpio tar highSierra iso9660 iso9660RockRidge iso9660AppleHFS
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list MediumName
MD_MediumNameCode
ISO 19115
CD_ROM DVD DVD_ROM FLOPPY_3_HALF_INCH FLOPPY_5_QUARTER_INCH TAPE_7_TRACK TAPE_9_TRACK CARTRIDGE_3480 CARTRIDGE_3490 CARTRIDGE_3580 CARTRIDGE_TAPE_4mm CARTRIDGE_TAPE_8mm CARTRIDGE_TAPE_1_QUARTER_INCH DIGITAL_LINEAR_TAPE ON_LINE SATELLITE TELEPHONE_LINK HARDCOPY
cdRom dvd dvdRom 3halfInchFloppy 5quarterInchFloppy 7trackTape 9trackTape 3480Cartridge 3490Cartridge 3580Cartridge 4mmCartridgeTape 8mmCartridgeTape 1quarterInchCartridgeTape digitalLinearTape onLine satellite telephoneLink hardcopy
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface StandardOrderProcess
MD_StandardOrderProcess
ISO 19115
getFees getPlannedAvailableDateTime getOrderingInstructions getTurnaround
fees plannedAvailableDateTime orderingInstructions turnaround
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Package org.opengis.metadata.extent Interface BoundingPolygon
EX_BoundingPolygon
ISO 19115
getPolygons
polygon
ISO 19115
Interface Extent
EX_Extent
ISO 19115
getDescription getGeographicElements
description geographicElement
ISO 19115 ISO 19115
44
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 getTemporalElements getVerticalElements
temporalElement verticalElement
ISO 19115 ISO 19115
Interface GeographicBoundingBox
EX_GeographicBoundingBox
ISO 19115
getWestBoundLongitude getEastBoundLongitude getSouthBoundLatitude getNorthBoundLatitude
westBoundLongitude eastBoundLongitude southBoundLatitude northBoundLatitude
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface GeographicDescription
EX_GeographicDescription
ISO 19115
getGeographicIdentifier
geographicIdentifier
ISO 19115
Interface GeographicExtent
EX_GeographicExtent
ISO 19115
getInclusion
extentTypeCode
ISO 19115
Interface SpatialTemporalExtent
EX_SpatialTemporalExtent
ISO 19115
getSpatialExtent
spatialExtent
ISO 19115
Interface TemporalExtent
EX_TemporalExtent
ISO 19115
getExtent
extent
ISO 19108
Interface VerticalExtent
EX_VerticalExtent
ISO 19115
getMinimumValue getMaximumValue getVerticalCRS
minimumValue maximumValue verticalCRS
ISO 19115 ISO 19115 ISO 19115
Package org.opengis.metadata.identification Interface AggregateInformation
MD_AggregateInformation
ISO 19115
getAggregateDataSetName getAggregateDataSetIdentifier getAssociationType getInitiativeType
aggregateDataSetName aggregateDataSetIdentifier associationType initiativeType
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list AssociationType
DS_AssociationTypeCode
ISO 19115
CROSS_REFERENCE LARGER_WORD_CITATION PART_OF_SEAMLESS_DATABASE SOURCE STEREO_MATE
crossReference largerWorkCitation partOfSeamlessDatabase source stereoMate
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface BrowseGraphic
MD_BrowseGraphic
ISO 19115
getFileName getFileDescription getFileType
fileName fileDescription fileType
ISO 19115 ISO 19115 ISO 19115
Code list CharacterSet
MD_CharacterSetCode
ISO 19115
UCS_2 UCS_4
ucs2 ucs4
ISO 19115 ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
45
OGC 09-083r3 UTF_7 UTF_8 UTF_16 ISO_8859_1 ISO_8859_2 ISO_8859_3 ISO_8859_4 ISO_8859_5 ISO_8859_6 ISO_8859_7 ISO_8859_8 ISO_8859_9 ISO_8859_10 ISO_8859_11 ISO_8859_12 ISO_8859_13 ISO_8859_14 ISO_8859_15 ISO_8859_16 JIS SHIFT_JIS EUC_JP US_ASCII EBCDIC EUC_KR BIG_5 GB2312
utf7 utf8 utf16 8859part1 8859part2 8859part3 8859part4 8859part5 8859part6 8859part7 8859part8 8859part9 8859part10 8859part11 8859part12 8859part13 8859part14 8859part15 8859part16 jis shiftJIS eucJP usAscii ebcdic eucKR big5 GB2312
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface DataIdentification
MD_DataIdentification
ISO 19115
getSpatialRepresentationTypes getSpatialResolutions getLanguages getCharacterSets getTopicCategories getEnvironmentDescription getExtents getSupplementalInformation
spatialRepresentationType spatialResolution language characterSet topicCategory environmentDescription extent supplementalInformation
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Identification
MD_Identification
ISO 19115
getCitation getAbstract getPurpose getCredits getStatus getPointOfContacts getResourceMaintenances getGraphicOverviews getResourceFormats getDescriptiveKeywords getResourceSpecificUsages getResourceConstraints getAggregationInfo
citation abstract purpose credit status pointOfContact resourceMaintenance graphicOverview resourceFormat descriptiveKeywords resourceSpecificUsage resourceConstraints aggregationInfo
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list InitiativeType
DS_InitiativeTypeCode
ISO 19115
CAMPAIGN COLLECTION EXERCISE EXPERIMENT
campaign collection exercise experiment
ISO 19115 ISO 19115 ISO 19115 ISO 19115
46
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 INVESTIGATION MISSION SENSOR OPERATION PLATFORM PROCESS PROGRAM PROJECT STUDY TASK TRIAL
investigation mission sensor operation platform process program project study task trial
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Keywords
MD_Keywords
ISO 19115
getKeywords getType getThesaurusName
keyword type thesaurusName
ISO 19115 ISO 19115 ISO 19115
Code list KeywordType
MD_KeywordTypeCode
ISO 19115
DISCIPLINE PLACE STRATUM TEMPORAL THEME
discipline place stratum temporal theme
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list Progress
MD_ProgressCode
ISO 19115
COMPLETED HISTORICAL_ARCHIVE OBSOLETE ON_GOING PLANNED REQUIRED UNDER_DEVELOPMENT
completed historicalArchive obsolete onGoing planned required underDevelopment
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface RepresentativeFraction
MD_RepresentativeFraction
ISO 19115
doubleValue getDenominator equals hashCode
denominator
Java ISO 19115 Java Java
Interface Resolution
MD_Resolution
ISO 19115
getEquivalentScale getDistance
equivalentScale distance
ISO 19115 ISO 19115
Interface ServiceIdentification
SV_ServiceIdentification
ISO 19115
Code list TopicCategory
MD_TopicCategoryCode
ISO 19115
FARMING farming BIOTA biota BOUNDARIES boundaries CLIMATOLOGY_METEOROLOGY_ATMOSPHERE climatologyMeteorologyAtmosphere ECONOMY economy ELEVATION elevation ENVIRONMENT environment GEOSCIENTIFIC_INFORMATION geoscientificInformation HEALTH health Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
47
OGC 09-083r3 IMAGERY_BASE_MAPS_EARTH_COVER INTELLIGENCE_MILITARY INLAND_WATERS LOCATION OCEANS PLANNING_CADASTRE SOCIETY STRUCTURE TRANSPORTATION UTILITIES_COMMUNICATION
imageryBaseMapsEarthCover intelligenceMilitary inlandWaters location oceans planningCadastre society structure transportation utilitiesCommunication
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface Usage
MD_Usage
ISO 19115
getSpecificUsage getUsageDate getUserDeterminedLimitations getUserContactInfo
specificUsage usageDateTime userDeterminedLimitations userContactInfo
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Package org.opengis.metadata.lineage Interface Algorithm
LE_Algorithm
ISO 19115-2
getCitation getDescription
citation description
ISO 19115-2 ISO 19115-2
Interface Lineage
LI_Lineage
ISO 19115
getStatement getProcessSteps getSources
statement processStep source
ISO 19115 ISO 19115 ISO 19115
Interface NominalResolution
LE_NominalResolution
ISO 19115-2
getScanningResolution getGroundResolution
scanningResolution groundResolution
ISO 19115-2 ISO 19115-2
Interface Processing
LE_Processing
ISO 19115-2
getIdentifier getSoftwareReferences getProcedureDescription getDocumentations getRunTimeParameters getAlgorithms
identifier softwareReference procedureDescription documentation runTimeParameters algorithm
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface ProcessStep
LI_ProcessStep
ISO 19115
getDescription getRationale getDate getProcessors getSources getOutputs getProcessingInformation getReports
description rationale dateTime processor source output processingInformation report
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface ProcessStepReport
LE_ProcessStepReport
ISO 19115-2
getName
name
ISO 19115-2
48
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 getDescription getFileType
description fileType
ISO 19115-2 ISO 19115-2
Interface Source
LI_Source
ISO 19115
getDescription getScaleDenominator getSourceReferenceSystem getSourceCitation getSourceExtents getSourceSteps getProcessedLevel getResolution
description scaleDenominator sourceReferenceSystem sourceCitation sourceExtent sourceStep processedLevel resolution
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115-2 ISO 19115-2
Package org.opengis.metadata.maintenance Code list MaintenanceFrequency
MD_MaintenanceFrequencyCode
ISO 19115
CONTINUAL DAILY WEEKLY FORTNIGHTLY MONTHLY QUARTERLY BIANNUALLY ANNUALLY AS_NEEDED IRREGULAR NOT_PLANNED UNKNOWN
continual daily weekly fortnightly monthly quarterly biannually annually asNeeded irregular notPlanned unknown
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface MaintenanceInformation
MD_MaintenanceInformation
ISO 19115
getMaintenanceAndUpdateFrequency getDateOfNextUpdate getUserDefinedMaintenanceFrequency getUpdateScopes getUpdateScopeDescriptions getMaintenanceNotes getContacts
maintenanceAndUpdateFrequency dateOfNextUpdate userDefinedMaintenanceFrequency updateScope updateScopeDescription maintenanceNote contact
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list ScopeCode
MD_ScopeCode
ISO 19115
ATTRIBUTE ATTRIBUTE_TYPE COLLECTION_HARDWARE COLLECTION_SESSION DATASET SERIES NON_GEOGRAPHIC_DATASET DIMENSION_GROUP FEATURE FEATURE_TYPE PROPERTY_TYPE FIELD_SESSION SOFTWARE SERVICE MODEL
attribute attributeType collectionHardware collectionSession dataset series nonGeographicDataset dimensionGroup feature featureType propertyType fieldSession software service model
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
49
OGC 09-083r3 TILE
tile
ISO 19115
Interface ScopeDescription
MD_ScopeDescription
ISO 19115
getAttributes getFeatures getFeatureInstances getAttributeInstances getDataset getOther
attributes features featureInstances attributeInstances dataset other
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Package org.opengis.metadata.quality Interface AbsoluteExternalPositionalAccuracy
DQ_AbsoluteExternalPositionalAccuracy
ISO 19115
Interface AccuracyOfATimeMeasurement DQ_AccuracyOfATimeMeasurement ISO 19115 Interface Completeness
DQ_Completeness
ISO 19115
Interface CompletenessCommission
DQ_CompletenessCommission
ISO 19115
Interface CompletenessOmission
DQ_CompletenessOmission
ISO 19115
Interface ConceptualConsistency
DQ_ConceptualConsistency
ISO 19115
Interface ConformanceResult
DQ_ConformanceResult
ISO 19115
getSpecification getExplanation pass
specification explanation pass
ISO 19115 ISO 19115 ISO 19115
Interface CoverageResult
QE_CoverageResult
ISO 19115-2
getSpatialRepresentationType getResultSpatialRepresentation getResultContentDescription getResultFormat getResultFile
spatialRepresentationType resultSpatialRepresentation resultContentDescription resultFormat resultFile
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19139
Interface DataQuality
DQ_DataQuality
ISO 19115
getScope getReports getLineage
scope report lineage
ISO 19115 ISO 19115 ISO 19115
Interface DomainConsistency
DQ_DomainConsistency
ISO 19115
Interface Element
DQ_Element
ISO 19115
getNamesOfMeasure getMeasureIdentification getMeasureDescription getEvaluationMethodType
nameOfMeasure measureIdentification measureDescription evaluationMethodType
ISO 19115 ISO 19115 ISO 19115 ISO 19115
50
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 getEvaluationMethodDescription getEvaluationProcedure getDates getResults
evaluationMethodDescription evaluationProcedure dateTime result
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list EvaluationMethodType
DQ_EvaluationMethodTypeCode
ISO 19115
DIRECT_INTERNAL DIRECT_EXTERNAL INDIRECT
directInternal directExternal indirect
ISO 19115 ISO 19115 ISO 19115
Interface FormatConsistency
DQ_FormatConsistency
ISO 19115
Interface GriddedDataPositionalAccuracy
DQ_GriddedDataPositionalAccuracy
ISO 19115
Interface LogicalConsistency
DQ_LogicalConsistency
ISO 19115
Interface NonQuantitativeAttributeAccuracy
DQ_NonQuantitativeAttributeAccuracy
ISO 19115
Interface PositionalAccuracy
DQ_PositionalAccuracy
ISO 19115
Interface QuantitativeAttributeAccuracy
DQ_QuantitativeAttributeAccuracy
ISO 19115
Interface QuantitativeResult
DQ_QuantitativeResult
ISO 19115
getValues getValueType getValueUnit getErrorStatistic
value valueType valueUnit errorStatistic
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface RelativeInternalPositionalAccuracy
DQ_RelativeInternalPositionalAccuracy
ISO 19115
Interface Result
DQ_Result
ISO 19115
Interface Scope
DQ_Scope
ISO 19115
getLevel getLevelDescription getExtent
level levelDescription extent
ISO 19115 ISO 19115 ISO 19115
Interface TemporalAccuracy
DQ_TemporalAccuracy
ISO 19115
Interface TemporalConsistency
DQ_TemporalConsistency
ISO 19115
Interface TemporalValidity
DQ_TemporalValidity
ISO 19115
Interface ThematicAccuracy
DQ_ThematicAccuracy
ISO 19115
Interface ThematicClassificationCorrectness
DQ_ThematicClassificationCorrectness
ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
51
OGC 09-083r3 Interface TopologicalConsistency
DQ_TopologicalConsistency
ISO 19115
Interface Usability
QE_Usability
ISO 19115-2
Package org.opengis.metadata.spatial Code list CellGeometry
MD_CellGeometryCode
ISO 19115
POINT AREA
point area
ISO 19115 ISO 19115
Interface Dimension
MD_Dimension
ISO 19115
getDimensionName getDimensionSize getResolution
dimensionName dimensionSize resolution
ISO 19115 ISO 19115 ISO 19115
Code list DimensionNameType
MD_DimensionNameTypeCode
ISO 19115
ROW COLUMN VERTICAL TRACK CROSS_TRACK LINE SAMPLE TIME
row column vertical track crossTrack line sample time
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface GCP
MI_GCP
ISO 19115-2
getGeographicCoordinates getAccuracyReports
geographicCoordinates accuracyReport
ISO 19115-2 ISO 19115-2
Interface GCPCollection
MI_GCPCollection
ISO 19115-2
getCollectionIdentification getCollectionName getCoordinateReferenceSystem getGCPs
collectionIdentification collectionName coordinateReferenceSystem gcp
ISO 19115-2 ISO 19115-2 ISO 19115-2 ISO 19115-2
Interface GeolocationInformation
MI_GeolocationInformation
ISO 19115-2
getQualityInfo
qualityInfo
ISO 19115-2
Interface GeometricObjects
MD_GeometricObjects
ISO 19115
getGeometricObjectType getGeometricObjectCount
geometricObjectType geometricObjectCount
ISO 19115 ISO 19115
Code list GeometricObjectType
MD_GeometricObjectTypeCode
ISO 19115
COMPLEX COMPOSITE CURVE POINT SOLID SURFACE
complex composite curve point solid surface
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
52
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Interface Georectified
MD_Georectified
ISO 19115
isCheckPointAvailable getCheckPointDescription getCornerPoints getCenterPoint getPointInPixel getTransformationDimensionDescription getTransformationDimensionMapping getCheckPoints
checkPointAvailability checkPointDescription cornerPoints centerPoint pointInPixel transformationDimensionDescription transformationDimensionMapping checkPoint
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115-2
Interface Georeferenceable
MD_Georeferenceable
ISO 19115
isControlPointAvailable isOrientationParameterAvailable getOrientationParameterDescription getGeoreferencedParameters getParameterCitations getGeolocationInformation
controlPointAvailability orientationParameterAvailability orientationParameterDescription georeferencedParameters parameterCitation geolocationInformation
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115-2
Interface GridSpatialRepresentation
MD_GridSpatialRepresentation
ISO 19115
getNumberOfDimensions getAxisDimensionProperties getCellGeometry isTransformationParameterAvailable
numberOfDimensions axisDimensionProperties cellGeometry transformationParameterAvailability
ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list PixelOrientation
MD_PixelOrientationCode
ISO 19115
CENTER LOWER_LEFT LOWER_RIGHT UPPER_RIGHT UPPER_LEFT
center lowerLeft lowerRight upperRight upperLeft
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface SpatialRepresentation
MD_SpatialRepresentation
ISO 19115
Code list SpatialRepresentationType
MD_SpatialRepresentationTypeCode ISO 19115
VECTOR GRID TEXT_TABLE TIN STEREO_MODEL VIDEO
vector grid textTable tin stereoModel video
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Code list TopologyLevel
MD_TopologyLevelCode
ISO 19115
GEOMETRY_ONLY TOPOLOGY_1D PLANAR_GRAPH FULL_PLANAR_GRAPH SURFACE_GRAPH FULL_SURFACE_GRAPH TOPOLOGY_3D FULL_TOPOLOGY_3D ABSTRACT
geometryOnly topology1D planarGraph fullPlanarGraph surfaceGraph fullSurfaceGraph topology3D fullTopology3D abstract
ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115 ISO 19115
Interface VectorSpatialRepresentation
MD_VectorSpatialRepresentation
ISO 19115
getTopologyLevel
topologyLevel
ISO 19115
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
53
OGC 09-083r3 getGeometricObjects
geometricObjects
ISO 19115
Interface GeneralParameterDescriptor
CC_GeneralOperationParameter
ISO 19111
createValue getMinimumOccurs getMaximumOccurs
minimumOccurs maximumOccurs
ISO 19111 ISO 19111
Interface GeneralParameterValue
CC_GeneralParameterValue
ISO 19111
getDescriptor clone
parameter
ISO 19111 Java
Package org.opengis.parameter
Class InvalidParameterCardinalityException getParameterName
GC_InvalidParameterName
OGC 01004
GC_InvalidParameterValue
OGC 01004
Interface ParameterDescriptor
CC_OperationParameter
ISO 19111
getValueClass getValidValues getDefaultValue getMinimumValue getMaximumValue getUnit
type
ISO 19111
defaultValue minimumValue maximumValue
ISO 19111 ISO 19111 ISO 19111
Interface ParameterDescriptorGroup
CC_OperationParameterGroup
ISO 19111
descriptors descriptor
parameter
ISO 19111
Interface ParameterValue
CC_ParameterValue
ISO 19111
getUnit doubleValue intValue booleanValue stringValue doubleValueList intValueList
integerValue booleanValue stringValue valueList integerValueList
ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111
Class InvalidParameterNameException getParameterName
Class InvalidParameterTypeException getParameterName
Class InvalidParameterValueException getParameterName getValue
Class ParameterNotFoundException getParameterName
54
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 valueFile getValue setValue
valueFile value
ISO 19111 ISO 19111
Interface ParameterValueGroup
CC_ParameterValueGroup
ISO 19111
values parameter groups addGroup
parameterValue
ISO 19111
Interface AuthorityFactory
CS_CoordinateSystemAuthorityFactory
OGC 01009
getAuthority getAuthorityCodes getDescriptionText createObject
getAuthority
OGC 01009
descriptionText
OGC 01009
Interface IdentifiedObject
IO_IdentifiedObject
ISO 19111
getName getAlias getIdentifiers getRemarks toWKT
name alias identifier remarks
ISO 19111 ISO 19111 ISO 19111 ISO 19111
Interface ReferenceIdentifier
RS_Identifier
ISO 19115
getCodeSpace getVersion
codeSpace version
ISO 19115 ISO 19115
Interface ReferenceSystem
RS_ReferenceSystem
ISO 19115
getDomainOfValidity getScope
domainOfValidity scope
ISO 19111 ISO 19111
Package org.opengis.referencing
Class NoSuchAuthorityCodeException getAuthority getAuthorityCode
Interface ObjectFactory
Package org.opengis.referencing.crs Interface CompoundCRS
SC_CompoundCRS
ISO 19111
getComponents
componentReferenceSystem
ISO 19111
Interface CoordinateReferenceSystem
SC_CRS
ISO 19111
getCoordinateSystem
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
55
OGC 09-083r3 Interface CRSAuthorityFactory
CS_CoordinateSystemAuthorityFactory
OGC 01009
createCoordinateReferenceSystem createCompoundCRS createDerivedCRS createEngineeringCRS createGeographicCRS createGeocentricCRS createImageCRS createProjectedCRS createTemporalCRS createVerticalCRS
createHorizontalCoordinateSystem createCompoundCoordinateSystem
OGC 01009 OGC 01009
createGeographicCoordinateSystem
OGC 01009
createProjectedCoordinateSystem
OGC 01009
createVerticalCoordinateSystem
OGC 01009
Interface CRSFactory
CS_CoordinateSystemFactory
OGC 01009
createCompoundCRS createEngineeringCRS createImageCRS createTemporalCRS createVerticalCRS createGeocentricCRS createGeographicCRS createDerivedCRS createProjectedCRS createFromXML createFromWKT
createCompoundCoordinateSystem createLocalCoordinateSystem
OGC 01009 OGC 01009
createVerticalCoordinateSystem
OGC 01009
createGeographicCoordinateSystem createFittedCoordinateSystem createProjectedCoordinateSystem createFromXML createFromWKT
OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009
Interface DerivedCRS
SC_DerivedCRS
ISO 19111
Interface EngineeringCRS
SC_EngineeringCRS
ISO 19111
Interface GeneralDerivedCRS
SC_GeneralDerivedCRS
ISO 19111
getBaseCRS getConversionFromBase
baseCRS conversion
ISO 19111 ISO 19111
Interface GeocentricCRS
SC_GeocentricCRS
ISO 19111
getCoordinateSystem
coordinateSystem
ISO 19111
Interface GeodeticCRS
SC_GeodeticCRS
ISO 19111
Interface GeographicCRS
SC_GeographicCRS
ISO 19111
getCoordinateSystem
coordinateSystem
ISO 19111
Interface ImageCRS
SC_ImageCRS
ISO 19111
Interface ProjectedCRS
SC_ProjectedCRS
ISO 19111
getCoordinateSystem getDatum
coordinateSystem datum
ISO 19111 ISO 19111
Interface SingleCRS
SC_SingleCRS
ISO 19111
getDatum
datum
ISO 19111
Interface TemporalCRS
SC_TemporalCRS
ISO 19111
56
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Interface VerticalCRS
SC_VerticalCRS
ISO 19111
Package org.opengis.referencing.cs Interface AffineCS
CS_AffineCS
ISO 19111
Code list AxisDirection
CS_AxisDirection
ISO 19111
OTHER NORTH NORTH_NORTH_EAST NORTH_EAST EAST_NORTH_EAST EAST EAST_SOUTH_EAST SOUTH_EAST SOUTH_SOUTH_EAST SOUTH SOUTH_SOUTH_WEST SOUTH_WEST WEST_SOUTH_WEST WEST WEST_NORTH_WEST NORTH_WEST NORTH_NORTH_WEST UP DOWN GEOCENTRIC_X GEOCENTRIC_Y GEOCENTRIC_Z FUTURE PAST COLUMN_POSITIVE COLUMN_NEGATIVE ROW_POSITIVE ROW_NEGATIVE DISPLAY_RIGHT DISPLAY_LEFT DISPLAY_UP DISPLAY_DOWN
CS_AO_Other north northNorthEast northEast eastNorthEast east eastSouthEast southEast southSouthEast south southSouthWest southWest westSouthWest west westNorthWest northWest northNorthWest up down geocentricX geocentricY geocentricZ future past columnPositive columnNegative rowPositive rowNegative displayRight displayLeft displayUp displayDown
OGC 01009 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111
Interface CartesianCS
CS_CartesianCS
ISO 19111
Interface CoordinateSystem
CS_CoordinateSystem
ISO 19111
getDimension getAxis
axis
ISO 19111
Interface CoordinateSystemAxis
CS_CoordinateSystemAxis
ISO 19111
getAbbreviation getDirection getMinimumValue getMaximumValue getRangeMeaning getUnit
axisAbbrev axisDirection minimumValue maximumValue rangeMeaning axisUnitID
ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
57
OGC 09-083r3 Interface CSAuthorityFactory createCoordinateSystem createCartesianCS createPolarCS createCylindricalCS createSphericalCS createEllipsoidalCS createVerticalCS createTimeCS createCoordinateSystemAxis createUnit
createLinearUnit
OGC 01009
Interface CylindricalCS
CS_CylindricalCS
ISO 19111
Interface EllipsoidalCS
CS_EllipsoidalCS
ISO 19111
Interface LinearCS
CS_LinearCS
ISO 19111
Interface PolarCS
CS_PolarCS
ISO 19111
Code list RangeMeaning
CS_RangeMeaning
ISO 19111
EXACT WRAPAROUND
exact wraparound
ISO 19111 ISO 19111
Interface SphericalCS
CS_SphericalCS
ISO 19111
Interface TimeCS
CS_TimeCS
ISO 19111
Interface UserDefinedCS
CS_UserDefinedCS
ISO 19111
Interface VerticalCS
CS_VerticalCS
ISO 19111
Interface CSFactory createCoordinateSystemAxis createCartesianCS createAffineCS createPolarCS createCylindricalCS createSphericalCS createEllipsoidalCS createVerticalCS createTimeCS createLinearCS createUserDefinedCS
58
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Package org.opengis.referencing.datum Interface Datum
CD_Datum
ISO 19111
getAnchorPoint getRealizationEpoch getDomainOfValidity getScope
anchorPoint realizationEpoch domainOfValidity scope
ISO 19111 ISO 19111 ISO 19111 ISO 19111
Interface DatumAuthorityFactory
CS_CoordinateSystemAuthorityFactory
OGC 01009
createDatum createEngineeringDatum createImageDatum createVerticalDatum createTemporalDatum createGeodeticDatum createEllipsoid createPrimeMeridian
createVerticalDatum
OGC 01009
createHorizontalDatum createEllipsoid createPrimeMeridian
OGC 01009 OGC 01009 OGC 01009
Interface DatumFactory
CS_CoordinateSystemFactory
OGC 01009
createEngineeringDatum createGeodeticDatum createImageDatum createTemporalDatum createVerticalDatum createEllipsoid createFlattenedSphere createPrimeMeridian
createLocalDatum createHorizontalDatum
OGC 01009 OGC 01009
createVerticalDatum createEllipsoid createFlattenedSphere createPrimeMeridian
OGC 01009 OGC 01009 OGC 01009 OGC 01009
Interface Ellipsoid
CD_Ellipsoid
ISO 19111
getAxisUnit getSemiMajorAxis getSemiMinorAxis getInverseFlattening isIvfDefinitive isSphere
getAxisUnit semiMajorAxis semiMinorAxis inverseFlattening isIvfDefinitive isSphere
OGC 01009 ISO 19111 ISO 19111 ISO 19111 OGC 01009 ISO 19111
Interface EngineeringDatum
CD_EngineeringDatum
ISO 19111
Interface GeodeticDatum
CD_GeodeticDatum
ISO 19111
getEllipsoid getPrimeMeridian
ellipsoid primeMeridian
ISO 19111 ISO 19111
Interface ImageDatum
CD_ImageDatum
ISO 19111
getPixelInCell
pixelInCell
ISO 19111
Code list PixelInCell
CD_PixelInCell
ISO 19111
CELL_CENTER CELL_CORNER
cell center cell corner
ISO 19111 ISO 19111
Interface PrimeMeridian
CD_PrimeMeridian
ISO 19111
getGreenwichLongitude getAngularUnit
greenwichLongitude getAngularUnit
ISO 19111 OGC 01009
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
59
OGC 09-083r3 Interface TemporalDatum
CD_TemporalDatum
ISO 19111
getOrigin
origin
ISO 19111
Interface VerticalDatum
CD_VerticalDatum
ISO 19111
getVerticalDatumType
vertDatumType
ISO 19111
Code list VerticalDatumType
CD_VerticalDatumType
ISO 19111
OTHER_SURFACE GEOIDAL DEPTH BAROMETRIC
other surface geoidal depth barometric
ISO 19111 ISO 19111 ISO 19111 ISO 19111
Package org.opengis.referencing.operation Interface ConcatenatedOperation
CC_ConcatenatedOperation
ISO 19111
getOperations
coordOperation
ISO 19111
Interface Conversion
CC_Conversion
ISO 19111
getSourceCRS getTargetCRS getOperationVersion
sourceCRS targetCRS operationVersion
ISO 19111 ISO 19111 ISO 19111
Interface CoordinateOperation
CC_CoordinateOperation
ISO 19111
getSourceCRS getTargetCRS getOperationVersion getCoordinateOperationAccuracy getDomainOfValidity getScope getMathTransform
sourceCRS targetCRS operationVersion coordinateOperationAccuracy domainOfValidity scope getMathTransform
ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 ISO 19111 OGC 01009
Interface ConicProjection
Interface CoordinateOperationAuthorityFactory CT_CoordinateTransformationAuthorityFactory OGC 01009 createOperationMethod createCoordinateOperation createFromCoordinateReferenceSystemCodes
createFromTransformationCode createFromCoordinateSystemCodes
OGC 01009 OGC 01009
Interface CoordinateOperationFactory
CT_CoordinateTransformationFactory
OGC 01009
createOperation createConcatenatedOperation createDefiningConversion
createFromCoordinateSystems
OGC 01009
Interface Formula
CC_Formula
ISO 19111
getFormula getCitation
formula formulaCitation
ISO 19111 ISO 19111
Interface CylindricalProjection
60
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Interface MathTransform
CT_MathTransform
OGC 01009
getSourceDimensions getTargetDimensions transform transform derivative inverse isIdentity toWKT
getDimSource getDimTarget transform transformList derivative inverse isIdentity getWKT
OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009
Interface MathTransformFactory
CT_MathTransformFactory
OGC 01009
getAvailableMethods getLastMethodUsed getDefaultParameters createBaseToDerived createParameterizedTransform createAffineTransform createConcatenatedTransform createPassThroughTransform createFromXML createFromWKT
createParameterizedTransform createAffineTransform createConcatenatedTransform createPassThroughTransform createFromXML createFromWKT
OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009 OGC 01009
Interface Matrix
PT_Matrix
OGC 01009
Interface MathTransform1D Interface MathTransform2D createTransformedShape
getNumRow getNumCol getElement setElement isIdentity clone
Vecmath Vecmath Vecmath Vecmath Java
Class NoninvertibleTransformException Interface OperationMethod
CC_OperationMethod
ISO 19111
getFormula getSourceDimensions getTargetDimensions getParameters
formulaReference sourceDimensions targetDimensions parameter
ISO 19111 ISO 19111 ISO 19111 ISO 19111
Interface PassThroughOperation
CC_PassThroughOperation
ISO 19111
getOperation getModifiedCoordinates
coordOperation modifiedCoordinate
ISO 19111 ISO 19111
Class OperationNotFoundException
Interface PlanarProjection Interface Projection
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
61
OGC 09-083r3 Interface SingleOperation
CC_SingleOperation
ISO 19111
getMethod getParameterValues
method parameterValue
ISO 19111 ISO 19111
Interface Transformation
CC_Transformation
ISO 19111
getSourceCRS getTargetCRS getOperationVersion
sourceCRS targetCRS operationVersion
ISO 19111 ISO 19111 ISO 19111
CodeList
ISO 19103
Class TransformException getLastCompletedTransform setLastCompletedTransform
Package org.opengis.util Class CodeList valueOf family names name identifier ordinal equals toString
Java Java
Interface CodeList.Filter accept codename
Interface Factory getVendor
Class FactoryException Interface GenericName
GenericName
ISO 19103
scope depth getParsedNames head tip toFullyQualifiedName push toString toInternationalString
scope depth parsedName head
ISO 19103 ISO 19103 ISO 19103 ISO 19103
push
ISO 19103 Java
LocalName
ISO 19103
Interface InternationalString Interface LocalName
62
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Interface MemberName
MemberName
ISO 19103
getAttributeType
attributeType
ISO 19103
Interface NameSpace
NameSpace
ISO 19103
isGlobal name
isGlobal name
ISO 19103 ISO 19103
Interface Record
Record
ISO 19103
getRecordType getAttributes locate set
recordType memberValue locate
ISO 19103 ISO 19103 ISO 19103
Interface RecordSchema
RecordSchema
ISO 19103
getSchemaName getDescription locate
schemaName description locate
ISO 19103 ISO 19103 ISO 19103
Interface RecordType
RecordType
ISO 19103
memberTypes
ISO 19103
locate
ISO 19103
Interface ScopedName
ScopedName
ISO 19103
tail path
tail
ISO 19103
Interface Type
Type
ISO 19103
getTypeName
typeName
ISO 19103
Interface TypeName
TypeName
ISO 19103
Interface NameFactory createInternationalString createNameSpace createTypeName createLocalName createGenericName parseGenericName
Class NoSuchIdentifierException getIdentifierCode
getContainer getMemberTypes getMembers locate isInstance
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
63
OGC 09-083r3
Annex D (informative)
UML Diagram for referencing Operation types
64
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Annex E (Informative)
Departures from the ISO/OGC standards 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: • • • • • • • •
Departures due to constraints of the Java language Departures due to historical reasons Departures for harmonization between the different specifications Departures for closer integration with the Java environment Changes of name without change in functionality Generalizations due to relaxation of ISO/OGC restrictions Addition of elements not in the ISO/OGC specifications Extensions for convenience, without introduction of new functionality
E.1 Departures due to constraints of the Java language Unions in org.opengis.referencing.cs package
ISO 19111 defines GeodeticCS, EngineeringCS and ImageCS unions for type safety, which ensures, for example, that a GeodeticCRS only be associated to a CartesianCS, an EllipsoidalCS or a SphericalCS. However the union construct found in some languages like C/C++ is not available in Java. In the particular case of ImageCS, the same type-safety objective can be obtained through a slight change in the interface hierarchy (see the departure documented in CartesianCS). For the other two unions (GeodeticCS and EngineeringCS), no workaround is proposed. Parent of CartesianCS interface
ISO 19111 defines CartesianCS as a direct sub-type of CoordinateSystem. ISO also defines ImageCS as the union of AffineCS and CartesianCS, for use by ImageCRS. Because the union construct found in some languages like C/C++ does not exist in Java, GeoAPI defines CartesianCS as a sub-type of AffineCS in order to achieve the same type safety; also, GeoAPI does not define ImageCS but uses AffineCS instead. In this hierarchy, CartesianCS is considered a special case of AffineCS where all axes are perpendicular to each other.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
65
OGC 09-083r3 Union in Ellipsoid interface
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, implementors 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. Position union
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 so the two conditional accessor methods, getPoint() and getDirectPosition(), can be replaced by an instanceof check. However, the getDirectPosition() has been retained with different semantics, conceptually returning a DirectPosition at the same location. The conditionality has also been changed to mandatory since all three types conceptually have a well defined location. Obligation.FORBIDDEN
ISO specifications sometime 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.
E.2 Departures due to historical reasons ReferenceSystem
This interface was initially derived from an ISO 19111 specification published in 2003. Later revisions (in 2005) rely on an interface defined in ISO 19115 instead. The annotations were updated accordingly, but this interface is still defined in the referencing package instead of the metadata package for this historical reason. ReferenceSystem.getDomainOfValidity()
This method has been kept conformant with the specification published in 2003. Later revisions changed the multiplicity, so the return type should now be a collection. The singleton has been preserved in GeoAPI for historical reasons, and also because the Extent attributes already allow collections.
66
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Method getScope() in ReferenceSystem, Datum and CoordinateOperation interfaces
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. In the particular case of ReferenceSystem, a later revision moved this attribute to subclasses, but GeoAPI keeps this method here for historical reasons. GeocentricCRS and GeographicCRS
Those interfaces are kept conformant with the specification published in 2003. The 2007 revision of ISO 19111 removed the GeographicCRS and GeocentricCRS types, handling both using the GeodeticCRS parent type. GeoAPI keeps them since the distinction between those two types is in wide use. AxisDirection.FUTURE and PAST
Those codes were defined in an older specification (2003) and removed in more recent edition (2007), but has been kept in GeoAPI. CSFactory and CSAuthorityFactory
Added for consistency with CRS and datum factories. This CS factory was not defined in the OGC specification because OGC 01-009 was created before ISO 19111 and had no equivalent of the ISO Coordinate System types.
E.3 Departures for harmonization between the different specifications Package org.opengis.metadata
Omitted the reference system package, since it duplicates ISO 19111 / OGC Topic 2. This follows the lead of ISO 19111, which states: "Normative reference to ISO 19115 is restricted as follows: in this international standard, normative reference to ISO 19111 excludes the MD_CRS class and its components classes." (ISO 19111:2007, section 3 "Normative References") IdentifiedObject
ISO 19111 defines an IdentifiedObjectBase interface. The latter is omitted in GeoAPI because the split between IdentifiedObject and IdentifiedObjectBase in the ISO/OGC specification was a workaround for introducing IdentifiedObject in ISO 19111 without Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
67
OGC 09-083r3
changing the ReferenceSystem definition in ISO 19115 but GeoAPI does not need this workaround. Package org.opengis.parameter
Moved the GeneralParameterDescriptor, ParameterDescriptor, ParameterDescriptorGroup, GeneralParameterValue, ParameterValue, ParameterValueGroup, InvalidParameterNameException, InvalidParameterTypeException and InvalidParameterValueException interfaces from org.opengis.referencing.operation to org.opengis.parameter. With this move, GeoAPI has extended the use of these parameter classes to a more general use rather than only for referencing operation types. 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. 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.
E.4 Departures for closer integration with the Java environment CodeList.name(), ordinal(), family() and valueOf(…)
Provided by analogy with the methods in the JSE 5 Enum class. The family() method is a special case provided by analogy with Enum.family(), which was defined in a initial draft of JSE 5 before the final release. Matrix.getNumRow(), getNumCol(), getElement() and setElement()
Needed for making the matrix useable. The method signature matches the one of GMatrix in the vecmath package, for straightforward implementation. VerticalExtent.getVerticalCRS()
ISO 19115 specifies a generic CoordinateReferenceSystem instead of the more restrictive VerticalCRS. GeoAPI uses the more specific type for type-safety and consistency with TemporalExtent usage. However this restriction prevents usage of Height above the ellipsoid when only the constants defined in the VerticalDatumType code list are used. If such height is wanted, implementors need to extend the above code list with their own ELLIPSOIDAL constant.
68
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 DerivedCRS
ISO 19111 defines a DerivedCRSType code list. The latter is omitted in GeoAPI since Java expressions like (baseCRS instanceof FooCRS) provides the same capability with more flexibility. 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.
E.5 Changes of name without change in functionality GeographicExtent.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. GeneralDerivedCRS.getConversionFromBase()
"conversion" may be confusing as a method name since it does not indicate which CRS is the source or which is the target. OGC document 01-009 used the toBase() method name. By analogy with 01-009, GeoAPI defines a method name which contains the "FromBase" expression. GeneralParameterDescriptor, ParameterDescriptor and ParameterDescriptorGroup
GeoAPI uses a name which contains the "Descriptor" word for consistency with other libraries in Java (e.g. ParameterListDescriptor in Java Advanced Imaging). ParameterValueGroup.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. ParameterValue.doubleValue()
the method from "value" to "doubleValue" for consistency Number.doubleValue() and the other "*Value" methods defined in this interface. Renamed
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
with
69
OGC 09-083r3 ParameterValue.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 primitives rather than a Measure object. ParameterValue.intValue()
Renamed the method from "integerValue" to "intValue" for consistency with Number.intValue() and the int Java primitive type. ParameterValue.intValueList()
Renamed the attribute from "integerValueList" to "intValueList" for consistency with intValue().
E.6 Generalizations due to relaxation of ISO/OGC restrictions GeneralParameterDescriptor.getMaximumOccurs()
Moved
up
(in
the
interface ParameterDescriptorGroup into minimumOccurs method.
hierarchy) the maximumOccurs method from this super-interface, for parallelism with the
GenericName.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. CoordinateReferenceSystem.getCoordinateSystem() method
ISO 19111 defines this method for SingleCRS only. GeoAPI declares this method in this parent interface for user convenience, since CS dimension and axes are commonly requested information and will always be available, directly or indirectly, even for CompoundCRS. CompoundCRS.getComponents()
According ISO 19111, "A Compound CRS is a coordinate reference system that combines two or more coordinate reference systems, none of which can itself be compound". However this constraint greatly increases the cost of extracting metadata (especially the CRS identifier) of the three-dimensional part of a spatio-temporal CRS. Note also that in "Coordinate Transformation Services" (OGC document 01-009), a compound CRS was specified as a pair of arbitrary CRS ("head" and "tail") where each could be another compound CRS, allowing the creation of a tree. GeoAPI follows that more general strategy.
70
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 Record.getAttributes()
Figure 15 in ISO 19103:2005 specifies a cardinality of 1. However, this seems to contradict the semantics of the locate(name) and RecordType.getMemberTypes() methods. AuthorityFactory.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.
E.7 Addition of elements not in the ISO/OGC specifications CodeList.identifier()
Defined because each CodeList has a UML identifier in addition of the Java programmatic name. CodeList.names()
Defined because each CodeList has at least two names, the Java programmatic name and the UML identifier, while some subclasses have additional names. CodeList.Filter
The inner CodeList.Filter interface is not part of the OGC specification. It has been added because CodeList is one of the few concrete classes in GeoAPI and there is a need to give some user control over the behavior of the CodeList implementation. ParameterDescriptor.getValidValues() and getUnit()
Those methods are not part of ISO specification. They are provided as a complement of information. GeneralParameterDescriptor.createValue(…) and ParameterDescriptorGroup.createValue(…)
Those methods are not part of the ISO specification. They are provided in GeoAPI as a kind of factory methods. CoordinateOperationFactory.createOperation(…)
This method has been added at user request, in order to specify the desired transformation path when many are available.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
71
OGC 09-083r3 CoordinateOperationFactory.createConcatenatedOperation(…)
This method has been added because OGC 01-009 does not define a factory method for creating such object. CoordinateOperationAuthorityFactory.createOperationMethod(…)
This method has been added because OGC 01-009 does not define a factory method for creating such object. AuthorityFactory.getAuthorityCodes()
This method is not part of the OGC specification but has been added as a way to publish the capabilities of a factory. MathTransformFactory.getAvailableMethods()
This method is not part of the OGC specification. It has been added as a way to publish the capabilities of a factory. MathTransformFactory.getLastMethodUsed()
This method is not part of the OGC specification. It has been added because this information appears to be needed in practice. A more object-oriented approach would have been to return a {MathTransform, OperationMethod} tuple in the createParameterizedTransform(…) method, but we wanted to keep the latter unchanged for historical reasons (it is inherited from OGC 01-009) and because only a minority of use cases need the operation method. Note that the existence of this method does not break thread-safety if the implementor stores this information in a ThreadLocal variable. MathTransformFactory.getDefaultParameters(…) and createBaseToDerived(…)
Those methods are part of the GeoAPI mechanism for defining the math transform parameters or deriving other transforms. 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. Projection, ConicProjection, CylindricalProjection, PlanarProjection,
Those interfaces are not part of the ISO specification. They have been added in GeoAPI at user request, in order to provide a way to know the kind of map projection. 72
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3 NameFactory
Added in order to provide constructors for GenericName and related interfaces. InternationalString
Added this new type in order to distinguish between localizable and non-localizable character strings. Not all character strings should be localizable; for example Well Know Text or code names should probably be language neutral. Since the ISO/OGC UML does not say which character strings are localizable and which ones are not, we have done our own guesses in GeoAPI. GenericName.toInternationalString()
This method is not part of the ISO specification. It has been added to provide a way to localize the name. IdentifiedObject.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. RecordType.getContainer()
This is the TypeList association in figure 15 of ISO 19103:2005, but navigable in the opposite way. The navigation in the ISO way is represented by the RecordSchema.getDescription().values(). FactoryException, InvalidParameterCardinalityException, InvalidParameterTypeException, MismatchedDimensionException, NoSuchAuthorityCodeException, NoSuchIdentifierException, NoninvertibleTransformException, OperationNotFoundException, ParameterNotFoundException, TransformException
Those exceptions are not part of the OGC specification.
E.8 Extensions for convenience, without introduction of new functionality DirectPosition and Envelope
Those interfaces were moved into the org.opengis.geometry package for convenience.
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
73
OGC 09-083r3 Envelope.getCoordinateReferenceSystem() and getDimension()
ISO does not define those methods - the CRS or the dimension can be obtained only through one of the corner DirectPosition objects. GeoAPI adds those methods 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). Envelope.getMinimum(), getMaximum(), getMedian and getSpan()
Those methods are not part of ISO specification. GeoAPI adds those methods for convenience and efficiency, since some implementations might store the minimum and maximum ordinate values directly in the Envelope itself rather than in a contained DirectPosition corner. ScopedName.path()
This method is not part of ISO specification. It has been added in GeoAPI as a complement of the ISO tail() method. GenericName.tip(), toFullyQualifiedName() and toString()
Those methods are not part of ISO specification. They do not provide any additional information compared to that accessible though the standard methods defined by ISO, but provide easier to access frequently requested information. RecordType.getMembers() and isInstance(…)
Those methods provide no additional information compared to the ISO standard methods, but are declared in GeoAPI as a convenient shortcut. Record.set(…)
This method provides no additional functionality compared to the ISO standard methods, but is declared in GeoAPI as a convenient shortcut. ParameterDescriptorGroup.descriptor(…) ParameterValueGroup.parameter(…), groups(…) and addGroup(…)
Those methods are not part of the ISO specification. They have been added in an attempt to make the interfaces easier to use. Matrix.isIdentity()
Added as a convenience for a frequently requested operation.
74
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Annex F (informative)
Comparison with legacy OGC specifications The ISO specifications from the 19100 series supersede some OGC specifications. In areas where specifications overlap, the ISO data types were used. However some standards may still refer to the legacy OGC specification data types. For example, the OGC defines the Well Known Text format using its own referencing terminology. This annex lists the legacy OGC types retained in GeoAPI together with the ISO replacement when there is one.
F.1 Comparison of OGC 01-009 with ISO 19111 OGC 01-009
ISO 19111 or 19107
GeoAPI
PT_CoordinatePoint PT_Envelope PT_Matrix
DirectPosition GM_Envelope
DirectPosition Envelope Matrix
CS_AxisInfo CS_AxisOrientationEnum CS_CompoundCoordinateSystem CS_CoordinateSystem CS_CoordinateSystemAuthorityFactory
CS_CoordinateSystemAxis CS_AxisOrientation SC_CompoundCRS SC_CoordinateReferenceSystem
CoordinateSystemAxis AxisOrientation CompoundCRS CoordinateReferenceSystem CRSAuthorityFactory
CS_CoordinateSystemFactory
CRSFactory
CS_Datum CS_DatumType CS_Ellipsoid CS_FittedCoordinateSystem CS_GeocentricCoordinateSystem CS_GeographicCoordinateSystem CS_HorizontalDatum CS_Info CS_LocalCoordinateSystem CS_LocalDatum CS_PrimeMeridian CS_ProjectedCoordinateSystem CS_Projection CS_ProjectionParameter CS_VerticalCoordinateSystem CS_VerticalDatum CS_WGS84ConversionInfo
CD_Datum CD_VerticalDatumType CD_Ellipsoid SC_DerivedCRS SC_GeodeticCRS SC_GeodeticCRS CD_GeodeticDatum IO_IdentifiedObject SC_EngineeringCRS CD_EngineeringDatum CD_PrimeMeridian SC_ProjectedCRS CC_Conversion CC_ParameterValue SC_VerticalCRS CD_VerticalDatum
Datum VerticalDatumType Ellipsoid DerivedCRS GeocentricCRS GeographicCRS GeodeticDatum IdentifiedObject EngineeringCRS EngineeringDatum PrimeMeridian ProjectedCRS Projection ParameterValue VerticalCRS VerticalDatum WGS84ConversionInfo
CT_CoordinateTransformation CT_CoordinateTransformationAuthorityFactory
CC_CoordinateOperation
CoordinateOperation CoordinateOperationAuthorityFactory
CT_CoordinateTransformationFactory
CoordinateOperationFactory
CT_MathTransform
MathTransform
CT_MathTransformFactory
MathTransformFactory
CT_Parameter
76
CC_ParameterValue
ParameterValue
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.
OGC 09-083r3
Annex G (informative)
Reference Implementation The GeoAPI library is released along with a Reference Implementation to demonstrate its viability and ensure that functional client code can be written with the release of this specification. The Reference Implementation is provided by the Geotoolkit.org project (http://www.geotoolkit.org/). The implementation library itself is called geotk-bundlereferencing version 3.18 or above, and is available from the http://download.geotoolkit.org/ server. The Reference Implementation is free software, licensed to all under the terms of the GNU Lesser General Public License, version 2.1, and therefore open for study, modification and redistribution, the latter under some constraints specified by the LGPL license.
Copyright © 2009-2011 Open Geospatial Consortium.
77
OGC 09-083r3
Annex H Revision history Date
Release
Author
2009-04-08 3.0.0-Draft
Adrian Custer
2009-09-06 3.0.0-Draft-r1
Martin Desruisseaux Annex
List of departures
2010-02-11 3.0.0-Draft-r2
Martin Desruisseaux 8.1.1, 10.1, annex F
Clarifications
78
Paragraph modified All
Copyright © 2009-2011 Open Geospatial Consortium.
Description Initial Public Draft
OGC 09-083r3
Bibliography [1]
ISO 31 (all parts), Quantities and units.
[2]
IEC 60027 (all parts), Letter symbols to be used in electrical technology.
[3]
ISO 1000, SI units and recommendations for the use of their multiples and of certain other units.
[4]
ISO 19103, Geographic information – Conceptual schema language. 2005.
[5]
ISO 19115, Geographic information – Metadata. 2003.
[6]
ISO 19115, Geographic information – Metadata / Corrigendum 1. 2006.
[7]
ISO 19103, Geographic information – Spatial referencing by coordinates. 2nd Edition, 2007.
[8]
Nordgren, Bryce, Tools from ISO 19103: A GeoAPI Interface Proposal. USDA Forest Service.
[9]
Nordgren, Bryce, An ISO-19109 Primer (and comparison to the ComplexFeature effort in GeoTools). USDA Forest Service.
[10] Nordgren, Bryce, An ISO19123 Coverage Primer (and GeoAPI/GeoTools integration guide). USDA Forest Service. [11] Nordgren, Bryce, The ISO TC/211 Image Concept: An integrated review and definition. USDA Forest Service. [12] Daly, Martin, ed. OGC 01-009 Coordinate Transformation Services. Revision 1.00 [13] Reynolds, Greg, ed. OGC 03-064 GO-1 Application Objects. Version 1.0
80
Copyright © 2009-2010 Open Geospatial Consortium, Inc. All Rights Reserved.