跳到主要内容
版本:V1.0.0

空间访问器函数

空间访问器函数用于提供对空间数据成分访问的函数,例如访问多边形的顶点或线的起点。

seekdb 当前所支持的空间访问器函数包括 _ST_GeometryType_ST_IsCollection_ST_NumInteriorRings

_ST_GeometryType

_ST_GeometryType 函数用于返回一个几何对象的几何类型。函数返回的是输入几何对象的类型,该类型是遵循 SQL-MM(SQL 多媒体)标准的几何类型名称,格式为 ST_[TYPE]。例如,如果输入的几何对象是一个点,函数将返回 ST_Point;如果是线串,将返回 ST_LineString

语法如下:

_ST_GeometryType(geometry g1);

参数释义:

  • geometry g1: 这是函数的输入几何对象。它可以是任何类型的几何对象,如点(Point)、线(LineString)、多边形(Polygon)等。

使用限制:

  • 输入值必须是一个有效的几何对象。如果输入的是 NULL 或非几何类型的数据,函数可能返回错误或 NULL

示例如下:

SELECT _ST_GeometryType(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)'));

在这个示例中,_ST_GeometryType 函数检查了由 ST_GeomFromText 函数转换的几何对象,并返回了对象的类型。

返回结果如下:

+--------------------------------------------------------------------------------------------------+
| _ST_GeometryType(ST_GeomFromText('LINESTRING(77.29 29.07,77.42 29.26,77.27 29.31,77.29 29.07)')) |
+--------------------------------------------------------------------------------------------------+
| ST_LineString |
+--------------------------------------------------------------------------------------------------+
1 row in set (0.001 sec)

_ST_IsCollection

_ST_IsCollection 函数用于判断输入的几何对象(Geometry)是否是一个几何集合类型。在地理信息系统(GIS)中,几何集合类型是由若干几何对象组成的一个集合,这些几何对象可以是点、线、多边形等。

语法如下:

_ST_IsCollection(geometry g1);

参数释义:

  • geometry g1:需要检查的几何对象,且必须为有一个有效的几何对象。几何集合类型主要包括:

    • GEOMETRYCOLLECTION:几何对象的一个集合,集合中的对象可以是任意类型。
    • MULTIPOINT:多个点对象的集合。
    • MULTIPOLYGON:多个多边形对象的集合。
    • MULTILINESTRING:多条线串对象的集合。
    • MULTICURVE:多个曲线对象的集合(一些数据库系统可能支持)。
    • MULTISURFACE:多个表面对象的集合(一些数据库系统可能支持)。
    • COMPOUNDCURVE 是指由多个简单曲线组合而成的复合曲线,但在 seekdb 中当前可能不支持此类型。

示例如下:

 SELECT _ST_IsCollection(st_geomfromtext('LINESTRING(0 0, 1 1)'));

在这个示例中,输入的是一个 LINESTRING 类型的对象,它是一个简单的几何类型,而不是由多个几何对象组成的集合,执行这条 SQL 语句后,返回结果是 0。

返回结果如下:

+-----------------------------------------------------------+
| _ST_IsCollection(st_geomfromtext('LINESTRING(0 0, 1 1)')) |
+-----------------------------------------------------------+
| 0 |
+-----------------------------------------------------------+
1 row in set (0.001 sec)

_ST_NumInteriorRings

_ST_NumInteriorRings 函数用于返回一个多边形(Polygon)几何对象的内环数。所谓“内环”指的是多边形中围绕“空洞”或“岛”的边界线,这些空洞位于多边形的外环内部。如果一个多边形没有内环,则表示它没有任何空洞。

语法如下:

_ST_NumInteriorRings(geometry a_polygon);

参数释义:

  • geometry a_polygon:输入参数,表示要检查的多边形几何对象。如果输入的几何对象不是多边形类型,则函数将返回 NULL

示例如下:

select _ST_NumInteriorRings(ST_GeomFromText('POLYGON((2 2 1,2 8 5,8 8 7,8 2 4,2 2 1))'));

在这个示例中,输入的多边形使用 Well-Known Text (WKT) 格式定义,且其坐标是三维的(包含 x, y, z 坐标)。尽管提供了 z 坐标,但是指定的多边形没有定义内环,因此返回值为 0。

返回结果如下:

+-----------------------------------------------------------------------------------+
| _ST_NumInteriorRings(ST_GeomFromText('POLYGON((2 2 1,2 8 5,8 8 7,8 2 4,2 2 1))')) |
+-----------------------------------------------------------------------------------+
| 0 |
+-----------------------------------------------------------------------------------+
1 row in set (0.001 sec)