【发布时间】:2012-11-09 16:53:49
【问题描述】:
我想在 Java 或 MySQL 中实现 用户可用的最近位置算法。
我在 MySQL 数据库中有 Stations 表,其中包含大约 100K 条Stations with Latitude and Longitude 记录。如果用户将他的纬度和经度指定为 x 和 y,那么我想返回 用户所在位置提供的最近站点。
所以请向我推荐 Java 或 MySQL 中可用的任何算法。
我尝试了以下查询,但它似乎 性能较慢 -
SELECT *,3956*2*ASIN(SQRT(POWER(SIN((user_lat-abs(st.station_lat))*pi()/180/2 ), 2) + COS(user_lat*pi()/180)*COS(abs(st.station_lat) *pi()/180)*POWER(SIN((user_lon-
st.station_lon)*pi()/180/2 ),2))) AS distance FROM Stations st HAVING distance < 10 ORDER BY distance;
提前致谢。
【问题讨论】:
-
也许你应该把算法放在问题中,以便人们可以尝试修改它以获得更好的性能-PS算法不是实现
-
感谢@Udo Klimaschewski,这很有帮助。
-
我建议使用“等角投影”而不是“余弦定律”来计算距离。
标签: java mysql location latitude-longitude