- Categories:
ST_SIMPLIFY¶
Given an input GEOGRAPHY object that represents a line or polygon, returns a simpler approximation of the object. The function identifies and removes selected vertices, resulting in a similar object that has fewer vertices.
For example, if the input object is a polygon with 50 vertices, ST_SIMPLIFY can return a simpler polygon with only 20 of those vertices.
When simplifying an object, the function removes a vertex only if the distance between that vertex and the edge resulting from the removal of that vertex is within the specified tolerance.
Syntax¶
ST_SIMPLIFY( <geography_expression>, <tolerance> [ , <preserve_collapsed> ] )
Arguments¶
Required:
geography_expression
The GEOGRAPHY object to simplify.
Depending on the type of the GEOGRAPHY object, ST_SIMPLIFY has the following effect:
Type of Object
Effect of ST_SIMPLIFY
LineString, MultiLineString, Polygon, or MultiPolygon
ST_SIMPLIFY applies the simplification algorithm
Point or MultiPoint
ST_SIMPLIFY has no effect.
GeometryCollection or FeatureCollection
ST_SIMPLIFY applies the simplification algorithm to each object in the collection.
tolerance
The maximum distance in meters between a vertex and the edge resulting from the removal of the vertex. If the distance exceeds this tolerance for a vertex, ST_SIMPLIFY keeps that vertex in the simplified object.
Optional:
preserve_collapsed
If
TRUE
, retains objects that would otherwise be too small given the tolerance.For example, when
preserve_collapsed
isFALSE
andtolerance
is10
(meters), a 1m long line is reduced to a point in the simplified object. Whenpreserve_collapsed
isTRUE
, the line is preserved in the simplified object.Default:
FALSE
.
Returns¶
The function returns a value of type GEOGRAPHY.
Examples¶
The examples in this section display output in WKT format:
alter session set GEOGRAPHY_OUTPUT_FORMAT='WKT';
The following example returns a simplified LineString that has fewer vertices than the original LineString. In the simplified object, a vertex is omitted if the distance between the vertex and the edge that replaces the vertex is less than 1000 meters.
SELECT ST_SIMPLIFY( TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), 1000); +----------------------------------------------------------------------------------------------------+ | ST_SIMPLIFY( | | TO_GEOGRAPHY('LINESTRING(-122.306067 37.55412, -122.32328 37.561801, -122.325879 37.586852)'), | | 1000) | |----------------------------------------------------------------------------------------------------| | LINESTRING(-122.306067 37.55412,-122.325879 37.586852) | +----------------------------------------------------------------------------------------------------+