如何解决MySQL纬度/经度半径搜索
| 我有一张带邮政编码(int)和位置(point)的表。我正在寻找MySQL查询或函数。这是日期的示例。我想返回100英里。37922|POINT(35.85802 -84.11938)
有一个简单的查询可以实现这一目标吗?
好吧,我有这个
select x(Location),Y(Location) FROM zipcodes
这将给我两点,但是我如何找出x / y距离之内的内容呢?
解决方法
用于执行此操作的查询不是很困难,但是很慢。您可能要使用Haversine公式。
http://en.wikipedia.org/wiki/Haversine_formula
将其转换为SQL并不是很困难,但是随着数据集的增加,计算表中每个记录的距离会变得很昂贵。
通过使用geohash函数限制候选记录的位置,可以大大减少工作量。如果准确性很重要,则可以将Haversine公式应用于geohash区域内的记录。
如果mysql人员从未完成过他们的GIS和Spatial扩展,请考虑使用ElasticSearch或MongoDB。
这里有一个非常完整的讨论:
计算地理邻近度的公式
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。