ST_MakeValid¶
Introduction: Given an invalid geometry, create a valid representation of the geometry.
Collapsed geometries are either converted to empty (keepCollapsed=false) or a valid geometry of lower dimension (keepCollapsed=true). Default is keepCollapsed=false.
Vertex order and ring orientation
ST_MakeValid may reorder coordinates or reverse polygon ring orientation, including for already-valid inputs.
To enforce a specific orientation after repair, use ST_ForcePolygonCCW or ST_ForcePolygonCW, for example ST_ForcePolygonCCW(ST_MakeValid(geom)).
These functions enforce ring orientation; they are not guaranteed to restore the original vertex order or starting vertex.
Format: ST_MakeValid (A:geometry)
Format: ST_MakeValid (A:geometry, keepCollapsed:Boolean)
Return type: Geometry
SQL example:
WITH linestring AS (
SELECT ST_GeomFromWKT('LINESTRING(1 1, 1 1)') AS geom
) SELECT ST_MakeValid(geom), ST_MakeValid(geom, true) FROM linestring
Result:
+------------------+------------------------+
|st_makevalid(geom)|st_makevalid(geom, true)|
+------------------+------------------------+
| LINESTRING EMPTY| POINT (1 1)|
+------------------+------------------------+
Note
In Sedona up to and including version 1.2 the behaviour of ST_MakeValid was different. Be sure to check you code when upgrading. The previous implementation only worked for (multi)polygons and had a different interpretation of the second, boolean, argument. It would also sometimes return multiple geometries for a single geometry input.