Original author(s) | Martin Davis |
---|---|
Stable release |
1.14 / September 23, 2015
|
Written in | Java |
Platform | Java |
Type | Library |
License | GNU Lesser General Public License |
Website | github |
JTS Topology Suite (Java Topology Suite) is an open source Java software library that provides an object model for Euclidean planar linear geometry together with a set of fundamental geometric functions. JTS is primarily intended to be used as a core component of vector-based geomatics software such as geographical information systems. It can also be used as a general-purpose library providing algorithms in computational geometry.
JTS implements the geometry model and API defined in the OpenGIS Consortium Simple Features Specification for SQL.
JTS defines a standards-compliant geometry system for building spatial applications; examples include viewers, spatial query processors, and tools for performing data validation, cleaning and integration. In addition to the Java library, the foundations of JTS and selected functions are maintained in a C++ port, for use in C-style linking on all major operating systems, in the form of the GEOS software library.
Up to JTS 1.14, and the GEOS port, are published under the GNU Lesser General Public License (LGPL).
With the LocationTech adoption future releases will be under the EPL/BSD licenses.
JTS provides the following functionality:
Geometry classes support modelling points, linestrings, polygons, and collections. Geometries are linear, in the sense that boundaries are implicitly defined by linear interpolation between vertices. Geometries are embedded in the 2-dimensional Euclidean plane. Geometry vertices may also carry a Z value.
User-defined precision models are supported for geometry coordinates. Computation is performed using algorithms which provide robust geometric computation under all precision models.
GEOS is the C/C++ port of a subset of JTS and selected functions. GEOS is noteworthy as a foundation component in a software ecosystem of native, compiled executable binaries on Linux, Mac and Windows platforms. Due to the runtime construction of Java and the Java Virtual Machine (JVM), code libraries that are written in Java are basically not usable as libraries from a standardized cross-linking environment (often built from C). Linux, Microsoft Windows and the BSD family, including Mac OSX, use a linking structure that enables libraries from various languages to be integrated (linked) into a native runtime executable. Java, by design, does not participate in this interoperability without unusual measures (JNI).