这个问题是针对 Mysql 地理空间扩展专家的。
以下查询不是我期望的结果:
create database test_db;
use test_db;
create table test_table (g polygon not null);
insert into test_table (g) values (geomfromtext('Polygon((0 5,5 10,7 8,2 3,0 5))'));
insert into test_table (g) values (geomfromtext('Polygon((2 3,7 8,9 6,4 1,2 3))'));
select
X(PointN(ExteriorRing(g),1)), Y(PointN(ExteriorRing(g),1)),
X(PointN(ExteriorRing(g),2)), Y(PointN(ExteriorRing(g),2)),
X(PointN(ExteriorRing(g),3)), Y(PointN(ExteriorRing(g),3)),
X(PointN(ExteriorRing(g),4)), Y(PointN(ExteriorRing(g),4))
from test_table where MBRContains(g,GeomFromText('Point(3 6)'));
基本上我们正在创建 2 个多边形,并且我们正在尝试使用 MBRContains 来确定一个点是否在两个多边形中的任何一个内。
令人惊讶的是,它返回了两个多边形!点 3,6 应该只存在于第一个插入的多边形中。
请注意,两个多边形都是倾斜的(一旦您在一张纸上绘制多边形,您就会看到)
MySql 怎么会返回两个多边形?我正在使用 MySql 社区版 5.1。