GeoTools – Open Source GeoSpatial Toolkit worth trying out
GeoTools is a free, open source Java geospatial toolkit for working with both vector and raster data. GeoTools is associated with the GeoAPI project that creates a vendor-neutral set of geospatial, Java interfaces derived from OGC specifications.
GeoTools is a general purpose geospatial library with a large feature set including:
- Create and Analyze graphs and networks
- Powerful “schema assisted” parsing technology using XML Schema to bind to GML content.
- Interact with OGC web services with both Web Map Server and Web Feature Server support
- JDBC plug-ins for DB2, H2, PostGIS, MySQL, SpatialLite, SQL Server
GeoTools implements Open Geospatial Consortium (OGC) specifications as they are developed including:
- Support for OGC Grid Coverage implementation
- Symbology using OGC Styled Layer Descriptor (SLD) specification
- Attribute and spatial filters using OGC Filter Encoding specification
- Supports Java Topology Suite (JTS), an implementation of OGC Simple Features Specification – that covers 2D constructs like Point, Line and Polygon. JTS allows 3D shapes (by having a third point) to be represented, but not used for calculations.
- Coordinate reference system and transformation support (for providing meaning to the Geometry or shapes of JTS)
- GeoTools plans to support OpenGIS ISO Geometry Interfaces for 3D and curves.
GeoTools includes two Renderers:
- LiteRenderer – a stateless, low memory renderer, particularly useful in server-side environments
- J2D – a stateful renderer with optimizations for update rate and good for interactive client-side displays
GeoTools supports additional formats through the use of Open plug-in system. The formats supported by an application can be controlled by including ONLY the required plug-ins. The plug-ins are available for raster formats – geotiff, gtopo30, world plus image files using common image formats such as JPEG, TIFF, GIF and PNG, imagemosaic, imagepyramid, JP2K. Plug-ins for the ImageIO-EXT project allows GeoTools to read additional raster formats from GDAL.
The GeoTools library forms a software “stack” with each jar building on the previous one (ref. http://docs.geotools.org/latest/userguide/welcome/geotools.html). GeoTools provides API (application programming interfaces) both for representing the data structures as well as to access public classes to execute a function. Only the jars needed for an application can be included. For referencing, gt-opengis, gt-referencing and gt-metadata are required. Similarly to use Data, you need gt-api, gt-data, gt-main, jts, gt-opengis, gt-referencing, gt-opengis, gt-metadata.
GeoTools code is distributed under the GNU Lesser General Public License (LGPL) and can be used for commercial applications. If the GeoTools library itself is modified, then you have to publish the source code to those changes to the users of your application (or optionally submit it back to GeoTools).
GeoTools uses a modular architecture with high extensibility allowing additional functionality to be easily incorporated. Modules with a gold star rating indicating their quality (3 or more stars means great) is listed in http://docs.codehaus.org/display/GEOTOOLS/Module+Matrix.
GeoTools can be used to access GIS data in many file formats and spatial databases, filter and analyze data in terms of spatial and non-spatial attributes, compose and display maps with complex styling and work with an extensive range of map projections.
Geographic Information Systems (GIS) are expected to become more and more useful in IT (as a picture is worth thousand words) and GeoTools is a good way to start exploring it and applying it in reallife applications – as it supports a large number of formats and more standardized (though some of the APIs are not – though the public access API are expected to remain stable).