几何函数

神通数据库中支持的几何函数以及用法如下表:

函数 返回类型 描述 举例
area(object) double precision 求图形面积 select area(box '((0,0),(2,3))' + point '(5.0,0)')
center(object) point 中心 select center(box '((0,0),(1,2))')
diameter(circle) double precision 圆的直径 select diameter(circle '((0,0),2.0)')
height(box) double precision 方框的垂直尺寸 select height(box '((0,0),(1,1))')
isclosed(path) boolean 一个封闭路径? select isclosed(path '((0,0),(1,1),(2,0))')
isopen(path) boolean 一个开放路径? select isopen(path '[(0,0),(1,1),(2,0)]')
length(object) double precision 长度 select length(path '((-1,0),(1,0))')
npoints(path) int 点数 select npoints(path '[(0,0),(1,1),(2,0)]')
npoints(polygon) int 点数 select npoints(polygon '((1,1),(0,0))')
pclose(path) path 将路径转换成封闭的 select pclose(path '[(0,0),(1,1),(2,0)]')
popen(path) path 将路径转换成开放 select popen(path '((0,0),(1,1),(2,0))')
radius(circle) double precision 圆的半径 select radius(circle '((0,0),2.0)')
width(box) double precision 方框的水平尺寸 select width(box '((0,0),(1,1))')

几何类型转换函数以及用法如下表:

函数 返回类型 描述 举例
box(circle) box 圆到方框 select box(circle '((0,0),2.0)')
box(point) box 点到空方框 select box(point '(0,0)')
box(point, point) box 点到方框 select box(point '(0,0)', point '(1,1)')
box(polygon) box 多边形到方框 select box(polygon '((0,0),(1,1),(2,0))')
bound_box(box, box) box 盒到边界框 select bound_box(box '((0,0),(1,1))', box '((3,3),(4,4))')
circle(box) circle 方框到圆 select circle(box '((0,0),(1,1))')
circle(point, double precision) circle 中心和半径到圆 select circle(point '(0,0)', 2.0)
circle(polygon) circle 多边形到圆 select circle(polygon '((0,0),(1,1),(2,0))')
line(point, point) line 点到线 select line(point '(-1,0)', point '(1,0)')
lseg(box) lseg 方框对角线到线段 select lseg(box '((-1,0),(1,0))')
lseg(point, point) lseg 点到线段 select lseg(point '(-1,0)', point '(1,0)')
path(polygon) path 多边形到路径 select path(polygon '((0,0),(1,1),(2,0))')
point(double precision, double precision) point 构造点 select point(23.4, -44.5)
point(box) point 方框的中心 select point(box '((-1,0),(1,0))')
point(circle) point 圆的中心 select point(circle '((0,0),2.0)')
point(lseg) point 线段的中心 select point(lseg '((-1,0),(1,0))')
point(lseg) point 线段的中心 select point(lseg '((-1,0),(1,0))')
point(polygon) point 多边形的中心 select point(polygon '((0,0),(1,1),(2,0))')
polygon(box) polygon 方框到4点多边形 select polygon(box '((0,0),(1,1))')
polygon(circle) polygon 圆到12点多边形 select polygon(circle '((0,0),2.0)')
polygon(npts, circle) polygon 点到npts点多边形 select polygon(12, circle '((0,0),2.0)')
polygon(path) polygon 路径到多边形 select polygon(path '((0,0),(1,1),(2,0))')