几何函数¶
神通数据库中支持的几何函数以及用法如下表:
| 函数 | 返回类型 | 描述 | 举例 |
|---|---|---|---|
| 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))') |