simplify-geojson-visvalingam
TypeScript icon, indicating that this package has built-in type declarations

1.3.4 • Public • Published

Version Badge

simplify-geojson-visvalingam

Takes a GeoJSON object and returns a simplified version. Uses the Visvalingam–Wyatt algorithm with additional logic for stable simplification and preservation of common boundaries.

Install

npm i --save simplify-geojson-visvalingam

Parameters

  • geojson GeoJSON object to be simplified, should extends GeoJsonObject in TypeScript

  • options Object Optional parameters (optional, default {}), should be of type SimplifyOptions in TypeScript

    • options.tolerance number simplification tolerance, the minimum Cartesian area of ​​a triangle formed by a point and its two neighbors to preserve that point (optional, default 0)
    • options.fraction number the fraction of all points to be removed (optional, default 0)
    • options.mutate boolean allows GeoJSON input to be mutated (optional, default true)

tolerance and fraction can be used together to make the simplification satisfy both options, but if neither is provided, the geojson will remain unsimplified

Features and limitations

  • Provides stable simplification and a better level of visual detail than the Ramer–Douglas–Peucker algorithm
  • Will remove common points of different geometries simultaneously to preserve common boundaries
  • Will leave valid empty Feature objects even if all their geometry will be removed, the GeoJSON structure will remain intact
  • The start and end point of the LineString objects will never be removed

Usage

JS

import simplify from 'simplify-geojson-visvalingam'

// CommonJS
// const simplify = require('simplify-geojson-visvalingam').default

const geojson = {
  "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]
    ]
  ]
}
const options = {
  tolerance: 0.00008, // remove all points that form a triangle with a smaller Cartesian area
}
const result = simplify(geojson, options)

TS

import { type Polygon } from 'geojson'
import simplify, { type SimplifyOptions } from 'simplify-geojson-visvalingam'

const geojson: Polygon = {
  "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]
    ]
  ]
}
const options: SimplifyOptions  = {
  fraction: 0.5, // remove 50% of all points
}
const result = simplify(geojson, options)

Package Sidebar

Install

npm i simplify-geojson-visvalingam

Weekly Downloads

0

Version

1.3.4

License

MIT

Unpacked Size

77.8 kB

Total Files

9

Last publish

Collaborators

  • iamaleko