定向地图搜索

时间:2010-06-02 08:22:29

标签: php sql geolocation geospatial computational-geometry

我正在尝试编写一些代码来搜索地图上的给定点,但是在指南针的给定弧中。

e.g。 45度(东北),两侧20度。

到目前为止,我有一个SQL命令可以给出给定半径的结果,需要一些有关如何将其过滤到某个方向的帮助。

SELECT * FROM (SELECT `place1_id`, `place2_id`, ( 6371 * acos( cos( radians(search_latitude) ) * cos( radians( `location_lat` ) ) * cos( radians( `location_long` ) - radians(search_longitude) ) + sin( radians(search_latitude) ) * sin( radians( `location_lat` ) ) ) ) AS `distance` FROM `place` ORDER BY distance) AS `places` WHERE `places`.`distance` < search_radius AND `places`.`place2_id` = ?

我是否可以在SQL中执行此操作(如果可能),还是需要一些PHP应用于它?

任何和所有帮助非常感谢!

2 个答案:

答案 0 :(得分:1)

感谢vartec的帮助,但我找到了这个网站http://www.movable-type.co.uk/scripts/latlong.html,它提供了大量有关联合和计算的信息。

答案 1 :(得分:0)

数据库可以使用空间扩展。

我认为你正在使用MySQL,它的空间扩展在这里描述: http://dev.mysql.com/doc/refman/5.5/en/spatial-extensions.html