geo-registry

Snap

Moves vertices of each feature onto nearby vertices or edges of a reference layer, within a tolerance.

Pitfall. Engines differ on whether they snap to the reference's vertices only or also to its edges, and on whether they add vertices.
Pitfall. A tolerance larger than the features' own detail can collapse them or make them invalid.
About this operation
Also called snap geometries, Snap (Editing), snap to layer, align vertices
Group vector/geometry
Checks crs.agreement, crs.measure, geometry.valid
Pitfalls 2 listed above
Columbus tool Not stated
Notes Not stated
Status active
Broader Not stated
Narrower Not stated
Related

Parameters

Name Type Required Default Values Note
tolerance length yes Not stated Not stated Largest distance a vertex may move.
unit enum yes Not stated m, ft, us-ft, km, mi Not stated

Inputs and outputs

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

In each engine

Engine Tool Parameters Differences
apache-sedona sedona.sql.ST_Snap
  • tolerance → tolerance
  • unit always crs-units
  • layer → input
  • reference → reference
  • A Spark SQL function: arguments are columns or column names, run over a Spark DataFrame.
geopandas geopandas.GeoSeries.snap
  • tolerance → tolerance
  • unit always crs-units
  • reference → other
  • other is one geometry or a GeoSeries matched row by row (align), not a whole reference layer.
postgis st_snap
  • tolerance → #3
  • unit always crs-units
  • layer → #1
  • reference → #2
  • One geometry against one reference geometry: ST_Collect the reference layer first.
qgis native:snapgeometries
  • tolerance → TOLERANCE
  • unit always crs-units
  • layer → INPUT
  • reference → REFERENCE_LAYER
  • output → OUTPUT
  • BEHAVIOR (required; this mapping sets 0) chooses how: prefer nodes and add vertices (0), prefer closest point, nodes only, end points only, and more.
Preset: {"BEHAVIOR":0}
sf sf::st_snap
  • tolerance → tolerance
  • unit always crs-units
  • layer → x
  • reference → y
None noted
shapely shapely.snap
  • tolerance → tolerance
  • unit always crs-units
  • layer → geometry
  • reference → reference
  • Snaps to the reference's vertices and edges (GEOS); one geometry against one reference geometry.
terra terra::snap
  • tolerance → tolerance
  • unit always crs-units
  • layer → x
  • reference → y
  • Without y, snaps the layer's own features to each other.