ST_FilterByM — M 値に基づいて頂点を削除します。
geometry ST_FilterByM(geometry geom, double precision min, double precision max = null, boolean returnM = false);
M 値に基づいた頂点ポイントのフィルタリングを行います。返されるジオメトリーは最小値(min 値) 以上かつ最大値(max 値) 以下の M 値を持つポイントだけでできています。最大値の引数が指定されていない場合には、最小値のみ考慮されます。第 4引数が指定されていない場合には、M 値は結果ジオメトリーに存在しません。結果ジオメトリーの頂点ポイントの数が、ジオメトリーを構成するに必要な数に達しない場合には、空ジオメトリーが返されます。ジオメトリーコレクション内の、十分なポイントを持たないジオメトリー要素は消えます。
この関数は主に ST_SetEffectiveArea との併用を意図しています。ST_SetEffectiveArea は頂点の有効面積を M 値に設定します。ST_FilterByM によるフィルタリングだけで、他の計算なしに簡略化されたジオメトリーを得られます。
|
|
|
ポイント数が基準を満たすのに十分でない時の ST_SimplifyVW の返り値と ST_FilterByMの返り値とで違いがあります。ST_FilterByM は空ジオメトリーを返し、ST_SimplifyVW は十分なポイントを持つジオメトリーを返します。 |
|
|
|
返されるジオメトリーは不正である場合があることに注意して下さい。 |
|
|
|
この関数は全ての次元を返し、Z 値も M 値も残ります。 |
Availability: 2.5.0
フィルタリングされたラインストリング
SELECT ST_FilterByM(geom, 30) simplified
FROM (SELECT ST_SetEffectiveArea('LINESTRING(5 2,3 8,6 20,7 25,10 10)'::geometry) geom) As foo;
LINESTRING(5 2,7 25,10 10)