The Geotoolkit.org library

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 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 along with extensions to the Java language. 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 extends the Java Advanced Imaging module to the geospatial realm by providing georeferencing wrappers to the JAI data model.

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 including grid based coordinate transformations. The coverage module will be extended by formalizing an API for image operations. A coverage-io module will be developed to provide a standard approach to the reading and writing of grid coverages which will be as applicable to simple imagery as to many dimensional data structures. The modules which are currently hosted in the separate, experimental repositories gt_modified and 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.

License

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.

Using Geotoolkit.org

Geotk requires a Java 6 Runtime Environment. The JRE from Sun should be JRE 6 update 7 or newer. 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 Sun Microsystems. The module currently requires JAI version 1.1.3 or greater. The JAI libraries can be obtained from the JAI website. When installed, the JAI download will place a JAR file and some native code into the Java Runtime Environment.

The coverage-io module further requires the JAI Image I/O library, version 1.1 or greater. That library can be obtained from the JAI-imageio website and also installed into the JRE.

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-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.

The Introduction to Geotoolkit.org provides a brief explanation of how to create applications which use the library.

Geotoolkit.org Source

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:

mvn install

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 Geotoolkit.org project

The Geotk project has just started recently so it 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.

Geotk originated from several long term development projects. One original thread was the Seagis project of Martin Desruisseaux and another the GeoTools applet based project of James MacGill at the University of Leeds. Along the way, these two projects decided to fuse to create the GeoTools 2 project. Geotk started its independent existence as a fork from this GeoTools 2 project with the intent to clean the code base, remove duplicate functionality, reduce dependencies, fully document the javadoc API, and ensure that the code could be built daily.

The Geotoolkit.org History page provides a more complete history of the project.

Migrating from GeoTools

As of the middle of 2009, Geotk provides a core API essentially identical to that provided by the GeoTools 2 project but differing in the names of the available packages and classes and the removal of all deprecated code. Applications which run on GeoTools 2 should therefore be able to be ported to Geotk with relatively little difficulty, especially if the application focused on the methods in GeoAPI and avoided using deprecated classes and methods.

The geotk-migrate module of Geotk provides a tool to automatically rename the Java import statements and other references to all the classes which have been renamed in Geotk. Applications which depend directly on low-level API of GeoTools, such as the MapProjection classes, may require more work to use Geotk. The changes page summarizes the changes between GeoTools 2 and Geotk and should help in any porting effort.