Skip to content
JavaScript Topology Suite
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
contrib/jsts-bundler
doc New jsdoc config Nov 26, 2017
src
test Fix LineMerger (#374) Feb 3, 2019
testxml
validationsuite Small improvements to validation suite Feb 14, 2016
.babelrc ECMAScript 2015 classes refactor Sep 5, 2018
.gitignore Ignore temp output Jul 4, 2018
.npmignore Exclude .babelrc from npm publish (#293) Oct 31, 2016
.travis.yml
LICENSE_EDLv1.txt Reflect license change from upstream Apr 8, 2016
LICENSE_EPLv1.txt
LICENSE_ES6_COLLECTIONS.txt
README.md
license.txt
npm_dist.sh Minor post release updates Sep 15, 2018
package.json
rollup.config.es6.js Add missing rollup dependencies for ES6; update rollup; add explicit … Feb 1, 2017
rollup.config.js ECMAScript 2015 classes refactor Sep 5, 2018
yarn.lock

README.md

JSTS

Build Status codecov

JSTS is an ECMAScript library of spatial predicates and functions for processing geometry conforming to the Simple Features Specification for SQL published by the Open Geospatial Consortium. JSTS is also a port of the well established Java library JTS.

The primary goal of the project is to provide web mapping applications with a complete library for processing and analyzing simple geometries but JSTS can also be used as a free standing geometry library.

JSTS was made using automatic translation of the original JTS Java source via AST to AST transformation preserving the JTS API, except for the I/O related classes which has been selectively and manually ported with support for WKT, GeoJSON and OpenLayers 3+.

A Google group is available for discussions.

A port of JTS Validation Suite provides additional tests.

Basic functionality together with OpenLayers is demonstrated here.

Browser or Node.js use

An ES5 (the most common JavaScript variant) compatible build for browsers is available here.

An ES6+ compatible build for browsers is available here.

Including the above build as a script will import a global object jsts exposing similar public API as org.locationtech.jts in the JTS API.

For Node.js, install using npm install jsts after which require('jsts') will import an object with the same properties as jsts in the browser build.

I/O related classes in JTS had to be manually ported. From the original formats WKT and GeoJSON are supported. A direct reader/writer for OpenLayers 3+ geometries exist. See the API documentation for these specific classes.

ES6 modules use

As of version 1.4.0 it's possible to depend on the source modules directly using the NPM package. For most environments it will require a bundler like Rollup to work. topolis serves as an example project depending on JSTS in this way. The example page also exists in a version that loads JSTS as modules in supporting browsers .

Caveats

  • In a few cases Java overloading cannot be correctly translated to JavaScript. One such case is createMultiPoint in GeometryFactory which only works with Point[] arguments.
  • In some cases you might get a TopologyException thrown as an Error. This is expected if a calculation fails due to precision issues. To resolve this issue try reducing precision in the input and at the same time make sure the input is valid as defined by the OGC Simple Features specification. To reduce precision GeometryPrecisionReducer can be used.
  • Shortcut methods on Geometry from upstream API are not available (.buffer, .intersects and more) unless using the bundled ES5 version that has these monkey patched in. The shortcut methods have been removed because they cause difficult circular dependencies. You can find the equivalent methods on the appropriate operation class.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.