【问题标题】:MySQL Lat/Lon radius searchMySQL Lat/Lon 半径搜索
【发布时间】:2011-09-15 03:38:04
【问题描述】:

我有一张带有 zipcode(int) 和 Location(point) 的表格。我正在寻找一个 MySql 查询或函数。这是日期的示例。我想返回 100 英里。

37922|POINT(35.85802 -84.11938)

有没有简单的查询来实现这一点?

好的,我有这个

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

这将给我两分,但我如何找出 x/y 距离内的内容?

【问题讨论】:

  • 使用函数有什么问题?
  • 除非你能向我展示一个使用 Point 而不是小数的函数来推迟我真的不想要的纬度/经度。

标签: mysql


【解决方案1】:

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

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

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

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

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-31
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
相关资源
最近更新 更多