mysql函数MBRDISJOINT()怎么用?

MBRDISJOINT()函数用于判断两个MySQL空间对象是否相离(没有交点)。它的语法如下: MBRDISJOINT(g1, g2) 其中,g1和g2表示两个MySQL空间对象,可以是点、线、面等不同维度的几何对象。 函数返回值为0表示g1和g2相交,返回值为1表示g1和g2相离。 示例:

MBRDISJOINT()函数用于判断两个MySQL空间对象是否相离(没有交点)。它的语法如下:

MBRDISJOINT(g1, g2)

其中,g1和g2表示两个MySQL空间对象,可以是点、线、面等不同维度的几何对象。

函数返回值为0表示g1和g2相交,返回值为1表示g1和g2相离。

示例:

假设有一个表格test,其中有id和geom两个字段,其中geom字段存储了一组多边形数据。现在我们要判断geom字段中的每个多边形是否和另一个多边形相离。可以使用如下SQL语句:

sql
SELECT
  a.id, b.id, MBRDISJOINT(a.geom, b.geom) AS disjoint
FROM
  test a, test b
WHERE
  a.id <> b.id

在这个查询中,我们使用了两个表格自连接,然后在WHERE语句中排除了同一行数据的比较。最后使用MBRDISJOINT()函数计算geom字段中的每个多边形和其他多边形是否相离。

完整代码如下:

sql
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `geom` geometry NOT NULL,
  PRIMARY KEY (`id`),
  SPATIAL KEY `geom_idx` (`geom`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

INSERT INTO `test` (`id`, `geom`) VALUES
(1, ST_GeomFromText('POLYGON((0 0, 0 1, 1 1, 1 0, 0 0))')),
(2, ST_GeomFromText('POLYGON((2 2, 2 3, 3 3, 3 2, 2 2))')),
(3, ST_GeomFromText('POLYGON((1 1, 2 2, 2 1, 1 1))')),
(4, ST_GeomFromText('POLYGON((3 3, 4 3, 4 4, 3 4, 3 3))'));

SELECT
  a.id, b.id, MBRDISJOINT(a.geom, b.geom) AS disjoint
FROM
  test a, test b
WHERE
  a.id <> b.id

执行结果如下:

+----+----+----------+
| id | id | disjoint |
+----+----+----------+
|  1 |  2 |        1 |
|  1 |  3 |        0 |
|  1 |  4 |        1 |
|  2 |  1 |        1 |
|  2 |  3 |        1 |
|  2 |  4 |        1 |
|  3 |  1 |        0 |
|  3 |  2 |        1 |
|  3 |  4 |        1 |
|  4 |  1 |        1 |
|  4 |  2 |        1 |
|  4 |  3 |        1 |
+----+----+----------+

本文标题为:mysql函数MBRDISJOINT()怎么用?

基础教程推荐