ST_LineToCurve — 将线性几何图形转换为曲线几何图形。
geometry ST_LineToCurve(geometry geomANoncircular);
将普通线/多边形转换为圆形线和曲线多边形。 请注意,描述等效曲线所需的点要少得多。
|
|
|
如果输入线串/多边形不足以清楚地表示曲线,则该函数返回与输入几何图形相同的值。 |
可用性:1.3.0
该函数支持 3d 并且不会丢失 z-index。
此方法支持圆形字符串和曲线。
This example uses 2D input.
SELECT ST_AsText(ST_LineToCurve(foo.geom)) As curvedastext,ST_AsText(foo.geom) As non_curvedastext
FROM (SELECT ST_Buffer('POINT(1 3)'::geometry, 3) As geom) As foo;
curvedatext non_curvedastext
--------------------------------------------------------------------|-----------------------------------------------------------------
CURVEPOLYGON(CIRCULARSTRING(4 3,3.12132034355964 0.878679656440359, | POLYGON((4 3,3.94235584120969 2.41472903395162,3.77163859753386 1.85194970290473,
1 0,-1.12132034355965 5.12132034355963,4 3)) | 3.49440883690764 1.33328930094119,3.12132034355964 0.878679656440359,
| 2.66671069905881 0.505591163092366,2.14805029709527 0.228361402466141,
| 1.58527096604839 0.0576441587903094,1 0,
| 0.414729033951621 0.0576441587903077,-0.148050297095264 0.228361402466137,
| -0.666710699058802 0.505591163092361,-1.12132034355964 0.878679656440353,
| -1.49440883690763 1.33328930094119,-1.77163859753386 1.85194970290472
| --ETC-- ,3.94235584120969 3.58527096604839,4 3))
This example uses 3D input.
SELECT ST_AsText(ST_LineToCurve(geom)) As curved, 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) (1 row)