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