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()怎么用?
基础教程推荐
猜你喜欢
- 哪个是 Rails 应用程序的最佳数据库? 2022-01-01
- my.cnf 文件在 macOS 上的位置 2021-01-01
- 为 SQL Server 设置 Maven 依赖项 2021-01-01
- 如何在没有密码提示的情况下执行 mysqldump? 2021-01-01
- 如何将参数传递给使用 sqlcmd 调用的 SQL Server 脚本? 2021-01-01
- 替换存储在 SQL Server 数据库列中的 XML 中的节点名 2021-01-01
- 与不使用派生表的查询相比,使用派生表的查询 2021-01-01
- Sql*plus 总是返回退出代码 0? 2021-01-01
- (+) 在 Oracle SQL 中有什么作用? 2021-01-01
- SSIS:在数据流中使用 System::TaskName 2021-01-01