0
我是MySQL的新手,它融化了我的大脑!MySQL地理信息系统/空间扩展 - 融化我的大脑
我创建了一个表“的地方”像这样:
CREATE TABLE `places` (
`id` int(6) unsigned zerofill NOT NULL auto_increment,
`business_name` varchar(100) NOT NULL,
`street_postcode` varchar(10) NOT NULL,
`longitude` decimal(22,20) NOT NULL,
`latitude` decimal(22,20) NOT NULL,
`coord` point NOT NULL,
UNIQUE KEY `id` (`id`),
) ENGINE=InnoDB AUTO_INCREMENT=25080 DEFAULT CHARSET=utf8
ID,BUSINESS_NAME和street_postcode其中插入到表
我然后用经度和纬度更新的表在PHP中的坐标为所以:
UPDATE `places` SET `longitude` = '".$longitude."', `latitude` = '".$latitude."', `coord` = GeomFromText('POINT(".$coord.")') WHERE `id` = '".$row->id."' LIMIT 1
这一切似乎都很顺利,但我试图找到最接近X坐标的位置时卡住了。我如何找到X经度和纬度10个最近的地方?
这似乎并不工作:
SELECT business_name, street_postcode, ROUND(GLength(LineStringFromWKB(LineString(AsBinary(coord), AsBinary('51.49437081 -0.2275573')))))
AS distance FROM places ORDER BY distance ASC LIMIT 10;
永恒在此先感谢!
请参阅:http://dev.mysql.com/doc/refman/5.5/en/relations-on-geometry-mbr.html – 2011-02-24 09:48:12
是的,我很肯定在5.5他们已经开始实施更多的空间功能,但仅限于MyISAM表类型(这对您的数据库是一个相当大的限制) http://dev.mysql.com/doc/refman/5.5/en/creating-spatial-indexes.html – TheSteve0 2013-10-07 04:37:42