Geotoolkit.org (abridged Geotk) is a free software, Java language library for developing geospatial applications. The library can be used for desktop or server applications. Geotk is the reference implementation of GeoAPI 3.0 interfaces.
Geotk provides data structures for geographic data and associated metadata along with methods to manipulate those data structures. The library rests on a set of utility classes which include a framework for factory classes. The Geotk metadata module forms the base of the library and enables the creation of metadata objects which comply with the ISO 19115 metadata model and which can be read from or written to ISO 19139 compliant XML documents. The Geotk referencing module enables the construction of geodetic data structures for geospatial referencing based on the ISO 19111 model such as axis, projection and coordinate reference system definitions, along with the associated operations which enable the mathematical conversion of coordinates between different systems of reference. The Geotk coverage module applies the Java Advanced Imaging library to the geospatial realm by providing georeferencing wrappers to the JAI data model. The Geotk coverage I/O module provides a common approach to the reading and writing of grid coverages applicable to simple imagery as to many dimensional data structures.
The Geotk project plans to extend the library both by expanding the current modules and providing more modules for the library. The referencing module will be extended to handle new projections. The coverage module will be extended by formalizing an API for image operations. The modules which are currently hosted in the separate, experimental repository geotoolkit-pending will be reviewed, refactored, and integrated into the core repository. These modules currently provide the experimental rendering module, the feature model from the GeoTools 2 project, and the symbology extension modules.
The Geotoolkit.org project maintains a branch of the metadata and referencing modules implementing the GeoAPI 3.0.0 interfaces as published by OGC in their GeoAPI specification. This branch is deployed on the Maven Central repository. Maven projects can use this branch by appending -geoapi-3.0 to the Geotk version number in their dependencies. See the branches page for more information.
Large part of Geotoolkit.org code is moving to the Apache SIS project. This migration results in deprecation of massive amount of classes in the Geotk project, which will be replaced by the SIS equivalent. In many cases, migrating to SIS is just a matter of replacing the org.geotoolkit package name by org.apache.sis in the import declarations. However in some cases, the changes are more consistent. Non-trivial replacements are indicated in the comments of the @deprecated tags.
To reduce the annoyance, this replacement is performed only on the 4.x series of Geotk versions. The Geotk 3.x series still have no dependency to SIS, and their classes are not deprecated. However we expect that most future developments will happen in the Apache SIS project together with the Geotk 4.x series, and the Geotk 3.x series may receive only occasional bug fixes.
Furthermore, the geotoolkit and geotoolkit-pending repositories will be merged in a single project in the 4.x series.
Latest Geotoolkit.org release is Geotk-4.0-M1, released July 2013. This release is a milestone toward migration to Apache SIS.
See the download page for release notes.
Geotk is free software, distributed to all under the license terms of the GNU Lesser General Public license version 2.1. See the license page for details.
Geotk requires a Java 7 Runtime Environment. That is the only requirement for the base modules up to and including the Referencing module. To use the coverage module, Geotk also requires the Java Advanced Imaging (JAI) libraries available from Oracle. The module currently requires JAI version 1.1.3 or greater. The JAI libraries can be obtained from the Oracle website When installed, the JAI download will place a JAR file and some native code into the Java Runtime Environment.
The download page explains in detail how to obtain pre-compiled binaries of Geotk either from the Maven 2 repository or from the automated build page. The Maven 2 repository enables projects which use that built tool to declare a dependency on Geotk and have Maven automatically find and download the required binary archives. The automated build page provides bundles which group several Geotk modules into a single JAR file. The bundle geotk-bundle-4.x-SNAPSHOT.pack.gz contains a full set of Geotk modules providing the full functionality of the library. Other bundles are provided which contain different subsets of the project. A source bundle and a Javadoc bundle are also available.
Geotk is hosted on its own mercurial source code repository, http://hg.geotoolkit.org/. A complete copy of the repository can be 'cloned' using the command:
hg clone http://hg.geotoolkit.org/geotoolkit
The mercurial clone will contain both the repository with the fully history (in the hidden .hg/ directory) and the working copy comprised of all the code files visible in the root directory. The Mercurial wiki explains how to use the tool for local version control and distributed collaboration.
Geotk is built using the Maven 2 software project management tool using the command:
which will find and download the dependencies and compile the source code. The first time this command is run, the user must be online in order to obtain all the required dependencies but subsequently the command can be run with the --offline parameter if there is no network connection. Maven provides a powerful build tool for the management of Java language projects.
The Developing Geotoolkit.org page explains the basics of how to write code which is coherently integrated into the Geotk system.
The Geotk project has not yet formalized its system of collaboration nor decided on any particular style of project management. However, the project has been conceived to maximize the flexibility of all participants while ensuring the project can maintain high quality standards and evolve systematically with improvements in the Java language and with new technical visions of its contributors.
The Geotoolkit.org Project page provides more information on the Geotk project.