全部產品
Search
文件中心

PolarDB:ST_3DBuffer

更新時間:Jul 06, 2024

Ganos支援為三維點(Point)或線段(Linestring)構建緩衝區。

文法

meshgeom ST_3DBuffer(geometry geom3d, float8 buffer_radius, boolean round_end  default true, float8 smooth default 0.5);

參數

參數名稱描述
geom3dgeometry對象僅支援Point和Linestring類型。
buffer_radius浮點數,表示緩衝區半徑。
round_end布爾型,預設為true。對於Linestring類型:
  • round_end=true,表示線段兩端使用半球形緩衝區。
  • round_end=false,兩端不設定緩衝區。
smooth 浮點數,預設為0.5,取值為(0,1]。表示緩衝區表面的三角形的邊長。取值越小,緩衝區表面三角形邊長越小,表面越光滑,越近似曲面。
重要
  • 如果未配置round_end參數,則smooth 參數無需配置。
  • 如果未配置round_end參數,但是配置smooth 參數,會造成解析錯誤。

描述

將三維的點或線段往外延伸一定距離,形成一段密閉的緩衝區空間。

效果示意

圖 1. 點的緩衝區 smooth = 0.5 圖1
圖 2. 點的緩衝區 smooth = 0.8 圖2
圖 3. 線段的緩衝區 round_end = true圖3
圖 4. 線段的緩衝區 round_end = false圖4
圖 5. 線段的緩衝區 round_end = true, smooth = 0.3圖1

樣本

SELECT ST_AsText(ST_3DBuffer('POINT(0 0 0)', 2));
---------------------------------------------------
MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(0 0 2,-0.894427190999916 0 1.78885438199983,-0.447213595499958 ...

SELECT ST_AsText(ST_3DBuffer('LINESTRING(1 2 3, 0 0 4)', 0.5, false));
---------------------------------------------------
MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(1.43294188107951 1.89763792560716 3.22821773229382,1.30266373925419...

SELECT ST_AsText(ST_3DBuffer('LINESTRING(0 1 0, 1 3 2, 2 1 1)', 1, true, 0.6));
------------------------------------------------------
MESHGEOM(PATCH(INDEXSURFACE Z (VERTEX(-0.89885050178969 1.01131599079557 0.438109260099278...