返回距輸入線給定距離和邊距的偏移線。

語法

geometry  ST_OffsetCurve(geometry  line , float  signedDistance , text  styleParameters);

參數

參數名稱 描述
line 目標線對象。
signedDistance 距離。
styleParameters 樣式參數,默認為空字符串。

描述

  • 返回的Geometry對象的所有點距離輸入對象的距離均不會超過給定距離。
  • 若距離為正,偏移量將在輸入線的左側,并保持相同方向。反之,它將位于右側,并且方向相反。
  • 該函數會忽略三維坐標,即便輸入的是一個三維對象,返回的也是二維結果。
  • 該函數支持GeometryCollection對象和MultiLineString對象。
  • styleParameters參數如下:
    參數名稱 描述 類型 默認值 說明
    quad_segs 用來近似四分之一圓的弧段數 integer 8 數值越大,弧段越圓滑。
    join 連接方式 string round 可選值為:
    • round
    • mitre
    • bevel
    mitre_limit 切割率限制 float -- 只影響采用mitre連接方式的情況。

示例

  • 不同弧段分段數對比:
    select st_curvetoline(ST_OffsetCurve(g,1,'quad_segs=2')),
                 st_curvetoline(ST_OffsetCurve(g,1.1,'quad_segs=3')),
                 st_curvetoline(ST_OffsetCurve(g,1.2))g
           from (select 'LINESTRING(0 0,0 1,1 1)'::geometry as g) as t;
    1
  • 不同連接方式對比:
    select st_curvetoline(ST_OffsetCurve(g,1,'join=round')),
                 st_curvetoline(ST_OffsetCurve(g,1.1,'join=mitre')),
                 st_curvetoline(ST_OffsetCurve(g,1.2,'join=bevel')),g
           from (select 'LINESTRING(0 0,0 1,1 1)'::geometry as g) as t;
    2
  • 不同切割率限制對比:
    select st_curvetoline(ST_OffsetCurve(g,1,'join=mitre mitre_limit=0.1')),
                 st_curvetoline(ST_OffsetCurve(g,1.1,'join=mitre mitre_limit=0.5')),
                 st_curvetoline(ST_OffsetCurve(g,1.2,'join=mitre mitre_limit=1')),g
           from (select 'LINESTRING(0 0,0 1,1 1)'::geometry as g) as t;
    3
  • 正負距離對比:
    select st_curvetoline(ST_OffsetCurve(g,2)),
             st_curvetoline(ST_OffsetCurve(g,-2)),g
           from (select 'LINESTRING(0 0,0 1,1 2)'::geometry as g) as t;
    4