PostGIS
Name
ST_Segmentize — Return a modified geometry/geography having no segment longer than the given distance.
Synopsis
geometry +`*`+ST_Segmentize
*(`geometry `geom
, float
max_segment_length`
)`;
geography +`*`+ST_Segmentize
*(`geography `geog
, float
max_segment_length`
)`;
Description
Returns a modified geometry having no segment longer than the given
max_segment_length
. Distance computation is performed in 2d only.
For geometry, length units are in units of spatial reference. For
geography, units are in meters.
Availability: 1.2.2
Enhanced: 3.0.0 Segmentize geometry now uses equal length segments
Enhanced: 2.3.0 Segmentize geography now uses equal length segments
Enhanced: 2.1.0 support for geography was introduced.
Changed: 2.1.0 As a result of the introduction of geography support: The
construct SELECT ST_Segmentize('LINESTRING(1 2, 3 4)',0.5);
will
result in ambiguous function error. You need to have properly typed
object e.g. a geometry/geography column, use ST_GeomFromText,
ST_GeogFromText or
SELECT ST_Segmentize('LINESTRING(1 2, 3 4)'::geometry,0.5);
|
Examples
SELECT ST_AsText(ST_Segmentize(
ST_GeomFromText('MULTILINESTRING((-29 -27,-30 -29.7,-36 -31,-45 -33),(-45 -33,-46 -32))')
,5)
);
st_astext
--------------------------------------------------------------------------------------------------
MULTILINESTRING((-29 -27,-30 -29.7,-34.886615700134 -30.758766735029,-36 -31,
-40.8809353009198 -32.0846522890933,-45 -33),
(-45 -33,-46 -32))
(1 row)
SELECT ST_AsText(ST_Segmentize(ST_GeomFromText('POLYGON((-29 28, -30 40, -29 28))'),10));
st_astext
-----------------------
POLYGON((-29 28,-29.8304547985374 37.9654575824488,-30 40,-29.1695452014626 30.0345424175512,-29 28))
(1 row)