名稱

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)