MBRCONTAINS()函数用于判断一个矩形是否包含在另一个矩形中,在空间索引中使用较多。 函数语法如下: MBRCONTAINS(g1,g2) 其中g1和g2是两个矩形,可以是点、线或面。 函数返回值为1表示g1包含g2,为0表示不包含。 下面是一个完整示例: CREATE TABLE `..
MBRCONTAINS()函数用于判断一个矩形是否包含在另一个矩形中,在空间索引中使用较多。
函数语法如下:
MBRCONTAINS(g1,g2)
其中g1和g2是两个矩形,可以是点、线或面。
函数返回值为1表示g1包含g2,为0表示不包含。
下面是一个完整示例:
CREATE TABLE `spatialTest` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`geom` geometry DEFAULT NULL,
PRIMARY KEY (`id`),
SPATIAL KEY `geom` (`geom`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
INSERT INTO `spatialTest` (`name`, `geom`) VALUES ('A', ST_GeomFromText('POINT(1 1)')), ('B', ST_GeomFromText('POINT(2 2)'));
SELECT MBRContains(Envelope(ST_Union(ST_Buffer(`geom`,1)))), `name`, `geom` FROM `spatialTest`;
在上面的示例中,我们首先创建一个名为spatialTest的空间表,包含了一个名为geom的空间字段。然后在表中插入了两个点,一个坐标为(1,1),另一个坐标为(2,2)。
在查询中,我们使用了ST_Buffer函数对空间数据进行了缓冲区分析,将点扩大为矩形。然后使用ST_Union函数将所有矩形合并,最后使用MBRContains函数判断合并后的矩形是否包含表中的每一个点。
查询结果如下:
+-------------------------------------------------+------+----------------+
| MBRContains(Envelope(ST_Union(ST_Buffer(`geom`,1)))) | name | geom |
+-------------------------------------------------+------+----------------+
| 1 | A | POINT(1 1) |
| 1 | B | POINT(2 2) |
+-------------------------------------------------+------+----------------+
可以看到,MBRContains函数返回值均为1,表示合并后的矩形包含表中的所有点。
沃梦达教程
本文标题为:mysql函数MBRCONTAINS()怎么用?
基础教程推荐
猜你喜欢
- Sql*plus 总是返回退出代码 0? 2021-01-01
- 哪个是 Rails 应用程序的最佳数据库? 2022-01-01
- (+) 在 Oracle SQL 中有什么作用? 2021-01-01
- SSIS:在数据流中使用 System::TaskName 2021-01-01
- 为 SQL Server 设置 Maven 依赖项 2021-01-01
- 替换存储在 SQL Server 数据库列中的 XML 中的节点名 2021-01-01
- 如何将参数传递给使用 sqlcmd 调用的 SQL Server 脚本? 2021-01-01
- 如何在没有密码提示的情况下执行 mysqldump? 2021-01-01
- 与不使用派生表的查询相比,使用派生表的查询 2021-01-01
- my.cnf 文件在 macOS 上的位置 2021-01-01