MBRINTERSECTS()是MySQL中用于判断两个多边形是否相交的函数。它接受两个参数,分别为存储多边形的Geometry列和一个代表矩形框的参数(MinX,MinY,MaxX,MaxY),返回值为1或0,表示是否相交。 示例: 假设我们有一个表格存储了多个区域的多边形信息,包
MBRINTERSECTS()是MySQL中用于判断两个多边形是否相交的函数。它接受两个参数,分别为存储多边形的Geometry列和一个代表矩形框的参数(MinX,MinY,MaxX,MaxY),返回值为1或0,表示是否相交。
示例:
假设我们有一个表格存储了多个区域的多边形信息,包括区域ID和区域范围(geometry类型)。我们要查询所有与某一个多边形相交的区域。
首先,我们应该将查询区域转换成矩形框的形式,用于和其他区域进行比较。假设查询区域的geometry值为:
sql
SET @polygon = "POLYGON((1 1,5 1,5 5,1 5,1 1))";
我们可以使用Envelope()函数将其转换为矩形框形式:
sql
SET @bbox = Envelope(GeomFromText(@polygon));
然后,我们可以使用MBRINTERSECTS()函数查询所有与该区域相交的多边形:
sql
SELECT ID FROM regions
WHERE MBRIntersects(Geometry, GeomFromText(AsText(@bbox)));
完整示例代码:
sql
-- 创建表格
CREATE TABLE regions (
ID INT PRIMARY KEY,
Geometry GEOMETRY NOT NULL
);
-- 添加数据
INSERT INTO regions (ID, Geometry)
VALUES (1, GeomFromText("POLYGON((0 0,10 0,10 10,0 10,0 0))")),
(2, GeomFromText("POLYGON((3 3,13 3,13 13,3 13,3 3))")),
(3, GeomFromText("POLYGON((20 20,30 20,30 30,20 30,20 20))")),
(4, GeomFromText("POLYGON((20 20,30 20,30 30,20 30,20 20))"));
-- 查询相交的区域
SET @polygon = "POLYGON((1 1,5 1,5 5,1 5,1 1))";
SET @bbox = Envelope(GeomFromText(@polygon));
SELECT ID FROM regions
WHERE MBRIntersects(Geometry, GeomFromText(AsText(@bbox)));
编程基础网
本文标题为:mysql函数MBRINTERSECTS()怎么用?
基础教程推荐
猜你喜欢
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- 是否可以执行按位分组功能? 2021-01-01
- 在 SQL 中连接多个表 2021-01-01
- SQL:使用来自具有相同列名的两个表中的数据... 2021-01-01
- 将 SQL Server DateTime 列迁移到 DateTimeOffset 2021-01-01
- 如何使用 mysql.connector 禁用查询缓存 2022-01-01
- 需要 MySQL 5.1 中的抽象触发器来更新审计日志 2021-01-01
- 无法解决整理冲突 2021-01-01
- SQL Server 实例在登录协商期间返回无效或不受支持的协议版本 2021-01-01
- SQL 效率:WHERE IN 子查询 vs. JOIN 然后 GROUP 2021-01-01
