JTS Topology Suite
| Company type | Open-source software library |
|---|---|
| Industry | Software, Geographic information systems |
| Founded | 2000 |
| Founder | Martin Davis, Jonathan Aquino |
| Fate | Incorporated into LocationTech in late 2016 |
Area served | Worldwide |
Key people | Martin Davis (lead developer) |
| Products | JTS Topology Suite, GEOS (C++ version) |
| Owner | LocationTech |
| Parent | LocationTech |
| Website | locationtech |
JTS Topology Suite (commonly known as Java Topology Suite) is an open-source Java software library that provides an object-oriented framework for Euclidean planar linear geometry along with essential geometric operations. It functions as a core element in vector-based geomatics applications, including geographical information system platforms, and facilitates a broad range of computational geometry algorithms.
The suite implements the geometry model and interface defined by the OpenGIS Consortium’s Simple Features Specification for SQL, allowing the creation of spatially compliant software such as visualization tools, spatial query engines, and utilities for data validation, cleansing, and integration.
In addition to its Java implementation, critical JTS capabilities are accessible through a C++ version named GEOS, which supports multiple major operating systems via a C-style linking interface.
Until version 1.14, both JTS and GEOS were distributed under the terms of the GNU Lesser General Public License (LGPL). After becoming part of LocationTech, subsequent versions have been released under EPL/BSD licenses.
Scope
JTS encompasses the following features:
Geometry model
The framework includes classes representing points, linestrings, polygons, and collections thereof, with linear boundaries defined through vertex interpolation within two-dimensional Euclidean space. Vertices may optionally contain Z-coordinate values. Coordinate precision is managed through customizable precision models, while advanced geometric algorithms ensure robustness and accuracy regardless of precision settings.
Geometric functions
- Verification of topological correctness
- Calculations of area and distance
- Spatial predicate evaluation based on the Egenhofer DE-9IM framework
- Overlay operations such as intersection, difference, union, and symmetric difference
- Computation of buffers featuring multiple cap and join styles
- Generation of Convex hull shapes
- Geometric simplification using the Ramer–Douglas–Peucker algorithm
- Procedures for geometric densification
- Support for linear referencing
- Reduction of coordinate precision
- Execution of Delaunay triangulation including constrained variants
- Creation of Voronoi diagrams
- Calculation of the Smallest enclosing rectangle
- Measurement of discrete Hausdorff distance
Spatial structures and algorithms
- Reliable line segment intersection detection
- Efficient handling of line arrangement intersections
- Fast point-in-polygon determination
- Implementation of spatial indexing structures such as quadtree and STR-tree
- Management of planar graph data structures and related algorithms
I/O capabilities
History
The initial development funding for JTS commenced in autumn 2000 through support from GeoConnections and the Government of British Columbia, following a proposal by Mark Sondheim and David Skea. The project’s development was spearheaded by Martin Davis (responsible for software design and serving as lead developer) alongside Jonathan Aquino at Vivid Solutions. Since that time, Martin Davis has independently maintained JTS. In late 2016, JTS was incorporated into LocationTech’s portfolio.
Projects utilizing JTS
- GeoServer
- GeoTools
- OpenJUMP along with its derivatives
- uDig
- gvSIG
- Batik
- Hibernate Spatial
- Whitebox Geospatial Analysis Tools
Supported Platforms
JTS is implemented in Java JDK 1.4 and remains fully compatible with subsequent JDK releases. It is a completely pure Java library.
The JTS framework has been adapted for the .NET Framework under the name Net Topology Suite.
Additionally, a portion of JTS has been translated into C++, accessible through C APIs, forming the GEOS library.
GEOS: The C/C++ Adaptation of JTS
GEOS represents the C/C++ adaptation of selected JTS functionalities, acting as a fundamental element for native compiled applications across Linux, macOS, and Windows environments. In contrast to Java-based libraries that depend on the JVM and lack universal cross-language linking, GEOS facilitates direct integration into native runtime systems on leading operating systems without the need for complicated bridging technologies such as JNI.
Software employing GEOS
GEOS is embedded within numerous key software packages and, by supplying standards-compliant geometry classes to GDAL—a broadly adopted GIS engine—functions as a vital geometry module in many platforms:
- GDAL - OGR for handling raster and vector datasets
- QGIS - Open source, cross-platform desktop GIS application
- PostGIS - Spatial data types and operations extension for PostgreSQL
- GeoDjango – GIS capabilities integrated with Django-based databases
- Google Earth – Virtual globe and global imagery software
- GRASS - Comprehensive GIS toolkit and application suite
- MapServer - Open source platform for spatial web applications
- World Wind Java – NASA’s open source virtual globe technology
- Orfeo toolbox – Library dedicated to satellite image processing
- R – Statistical computing environment with spatial data support
- SAGA GIS – Open source, multi-platform GIS software
Related Topics
- DE-9IM, a model for topological relations
- Geospatial topology