geo-registry

Densify

Adds vertices along lines and polygon outlines so that no segment is longer than a given distance.

Pitfall. In a geographic CRS the distance is in degrees unless the engine densifies along the geodesic.
Pitfall. Engines differ on whether new vertices split each segment into equal parts or sit at the exact distance from its start, leaving a shorter last piece.
About this operation
Also called segmentize, add vertices, Densify by interval, Densify (Editing)
Group vector/geometry
Checks crs.measure
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
distance length yes Not stated Not stated Longest segment allowed.
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
Output output vector Not stated Not stated

In each engine

Engine Tool Parameters Differences
apache-sedona sedona.sql.ST_Segmentize
  • distance → maxSegmentLength
  • unit always crs-units
  • layer → geometry
  • A Spark SQL function: arguments are columns or column names, run over a Spark DataFrame.
gdal gdal vector segmentize
  • distance → max-length
  • unit always crs-units
  • layer → input
  • output → output
None noted
geopandas geopandas.GeoSeries.segmentize
  • distance → max_segment_length
  • unit always crs-units
  • Splits each segment into equal parts no longer than the distance.
grass v.split
  • distance → length
  • unit → units : m = meters; ft = feet; us-ft = surveyfeet; km = kilometers; mi = miles
  • layer → input
  • output → output
  • v.split cuts lines into pieces; this mapping sets flag n, which adds the vertices without cutting. Flag f instead makes the pieces exactly the given length, except the last.
  • vertices instead sets the most vertices a segment may have.
Preset: {"flag_n":true}
postgis st_segmentize
  • distance → #2
  • unit always crs-units. CRS units on geometry; metres on geography, along the geodesic.
  • layer → #1
  • Splits each segment into equal parts no longer than the distance.
qgis native:densifygeometriesgivenaninterval
  • distance → INTERVAL
  • unit always crs-units
  • layer → INPUT
  • output → OUTPUT
  • Splits each segment into one more piece than needed when its length is an exact multiple of the interval (a 100 m segment at 10 m gets 11 pieces of 9.09 m).
  • native:densifygeometries adds a fixed number of vertices to every segment instead.
sf sf::st_segmentize
  • distance → dfMaxLength
  • unit always crs-units. Longitude/latitude data is densified along great circles with the distance in metres.
  • layer → x
None noted
shapely shapely.segmentize
  • distance → max_segment_length
  • unit always crs-units
  • layer → geometry
  • Splits each segment into equal parts no longer than the distance.
terra terra::densify
  • distance → interval
  • unit always crs-units. Longitude/latitude data is densified along the geodesic with the interval in metres.
  • layer → x
  • equalize (on by default) spaces the new vertices evenly.