GeoTools 2.2.2 review

by on

Geotools is an open source Java GIS toolkit for developing standards compliant solutions

License: GPL (GNU General Public License)
File size: 0K
Developer: James Macgill
0 stars award from

Geotools is an open source Java GIS toolkit for developing standards compliant solutions. GeoTools project provides an implementation of Open Geospatial Consortium (OGC) specifications as they are developed.

Geotools maintains an open development process, with public collaboration on new ideas . Project communication is open to all , and we welcome new contributions .

Here are some key features of "GeoTools":
Data Formats

Geotools tries to support as many data formats as possible.

The DataStore interface is used to access vector data.


Data formats supported are:

Shapefile - an ESRI shapefile (R/W)
GML - Geography Markup Language (R)
PostGIS - geometric objects for PostgreSQL (R)
Oracle Spatial - Oracle's extension for spatial data (R)
ArcSDE - ESRI's middleware for spatial databases (R)
MySQL - support for the new geometry types
GeoMedia - an Intergraph format (R)
Tiger - Topologically Integrated Geographic Encoding and Referencing developed at the US Census Bureau (R)
VPF - Vector Product Format, a data interchange format (R)

Features and Geometries

Features are used to represent basic geographic elements in a vector system. These are composed of both geometries and attributes.

Java Topology Suite (JTS) is used as the current geometry model. This library is an implementation of the Simple Features Specification for SQL, It also provides in memory spatial indexing support and robust topologic operations, though they are not used much at present in the codebase.

If you're willing to add some vector computation operations (for example, overlay) please step up: we need someone willing to work on an operation API and the associated implementations. See the Operations API page for more information.

Grid coverages

A grid coverage provides support for the raster data format, that is, a georeferenced grid of numbers that can be used to represent data ranging from satellite images, to digital elevation models, noise distribution and so on. See also the OpenGIS specification about grid coverages,

Grid coverages are based on the JAI library which provides support for data management, presentation, image data format access, tiling support, a framework for raster data processing with lots of predefined operators.

Coordinate Transformation

The cts-coordtrans (CTS) module implements a subset of the OGC's Coordinate Transformation Services specification, It provides an implementation for general positioning, coordinate reference systems, and coordinate transformations.

Types of transformations provided include datum shifts, map projections (Mercator, Transverse Mercator, Lambert Conformal Conic, Albers Equal Area Conic, Stereographic, Orthographic) and others.


Geotools has two renderer implementations:

LiteRenderer - a 'stateless' renderer, particularly useful in server-side environments. Main features: code simplicity and low memory footprint, but it's faster than J2D only for the first map rendering.
J2D - a 'stateful' renderer with optimizations for update rate, good for interactive client-side displays. It's way more complex but supports on the fly coordinate reprojection, fast update by intelligent data decimation and memory caching.


Allows for symbolizing (colour, line thickness, opacity, etc.) of datasets. This is closely modeled on, and fully supporting, the OpenGIS Styled Layer Descriptor specification, These can be stored as XML documents.
Filter Encodings

Filters provide a way to specify a subset of features to operate on. This supports both attribute and spatial constraints and a method of storing these as XML documents.

This is an implementation of the Filter Encoding specification,


Allows the creation of graphs and networks based on MultiLineStrings or arbitray Geometries and Spatial Relationships. Graphs can be walked using the visitor pattern. Common walks, such as shortest route, are already available. Other walks may also be defined by the user.

This provides a method to validate features base on different constraints. Allows the definition of test suites based on validaiton plug-ins. Tests suites (and indeed validaiton plug-ins) are configured using xml files.

A working validation Processor is provided as a demo.

To use the geotools libraries you will need:
Java 1.4.x or higher.
The Java Advanced Imaging Libraries (JAI)
The Java Advanced Imaging Image I/O Tools

The JAI and the JAI I/O Tools are standard extensions to Java created by SUN.
They have versions specific to different platforms so we cannot distribute them
as part of the release.

What's New in This Release:
[GEOT-469] - Shapefile optimized getBounds never called
[GEOT-474] - Shapefile updates
[GEOT-604] - when creating a shapefile using CreateSchema no .prj file is created.
[GEOT-881] - if shapefile is modified by another program indices can be out of sync
[GEOT-934] - OracleFeatureWriter incorrectly treats update statement
[GEOT-961] - NullFidFilter returns 1 column with name "null"
[GEOT-967] - DefaultFidMapperFactory closes a connection when it should not
[GEOT-977] - Doesn't take into account the layer's Query
[GEOT-978] - Indexed shapefile getReader() will return too few attributes to satisfy a filter
[GEOT-985] - Dependency on dummy-api should be "provided", not compile
[GEOT-991] - Coordinate transformations are tested with a too high tolerance value
[GEOT-992] - SLDParser incorrectly parses Rule Filter element
[GEOT-996] - VPFFile/variable length records
[GEOT-998] - ArrayIndexOutOfBoundException while trying to use graphic stroke
[GEOT-1002] - JDBCFeatureSource count method doesn't allow Filter.NONE
[GEOT-1009] - shapefile renderer sometime misses lines and points
[GEOT-1010] - caches wrong crs
[GEOT-1014] - Too many open files exceptions stress testing Geoserver with indexed shapefile
[GEOT-1019] - AttributeTypeFactory.newAttributeType( name, type, isNillable, fieldLength) creates a Restriction Filter that throws NullPointer exception if used.
[GEOT-1020] - Geometry filter is encoded properly only if the attribute expression is on the left side
[GEOT-1022] - Postgis datastore not working if schema informatin is not available in geometry_columns
[GEOT-1034] - Postgis datastore not returning bounds for queries using Filter.NONE
[GEOT-1035] - Oracle datastore ignores namespace parameter
[GEOT-1006] - ArcSDE layer bounding box query time speedup
[GEOT-1007] - ArcSDE supports 'LIKE' queries
[GEOT-1024] - Shapefile getCount() is extremely inefficient
[GEOT-1036] - indexed shapefile getBounds can be optimized for FidFilters
[GEOT-1039] - add a isIndexed method to IndexedShapefile datastore so that clients can know whether it needs to run the indexing
[GEOT-1049] - Add a lenience parameter so that feature parsing will do its best to fit the data into features rather than just drop features.
[GEOT-1023] - LabelCacheDefault patch to fix AffineTransform usage

GeoTools 2.2.2 keywords