JTS User's Guide

Introduction

The is an API for processing linear geometry on the 2-dimensional Cartesian plane. It provides a complete and flexible set of classes for representing and manipulating 0, 1 and 2-dimensional linear geometry. 2-D linear geometry is used in many application areas, including:

The theory and algorithms underlying are drawn primarily from the large and well-researched field of computational geometry (CG). Computational Geometry is a deep, complex field, and much of the research is not easily accessible to the casual user. While it is possible to find implementations of the common algorithms, often they are not written against a complete, functional geometric model.... serves as an accessible, easy to understand repository of many common CG algorithsm and concepts, all implemented using a common geometry model.

The design of has the following goals:

The API provides numerous operations for manipulating and processing geometric objects. It also exposes the fundamental algorithms and data structures that are used to implement the geometric operations. These algorithms and data structures can form the building blocks of numerous other spatial algorithms. Finally, because the code is open-source, JTS can serve as a model for designing and implementing further spatial algorithms.

has been embedded in many different kinds of software, including:

The codebase is relatively Java-version independent. It runs in Java version 1.2, and can run in earlier versions with the addition of a few simple support classes. In addition, various versions of have been ported to other languages including C++ (as GEOS) and Microsoft's C# (as NTS ??).

References

Egenhofer
O'Rourke
Preparata & Shamos
STR tree
Samet - Quadtree
SoftSurfer
JUMP
OGC SFS
Douglas-Peucker
Yap or someone - Robustness
DeVilliers
Snap-Rounding