我有一个包含zipcode(int)和Location(point)的表。我正在寻找MySql查询或功能。这是日期的一个例子。我想回100英里。
37922|POINT(35.85802 -84.11938)
有一个简单的查询来实现这个目标吗?
好的,我有这个
select x(Location), Y(Location) FROM zipcodes
这会给我两点,但我怎么弄清楚x / y距离内的什么?
答案 0 :(得分:1)
执行此操作的查询并不太难,但速度很慢。您可能想要使用Haversine公式。
http://en.wikipedia.org/wiki/Haversine_formula
将其转换为SQL应该不会太困难,但随着数据集的增加,计算表中每条记录的距离会变得很昂贵。
通过使用geohash函数来限制候选记录的轨迹,可以显着减少工作量。如果准确性很重要,可以将Haversine公式应用于geohash区域内的记录。
如果mysql人员从未完成过GIS和Spatial扩展,请考虑使用ElasticSearch或MongoDB。
这里有一个非常完整的讨论: Formulas to Calculate Geo Proximity