MariaDB ST_DISJOINT() 函数的基础用法与实例
MariaDB ST_DISJOINT()
函数用来检测两个几何对象是否不相交。如果两个几何对象不相交,则返回 1 或 true;如果两个几何对象相交,则返回 0 或 false。
发布于
MariaDB ST_DISJOINT()
函数用来检测两个几何对象是否不相交。如果两个几何对象不相交,则返回 1 或 true;如果两个几何对象相交,则返回 0 或 false。该函数常用于判断两个空间对象是否位于不同的区域。
语法
MairaDB ST_DISJOINT()
函数的语法如下:
ST_DISJOINT(geom1, geom2)
参数说明:
geom1
:接受任意几何值。geom2
:接受任意几何值。
返回值:
- 如果两个几何对象不相交,返回 1 或 true。
- 如果两个几何对象相交,返回 0 或 false。
- 如果任一几何对象为空值,则返回 NULL。
实例
检测两个点是否不相交
本实例演示了如何检测两个点是否不相交。
SELECT ST_DISJOINT(POINT(1, 1), POINT(2, 2)) AS disjoint;
以下是该语句的输出:
+----------+
| disjoint |
+----------+
| 1 |
+----------+
可以看到,两个点不相交,所以返回 1 或 true。
检测点与线是否不相交
本实例演示了如何检测一个点与一条线是否不相交。
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(0, 0), POINT(2, 2))), (LINESTRING(POINT(3, 3), POINT(4, 4)));
SELECT id, ST_DISJOINT(ln, POINT(1, 1)) AS disjoint FROM lines_table;
以下是该语句的输出:
+----+----------+
| id | disjoint |
+----+----------+
| 1 | 0 |
| 2 | 1 |
+----+----------+
可以看到,第一条线与点 (1, 1) 相交,所以返回 0 或 false;第二条线与点 (1, 1) 不相交,所以返回 1 或 true。
检测点与面是否不相交
本实例演示了如何检测一个点与一个面是否不相交。
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(4, 4), POINT(4, 7), POINT(7, 7), POINT(7, 4), POINT(4, 4))));
SELECT id, ST_DISJOINT(poly, POINT(1, 1)) AS disjoint FROM polygons_table;
以下是该语句的输出:
+----+----------+
| id | disjoint |
+----+----------+
| 1 | 0 |
| 2 | 1 |
+----+----------+
可以看到,第一个面与点 (1, 1) 相交,所以返回 0 或 false;第二个面与点 (1, 1) 不相交,所以返回 1 或 true。
检测两个面是否不相交
本实例演示了如何检测两个面是否不相交。
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))));
DROP TABLE IF EXISTS polygons2;
CREATE TABLE polygons2 (
id INT PRIMARY KEY AUTO_INCREMENT,
poly POLYGON NOT NULL
);
INSERT INTO polygons2 (poly) VALUES (POLYGON(LINESTRING(POINT(4, 4), POINT(4, 7), POINT(7, 7), POINT(7, 4), POINT(4, 4)))), (POLYGON(LINESTRING(POINT(5, 5), POINT(5, 6), POINT(6, 6), POINT(6, 5), POINT(5, 5))));
SELECT p1.id, p2.id, ST_DISJOINT(p1.poly, p2.poly) AS disjoint
FROM polygons_table p1
CROSS JOIN polygons2 p2;
以下是该语句的输出:
+----+----+----------+
| id | id | disjoint |
+----+----+----------+
| 1 | 1 | 1 |
| 2 | 1 | 0 |
| 1 | 2 | 1 |
| 2 | 2 | 1 |
+----+----+----------+
相关函数
以下是几个与 MairaDB ST_DISJOINT()
相关的几个函数:
- MariaDB
ST_Intersects()
函数用来检测两个几何对象是否相交。 - MariaDB
ST_Crosses()
函数用来检测两个几何对象是否相交,并且交集是 0 维的。 - MariaDB
ST_Touches()
函数用来检测两个几何对象是否相交,并且交集是 0 维的边界。 - MariaDB
ST_Overlaps()
函数用来检测两个几何对象是否相交,并且交集不是 0 维的边界。
结论
MariaDB ST_DISJOINT()
函数是一个非常有用的函数,可以检测两个几何对象是否不相交。通过本文的实例,我们学习了如何使用该函数检测不同类型的几何对象是否不相交,以及一些异常情况下的返回值。同时,我们还了解了一些与该函数相关的其他几何函数。掌握这些函数有助于我们更好地处理和操作空间数据。