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()怎么用?
基础教程推荐
猜你喜欢
- 带有WHERE子句的LAG()函数 2022-01-01
- ORA-01830:日期格式图片在转换整个输入字符串之前结束/选择日期查询的总和 2021-01-01
- MySQL 5.7参照时间戳生成日期列 2022-01-01
- CHECKSUM 和 CHECKSUM_AGG:算法是什么? 2021-01-01
- MySQL根据从其他列分组的值,对两列之间的值进行求和 2022-01-01
- 如何在 CakePHP 3 中实现 INSERT ON DUPLICATE KEY UPDATE aka upsert? 2021-01-01
- 使用 VBS 和注册表来确定安装了哪个版本和 32 位 2021-01-01
- 带更新的 sqlite CTE 2022-01-01
- while 在触发器内循环以遍历 sql 中表的所有列 2022-01-01
- 从字符串 TSQL 中获取数字 2021-01-01
