名称

ST_FilterByM — 根据 M 值移除顶点

概要

geometry ST_FilterByM(geometry geom, double precision min, double precision max = null, boolean returnM = false);

描述

根据顶点的 M 值过滤掉顶点。返回一个仅包含 M 值大于或等于最小值且小于或等于最大值的顶点的几何图形。如果省略了最大值参数,则只考虑最小值。如果省略了第四个参数,则结果几何图形中将不包含 M 值。如果结果几何图形的顶点数少于其几何图形类型所需的顶点数,则将返回空几何图形。在几何图形集合中,顶点数不足的几何图形将被静默地忽略。

此函数主要用于与 ST_SetEffectiveArea 结合使用。ST_EffectiveArea 在顶点的 M 值中设置顶点的有效区域。然后,可以使用 ST_FilterByM 获取几何图形的简化版本,而无需任何计算,只需通过过滤即可。

[Note]

当满足条件的顶点数不足时,ST_SimplifyVW 返回的结果与 ST_FilterByM 不同。ST_SimplifyVW 返回具有足够顶点的几何图形,而 ST_FilterByM 返回空几何图形。

[Note]

请注意,返回的几何图形可能无效。

[Note]

此函数返回所有维度,包括 Z 值和 M 值。

可用性:2.5.0

示例

过滤一条线串

SELECT ST_AsText(ST_FilterByM(geom,30)) simplified
FROM (SELECT  ST_SetEffectiveArea('LINESTRING(5 2, 3 8, 6 20, 7 25, 10 10)'::geometry) geom) As foo;

result

         simplified
----------------------------
 LINESTRING(5 2,7 25,10 10)
                

另请参见

ST_SetEffectiveArea, ST_SimplifyVW