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()怎么用?
猜你喜欢
- 如何在oracle中获取字符串最右边的10个位置 2021-01-01
- Oracle SQL 转置 2022-01-01
- SQL Server 将 Varchar 转换为日期时间 2021-01-01
- MySQL(Windows10)使用 MyISAM 表进行 FULLTEXT 搜索不起作用 2022-01-01
- 在 Oracle 中创建 CTE 2022-01-01
- MySql 错误 150 - 外键 2021-01-01
- HEROKU - 无法运行 git push heroku master 2021-01-01
- SSMS 中的权限问题:“对象 'extended_properties'、数据库 'mssqlsystem_resource'、... 错误 229)上的 SELECT 权限被拒绝" 2022-01-01
- 如何将uuid存储为数字? 2021-01-01
- 创建索引时,具有 mysql 数据库迁移的实体框架失败 2022-01-01