geo-registry

Simplify

Removes vertices from lines and polygon outlines within a tolerance, keeping their overall shape.

Pitfall. Simplifying polygons one at a time can open gaps and overlaps between neighbours that shared an edge.
About this operation
Also called Simplify Line, Simplify Polygon, generalize, Douglas-Peucker
Group vector/geometry
Checks crs.measure, geometry.valid
Pitfalls 1 listed above
Columbus tool vector_op · simplify
Notes Not stated
Status active
Broader Not stated
Narrower Not stated
Related Not stated

Parameters

Name Type Required Default Values Note
tolerance length yes Not stated Not stated Not stated
unit enum yes Not stated m, ft, us-ft, km, mi Not stated
preserve_topology boolean no yes Not stated Avoid creating invalid or collapsed shapes.

Inputs and outputs

Direction Name Type Geometry Note
Input layer vector Not stated Not stated
Output output vector Not stated Not stated

In each engine

Engine Tool Parameters Differences
apache-sedona sedona.sql.ST_Simplify
  • tolerance → distance_tolerance
  • unit always crs-units
  • preserve_topology always no. Use ST_SimplifyPreserveTopology.
  • layer → geometry
  • A Spark SQL function: arguments are columns or column names, run over a Spark DataFrame.
apache-sedona sedona.sql.ST_SimplifyPreserveTopology
  • tolerance → distance_tolerance
  • unit always crs-units
  • preserve_topology always yes. Use ST_Simplify to simplify without preserving topology.
  • layer → geometry
  • A Spark SQL function: arguments are columns or column names, run over a Spark DataFrame.
gdal gdal vector simplify
  • tolerance → tolerance
  • unit always crs-units. Tolerance is in the layer's CRS units; convert it first.
  • preserve_topology always yes
  • layer → input
  • output → output
None noted
geopandas geopandas.GeoSeries.simplify
  • tolerance → tolerance
  • unit always crs-units. Tolerance is in the series' CRS units; convert it first.
  • preserve_topology → preserve_topology
None noted
grass v.generalize
  • tolerance → threshold
  • unit always crs-units. Threshold is in the map units of the GRASS project.
  • layer → input
  • output → output
  • Offers many other methods (reduction, Lang, Reumann-Witkam, smoothing); this mapping uses Douglas-Peucker.
Preset: {"method":"douglas"}
postgis st_simplify
  • tolerance → #2
  • unit always crs-units
  • preserve_topology always no. Use ST_SimplifyPreserveTopology to keep topology.
  • layer → #1
  • Can return invalid or collapsed geometries; the optional third argument keeps collapsed ones.
postgis st_simplifypreservetopology
  • tolerance → #2
  • unit always crs-units
  • preserve_topology always yes. Use ST_Simplify when topology need not be kept.
  • layer → #1
None noted
qgis native:simplifygeometries
  • tolerance → TOLERANCE
  • unit always crs-units. Tolerance is in the layer's CRS units; convert it first.
  • layer → INPUT
  • output → OUTPUT
  • METHOD also offers snap-to-grid and Visvalingam (area) simplification; this mapping uses Douglas-Peucker.
Preset: {"METHOD":0}
sf sf::st_simplify
  • tolerance → dTolerance
  • unit always crs-units. Projected data: CRS units. Longitude/latitude data with sf_use_s2() on: metres (S2's simplify).
  • preserve_topology → preserveTopology
  • layer → x
  • preserveTopology has no default; it is ignored for longitude/latitude data simplified through S2.
shapely shapely.simplify
  • tolerance → tolerance
  • unit always crs-units. Shapely has no CRS; tolerance is in the coordinates' units.
  • preserve_topology → preserve_topology
  • layer → geometry
None noted
terra terra::simplifyGeom
  • tolerance → tolerance
  • unit always crs-units
  • preserve_topology → preserveTopology
  • layer → x
  • Repairs invalid results by default (makeValid = TRUE).
turf-js turf.simplify
  • tolerance → options.tolerance
  • unit always crs-units. The tolerance is in degrees.
  • preserve_topology always no
  • layer → geojson
  • tolerance defaults to 1 (degree); highQuality uses the slower full Douglas-Peucker without radial-distance prefiltering.
  • Turf works on GeoJSON in longitude/latitude (WGS 84); data in another CRS must be reprojected first.