Apply Ramer–Douglas–Peucker line simplification to GeoJSON features or feature collections in JS or on the CLI. This module uses https://github.com/seabre/simplify-geometry for the simplification and wraps it in a interface for easily simplifying GeoJSON.
npm install simplify-geojson -g cat data.geojson | simplify-geojson -t 0.01
Tolerance is specified by either
--tolerance and is a number in degrees (e.g. lat/lon distance). 1 degree is roughly equivalent to 69 miles. the default is 0.001, which is around a city block long.
var simplify = require('simplify-geojson') var simplified = simplify(geojson, tolerance)
geojson can be any of the following:
- Feature with a LineString
- Feature with a MultiLineString
- Feature with a Polygon
- Feature with a MultiPolygon
- FeatureCollection with any of the above
All segments in any of the supported types will be simplified (including holes in polygons, for instance).
Convert a CSV with lat/lon columns into geojson, then simplify that geojson, then open it in geojson.io (CSV is from my GPS logger and was my bike commute this morning):
npm install simplify-geojson geojsonio-cli csv2geojson -g curl https://raw.github.com/maxogden/simplify-geojson/master/test-data/oakland-route.csv | \ csv2geojson --lat "LATITUDE N/S" --lon "LONGITUDE E/W" --line true | \ simplify-geojson -t 0.001 | \ geojsonio
Simplify alaska's border outline and count the number of lines of the simplified geojson output (tweak
-t to see how it affects length):
curl https://rawgit.com/johan/world.geo.json/master/countries/USA/AK.geo.json | \ simplify-geojson -t 0.01 | \ wc -l