すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:ST_CurveToLine

最終更新日:Mar 28, 2026

曲線を含むジオメトリを、その線形表現に変換します。具体的には、CircularString を LineString に、または CurvedPolygon を Polygon に変換します。この関数は、下流のツールまたはシステムが円形ジオメトリ型(circular geometry types)をサポートしていない場合に使用します。

各曲線セグメントは、デフォルトで各象限(quarter circle)を 32 セグメントに分割して線形化されます。tolerance パラメーターおよび toleranceType パラメーターを指定することで、近似の精度を制御できます。

構文

geometry ST_CurveToLine(geometry curveGeom, float tolerance, integer toleranceType, integer flags)

パラメーター

パラメーター説明
curveGeomgeometry変換対象の曲線ジオメトリです。
tolerancefloat許容誤差値です。デフォルト値: 0
toleranceTypeintegertolerance 値の解釈方法を指定します。デフォルト値: 0。有効な値については、以下の表をご参照ください。
flagsinteger出力の対称性を制御するビットフィールドです。デフォルト値: 0。有効な値については、以下の表をご参照ください。

toleranceType の値

意味
0(デフォルト)tolerance は、各象限あたりの最大セグメント数を指定します。
1tolerance は、近似ラインと元の曲線との間の最大偏差(ソース単位)を指定します。
2tolerance は、生成される半径間の最大角度(ラジアン)を指定します。

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;

12