曲線を含むジオメトリを、その線形表現に変換します。具体的には、CircularString を LineString に、または CurvedPolygon を Polygon に変換します。この関数は、下流のツールまたはシステムが円形ジオメトリ型(circular geometry types)をサポートしていない場合に使用します。
各曲線セグメントは、デフォルトで各象限(quarter circle)を 32 セグメントに分割して線形化されます。tolerance パラメーターおよび toleranceType パラメーターを指定することで、近似の精度を制御できます。
構文
geometry ST_CurveToLine(geometry curveGeom, float tolerance, integer toleranceType, integer flags)パラメーター
| パラメーター | 型 | 説明 |
|---|---|---|
curveGeom | geometry | 変換対象の曲線ジオメトリです。 |
tolerance | float | 許容誤差値です。デフォルト値: 0。 |
toleranceType | integer | tolerance 値の解釈方法を指定します。デフォルト値: 0。有効な値については、以下の表をご参照ください。 |
flags | integer | 出力の対称性を制御するビットフィールドです。デフォルト値: 0。有効な値については、以下の表をご参照ください。 |
toleranceType の値
| 値 | 意味 |
|---|---|
0(デフォルト) | tolerance は、各象限あたりの最大セグメント数を指定します。 |
1 | tolerance は、近似ラインと元の曲線との間の最大偏差(ソース単位)を指定します。 |
2 | tolerance は、生成される半径間の最大角度(ラジアン)を指定します。 |
flags の値
| 値 | 意味 |
|---|---|
0(デフォルト) | デフォルト動作です。 |
1 | 入力の方向に関係なく、出力が対称的なオブジェクトになります。 |
2 | 対称出力を生成する際に、角度やセグメントの長さの減少を防ぐため、角度情報を保持します。対称出力フラグ(1)が設定されていない場合は、このフラグは無効です。 |
例
デフォルトの許容誤差とカスタム許容誤差の比較
SELECT
ST_CurveToLine(g), -- デフォルト:各象限あたり 32 セグメント
ST_CurveToLine(g, pi()/4, 2) -- カスタム:半径間の最大角度を π/4 ラジアンに設定
FROM (
SELECT 'CIRCULARSTRING(0 0, 0.5 0.5, 1 0)'::geometry AS g
) AS test;
