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 GeoJSON object and returns a simplified version. Internally uses
simplify-js to perform simplification using the Ramer-Douglas-Peucker algorithm.
Parameters
geojson
GeoJSON object to be simplifiedoptions
Object Optional parameters (optional, default {}
)
options.tolerance
number simplification tolerance (optional, default 1
)options.highQuality
boolean whether or not to spend more time to create a higher-quality simplification with a different algorithm (optional, default false
)options.mutate
boolean allows GeoJSON input to be mutated (significant performance increase if true) (optional, default false
)
Examples
var geojson = turf.polygon([[
[-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 options = {tolerance: 0.01, highQuality: false};
var simplified = turf.simplify(geojson, options);
var addToMap = [geojson, simplified]
Returns GeoJSON a simplified GeoJSON
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