mysql多边形搜索失败

mysql多边形搜索失败,mysql,search,gis,polygon,Mysql,Search,Gis,Polygon,在我的表中,有三个地理空间字段: `lat` decimal(12,7) NOT NULL, `lon` decimal(12,7) NOT NULL, `location` point NOT NULL, 和三个地理空间指数: KEY `lat` (`lat`), KEY `lon` (`lon`), SPATIAL KEY `location` (`location`) 然后,我有一个定义为“更新前打开”的触发器,它从lat/lon对中设置位置,如下所示: FOR EACH ROW SE

在我的表中,有三个地理空间字段:

`lat` decimal(12,7) NOT NULL,
`lon` decimal(12,7) NOT NULL,
`location` point NOT NULL,
和三个地理空间指数:

KEY `lat` (`lat`),
KEY `lon` (`lon`),
SPATIAL KEY `location` (`location`)
然后,我有一个定义为“更新前打开”的触发器,它从lat/lon对中设置
位置
,如下所示:

FOR EACH ROW SET NEW.location = PointFromText(CONCAT('POINT(',NEW.lat,' ',NEW.lon,')'))
我很确定数据是正确的,因为我可以做各种各样的循环查询。现在,我还需要做一些多边形查询,只是不能让它返回任何结果!以下是我的多边形查询:

SET @bbox = 'POLYGON((32.70 -117.16, 47.97 -122.19, 44.80 -68.77, 25.77 -80.19, 32.70 -117.16))';
SELECT * , AsText( location ) 
FROM geo_table
WHERE Intersects( location, GeomFromText( @bbox ) );
通过phpMyAdmin运行此查询,我将获得两条SQL语句的以下消息:

# MySQL returned an empty result set (i.e. zero rows).
作为参考,上述集合@bbox中显示的数据点来自美国的4个角落(顺时针输入),应返回99%的所有点,但不返回任何值。以下是坐标: 加利福尼亚州圣地亚哥:+32.70-117.16 西特尔,华盛顿州:47.97-122.19 缅因州班戈:44.80-68.77 佛罗里达州迈阿密:25.77-80.19

我也尝试过从NWS CAP 1.1馈送超过3500个多边形,但我什么也没有得到!我想我一定是做错了什么,但是,就我个人而言,我不知道这是什么


有什么建议吗?

我认为您不应该使用相交,请尝试使用

SET @bbox = 'POLYGON((32.70 -117.16, 47.97 -122.19, 44.80 -68.77, 25.77 -80.19, 32.70 -117.16))';
SET @USA = GeomFromText(@bbox);
SET @Lincoln = PointFromText('POINT(40.82 -96.71)');
SELECT Contains(@USA, @Lincoln);