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()怎么用?
基础教程推荐
猜你喜欢
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 在多列上分布任意行 2021-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
- oracle区分大小写的原因? 2021-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01
- mysql选择动态行值作为列名,另一列作为值 2021-01-01