What is @turf/simplify?
@turf/simplify is a module within the Turf.js library that provides functionality to simplify GeoJSON geometries. It uses the Ramer-Douglas-Peucker algorithm to reduce the number of points in a geometry while retaining its overall shape. This can be useful for reducing the complexity of geometries for faster processing and rendering.
What are @turf/simplify's main functionalities?
Simplify a LineString
This feature allows you to simplify a LineString geometry. The `tolerance` parameter controls the level of simplification, and `highQuality` determines whether to use a slower, higher-quality algorithm.
const turf = require('@turf/turf');
const line = turf.lineString([[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5]]);
const simplified = turf.simplify(line, {tolerance: 0.01, highQuality: false});
console.log(simplified);
Simplify a Polygon
This feature allows you to simplify a Polygon geometry. Similar to the LineString example, you can control the simplification level with the `tolerance` parameter and choose between a faster or higher-quality algorithm with `highQuality`.
const turf = require('@turf/turf');
const polygon = turf.polygon([[[0, 0], [1, 1], [2, 2], [3, 3], [4, 4], [5, 5], [0, 0]]]);
const simplified = turf.simplify(polygon, {tolerance: 0.01, highQuality: false});
console.log(simplified);
Other packages similar to @turf/simplify
simplify-js
simplify-js is a high-performance JavaScript library for simplifying 2D geometries. It also uses the Ramer-Douglas-Peucker algorithm and is highly efficient for client-side applications. Compared to @turf/simplify, simplify-js is more focused on 2D geometries and does not support GeoJSON directly.
topojson-simplify
topojson-simplify is a module within the TopoJSON library that provides tools for simplifying TopoJSON objects. It uses a different approach compared to @turf/simplify, focusing on converting GeoJSON to TopoJSON and then simplifying the topology. This can result in more efficient storage and transmission of geographic data.
@turf/simplify
simplify
Takes a LineString or Polygon and returns a simplified version. Internally uses simplify-js to perform simplification.
Parameters
Examples
var feature = {
"type": "Feature",
"properties": {},
"geometry": {
"type": "Polygon",
"coordinates": [[
[-70.603637, -33.399918],
[-70.614624, -33.395332],
[-70.639343, -33.392466],
[-70.659942, -33.394759],
[-70.683975, -33.404504],
[-70.697021, -33.419406],
[-70.701141, -33.434306],
[-70.700454, -33.446339],
[-70.694274, -33.458369],
[-70.682601, -33.465816],
[-70.668869, -33.472117],
[-70.646209, -33.473835],
[-70.624923, -33.472117],
[-70.609817, -33.468107],
[-70.595397, -33.458369],
[-70.587158, -33.442901],
[-70.587158, -33.426283],
[-70.590591, -33.414248],
[-70.594711, -33.406224],
[-70.603637, -33.399918]
]]
}
};
var tolerance = 0.01;
var simplified = turf.simplify(
feature, tolerance, false);
Returns (Feature<(LineString | Polygon | MultiLineString | MultiPolygon)> | FeatureCollection | GeometryCollection) a simplified feature
This module is part of the Turfjs project, an open source
module collection dedicated to geographic algorithms. It is maintained in the
Turfjs/turf repository, where you can create
PRs and issues.
Installation
Install this module individually:
$ npm install @turf/simplify
Or install the Turf module that includes it as a function:
$ npm install @turf/turf