【发布时间】:2012-01-02 08:50:20
【问题描述】:
在我的表格中,我有三个地理空间字段:
`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`)
然后我有一个定义为“更新前开启”的触发器,它从纬度/经度对设置location,如下所示:
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).
作为仅供参考,上面 SET @bbox 中显示的数据点来自美国的 4 个角(顺时针输入),应该返回所有点的 99%,但什么也不返回。以下是坐标: 加利福尼亚州圣地亚哥:+32.70 -117.16 华盛顿州西雅图:47.97 -122.19 缅因州班戈:44.80 -68.77 佛罗里达州迈阿密:25.77 -80.19
我还针对 NWS CAP 1.1 提要中的 3500 多个多边形进行了尝试,但我一无所获!我想我一定是做错了什么,但是,对于我的生活,我无法弄清楚它是什么!
有什么建议吗?
【问题讨论】: