MariaDB ST_DIMENSION() 函数的基础用法与实例

MariaDB ST_DIMENSION() 函数用来获取几何值的维数,返回一个整数值。如果输入的几何值为空,则返回 NULL。

发布于

MariaDB ST_DIMENSION() 函数用来获取几何值的维数,返回一个整数值。如果输入的几何值为空,则返回 NULL。该函数常用于确定输入的几何值是点、线、面或体等不同的几何形状。

语法

MairaDB ST_DIMENSION() 函数的语法如下:

ST_DIMENSION(geom)

参数说明:

  • geom:接受任意几何值,如点、线、面或多几何值。

返回值:

  • 如果输入的几何值为空值,则返回 NULL。
  • 如果输入为点,返回 0。
  • 如果输入为线,返回 1。
  • 如果输入为面,返回 2。
  • 如果输入为体,返回 3。
  • 如果输入为异常几何对象,返回-1。

实例

获取点几何值的维数

本实例演示了如何获取点几何值的维数。

DROP TABLE IF EXISTS points;
CREATE TABLE points (
    id INT PRIMARY KEY AUTO_INCREMENT,
    pt POINT NOT NULL
);
INSERT INTO points (pt) VALUES (POINT(1, 1)), (POINT(2, 2)), (POINT(3, 3));

SELECT id, ST_DIMENSION(pt) AS dim FROM points;

以下是该语句的输出:

+----+------+
| id | dim  |
+----+------+
|  1 |    0 |
|  2 |    0 |
|  3 |    0 |
+----+------+

可以看到,点几何值的维数为 0。

获取线几何值的维数

本实例演示了如何获取线几何值的维数。

DROP TABLE IF EXISTS lines_table;
CREATE TABLE lines_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    ln LINESTRING NOT NULL
);
INSERT INTO lines_table (ln) VALUES (LINESTRING(POINT(1, 1), POINT(2, 2))), (LINESTRING(POINT(3, 3), POINT(4, 4)));

SELECT id, ST_DIMENSION(ln) AS dim FROM lines_table;

以下是该语句的输出:

+----+------+
| id | dim  |
+----+------+
|  1 |    1 |
|  2 |    1 |
+----+------+

可以看到,线几何值的维数为 1。

获取面几何值的维数

本实例演示了如何获取面几何值的维数。

DROP TABLE IF EXISTS polygons_table;
CREATE TABLE polygons_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    poly POLYGON NOT NULL
);
INSERT INTO polygons_table (poly) VALUES (POLYGON(LINESTRING(POINT(0, 0), POINT(0, 3), POINT(3, 3), POINT(3, 0), POINT(0, 0)))), (POLYGON(LINESTRING(POINT(1, 1), POINT(1, 4), POINT(4, 4), POINT(4, 1), POINT(1, 1))));

SELECT id, ST_DIMENSION(poly) AS dim FROM polygons_table;

以下是该语句的输出:

+----+------+
| id | dim  |
+----+------+
|  1 |    2 |
|  2 |    2 |
+----+------+

可以看到,面几何值的维数为 2。

获取多几何值的维数

本实例演示了如何获取多几何值的维数。

DROP TABLE IF EXISTS geometries_table;
CREATE TABLE geometries_table (
    id INT PRIMARY KEY AUTO_INCREMENT,
    geom GEOMETRY NOT NULL
);
INSERT INTO geometries_table (geom) VALUES (MULTIPOINT(POINT(1, 1), POINT(2, 2))), (MULTILINESTRING(LINESTRING(POINT(0, 0), POINT(1, 1)), LINESTRING(POINT(2, 2), POINT(3, 3)))), (MULTIPOLYGON(POLYGON(LINESTRING(POINT(0, 0), POINT(0, 3), POINT(3, 3), POINT(3, 0), POINT(0, 0))), POLYGON(LINESTRING(POINT(4, 4), POINT(4, 7), POINT(7, 7), POINT(7, 4), POINT(4, 4)))));

SELECT id, ST_DIMENSION(geom) AS dim FROM geometries_table;

以下是该语句的输出:

+----+------+
| id | dim  |
+----+------+
|  1 |    0 |
|  2 |    1 |
|  3 |    2 |
+----+------+

可以看到,多几何值的维数取决于组成它的几何对象的最高维数。

相关函数

以下是几个与 MairaDB ST_DIMENSION() 相关的几个函数:

  • MariaDB ST_GeometryType() 函数用来返回给定几何值的类型,如 POINT、LINESTRING、POLYGON 等。
  • MariaDB ST_IsSimple() 函数用来检查一个几何值是否为简单几何值。
  • MariaDB ST_IsEmpty() 函数用来检查一个几何值是否为空几何值。

结论

MariaDB ST_DIMENSION() 函数是一个非常有用的函数,可以获取几何值的维数,从而判断该几何值的形状。通过本文的实例,我们学习了如何使用该函数获取不同几何值的维数,以及一些异常情况下的返回值。同时,我们还了解了一些与该函数相关的其他几何函数。掌握这些函数有助于我们更好地处理和操作空间数据。