ST_OffsetCurve

返回距输入线给定距离和边距的偏移线。

语法

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