ST_LINETOCURVE
📄字数 1.7K
👁️阅读量 加载中...
功能描述
将普通线(LINESTRING)/多边形(POLYGON)转换为圆形线(CIRCULARSTRING)和曲线多边形(CURVED POLYGON)。
语法格式
sql
GEOMETRY ST_LINETOCURVE(GEOMETRY geomANoncircular);参数说明
- geomANoncircular:目标 GEOMETRY 对象。
函数返回类型
GEOMETRY 类型
使用说明
- 描述等效曲线所需的点要少得多。
- 如果输入线串/多边形不足以清楚地表示曲线,则该函数返回与输入几何图形相同的值。
- 此方法支持圆形字符串和曲线。
- 该函数支持 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) |
+---------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+