MySQL Lat / Lon radius搜索

时间:2011-06-15 00:15:06

标签: mysql

我有一个包含zipcode(int)和Location(point)的表。我正在寻找MySql查询或功能。这是日期的一个例子。我想回100英里。

37922|POINT(35.85802 -84.11938)

有一个简单的查询来实现这个目标吗?

好的,我有这个

select x(Location), Y(Location) FROM zipcodes

这会给我两点,但我怎么弄清楚x / y距离内的什么?

1 个答案:

答案 0 :(得分:1)

执行此操作的查询并不太难,但速度很慢。您可能想要使用Haversine公式。

http://en.wikipedia.org/wiki/Haversine_formula

将其转换为SQL应该不会太困难,但随着数据集的增加,计算表中每条记录的距离会变得很昂贵。

通过使用geohash函数来限制候选记录的轨迹,可以显着减少工作量。如果准确性很重要,可以将Haversine公式应用于geohash区域内的记录。

如果mysql人员从未完成过GIS和Spatial扩展,请考虑使用ElasticSearch或MongoDB。

这里有一个非常完整的讨论: Formulas to Calculate Geo Proximity