GeoAPI provides a set of Java and Python language programming interfaces for geospatial applications.

The interfaces developed by the GeoAPI project include many of the data structures and manipulation methods needed for geographic information system applications. In a series of packages, GeoAPI 3.0 defines a core set of interfaces for metadata handling, for geodetic referencing, projection and conversion. The "pending" part of GeoAPI defines interfaces for the handling of georeferenced imagery, for the construction and manipulation of vector geometry and topological data structures, and for the description and use of geospatial "feature" entities. Beyond this core, GeoAPI-pending further defines interfaces for data access and storage including sophisticated filter queries, and for display.

The GeoAPI interfaces closely follow the abstract model and concrete specifications published collaboratively by the International Organization for Standardization (ISO) in its 19100 series of documents and the Open Geospatial Consortium (OGC) in its abstract and implementation specifications. GeoAPI provides an interpretation and adaptation of these standards to match the expectations of Java or Python programmers. These standards provide GeoAPI with the richness which comes from the expertise of the specification writers. Clients benefit from the potential for inter-operability which comes from using a well defined, standardized data model. Implementors benefit from having a pre-defined set of well considered, formal boundaries to modularize their development work.

The GeoAPI interfaces provide a layer which separates client code, which would call the API, from library code, which implements the API. These interfaces are not an implementation. This follows a similar pattern to the well known JDBC API which provides a standardized interface to databases. Clients can use the JDBC API without concern for the particular implementation which they will use. Various groups have implemented different subsets of GeoAPI, see the list of known implementations for details.

GeoAPI provides also JUnit tests that implementors can use for testing their implementations, and various examples in the public domain.

The GeoAPI project

The GeoAPI project consists of a loose collaboration of volunteer programmers and scientists from around the globe motivated by diverse interests. Many work on GeoAPI as part of their own efforts writing client applications which use the API or working on libraries which implement the API. In addition, a GeoAPI Standard Working Group has formed within the OGC to formalize GeoAPI as a published OGC standard.

GeoAPI is free software. GeoAPI may be used and redistributed by anyone for any purpose requiring only maintaining the copyright and license terms on the source code and derivative files. The copyright to the GeoAPI interfaces is held by the Open Geospatial Consortium. See the OGC legal page for details.

More information can be found on the Frequently Asked Questions page.

The GeoAPI code structure

GeoAPI consists of a series of packages, many of which follow one specific ISO/OGC specification document. The different packages have reached different levels of stability so that the project has been split into two modules.

  • The geoapi module contains only the interfaces which have remained stable for a long period of time and have both been fully implemented and had that implementation extensively tested. As packages mature, they will be moved to this module.
  • The geoapi-pending module provides additional interfaces with different levels of stability ranging from the very trusted to modules which are experimental since they do not yet have any known implementation.

The project contains a geoapi-conformance module which can be run as a test harness to evaluate the correctness of any implementation. A proof of concept is provided by the geoapi-proj4 module, using wrappers around the well-known C/C++ Proj.4 library. Finally, the geoapi-examples and geoapi-openoffice modules place code samples in public domain, which implementors can use as a starting point for their own products.

GeoAPI uses the Maven build tool. External projects which also use this tool can integrate GeoAPI into their Maven dependencies using one of the repositories listed here.