Skip to content

适用虚谷数据库版本

v12.9



适用虚谷数据库版本

v12.9


ST_LINETOCURVE

📄字数 1.7K
👁️阅读量 加载中...

功能描述

将普通线(LINESTRING)/多边形(POLYGON)转换为圆形线(CIRCULARSTRING)和曲线多边形(CURVED POLYGON)。

语法格式

sql
GEOMETRY ST_LINETOCURVE(GEOMETRY geomANoncircular);

参数说明

  • geomANoncircular:目标 GEOMETRY 对象。

函数返回类型

GEOMETRY 类型

使用说明

  1. 描述等效曲线所需的点要少得多。
  2. 如果输入线串/多边形不足以清楚地表示曲线,则该函数返回与输入几何图形相同的值。
  3. 此方法支持圆形字符串和曲线。
  4. 该函数支持 3d 并且不会丢失 z-index。

示例

sql
--2D:
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_LINETOCURVE(foo.geom))) As curvedastext, TO_CHAR(ST_ASTEXT(foo.geom)) As non_curvedastext
         FROM (SELECT ST_BUFFER('POINT(1 3)'::geometry, 3) As geom) As foo;

+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                CURVEDASTEXT                |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         NON_CURVEDASTEXT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CURVEPOLYGON(CIRCULARSTRING(4 3,-2 3,4 3)) | POLYGON((4 3,3.942355841209691 2.414729033951615,3.77163859753386 1.851949702904731,3.494408836907636 1.333289300941194,3.121320343559643 0.878679656440358,2.666710699058807 0.505591163092364,2.14805029709527 0.22836140246614,1.585270966048385 0.057644158790309,1 0,0.414729033951615 0.057644158790309,-0.148050297095269 0.22836140246614,-0.666710699058806 0.505591163092364,-1.121320343559642 0.878679656440357,-1.494408836907636 1.333289300941194,-1.77163859753386 1.85194970290473,-1.942355841209691 2.414729033951614,-2 3,-1.942355841209691 3.585270966048385,-1.77163859753386 4.148050297095269,-1.494408836907636 4.666710699058806,-1.121320343559643 5.121320343559642,-0.666710699058806 5.494408836907636,-0.148050297095271 5.77163859753386,0.414729033951614 5.942355841209691,0.999999999999999 6,1.585270966048385 5.942355841209691,2.14805029709527 5.77163859753386,2.666710699058806 5.494408836907636,3.121320343559642 5.121320343559643,3.494408836907636 4.666710699058806,3.77163859753386 4.148050297095271,3.942355841209691 3.585270966048386,4 3)) |
+--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

--3D:
SQL> SELECT TO_CHAR(ST_ASTEXT(ST_LINETOCURVE(geom))) As curved, TO_CHAR(ST_ASTEXT(geom)) AS not_curved
     FROM (SELECT ST_TRANSLATE(ST_FORCE3D(ST_BOUNDARY(ST_BUFFER(ST_POINT(1,3), 2,2))),0,0,3) AS geom) AS foo;

+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|                CURVED                 |                                                                                               NOT_CURVED                                                                                                |
+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| CIRCULARSTRING Z (3 3 3,-1 3 3,3 3 3) | LINESTRING Z (3 3 3,2.414213562373095 1.585786437626905 3,1 1 3,-0.414213562373095 1.585786437626905 3,-1 3 3,-0.414213562373095 4.414213562373095 3,1 5 3,2.414213562373095 4.414213562373096 3,3 3 3) |
+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+