我目前在mysql数据库中的位置不到一百万个,都有经度和纬度信息.
我试图通过查询找到一个点和许多其他点之间的距离.它没有我想要的那么快,尤其是每秒100次点击.
是否有更快的查询或可能比mysql更快的系统?我正在使用此查询:
SELECT
name,
( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) )
* cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763))
* sin( radians(locations.lat)))) AS distance
FROM locations
WHERE active = 1
HAVING distance < 10
ORDER BY distance;
Run Code Online (Sandbox Code Playgroud)
注意:提供的距离以英里为单位.如果您需要公里数,请使用6371而不是3959.
我想找到两个不同点之间的距离.我知道这可以用很大的圆距来完成. http://www.meridianworlddata.com/Distance-calculation.asp
一旦完成,我想找到一个点和距离,我想找到距离北方的点,以及距离为东的点,以便在点周围创建一个方框.
可能重复:
MySQL纬度和经度表设置
我知道这个问题可能已被多次询问,我已经研究了很多,我需要特定的帮助.
让我说我有一个表格,用户输入经度和纬度,我有一个数据库,其中包含经度和纬度的表,我如何搜索该表中半径15英里内的一个或多个点?
我试图用距离计算给定的纬度/长度,并且只返回落在该圆距离的行(数据库具有纬度/长度坐标).我不知道的是我会怎么做.我目前正在使用Native SQL,并且使用带有计算此值的hasrsine公式的纯文本,如果我是正确的,则无法使用CriteriaBuilder执行hasrsine公式.但是我希望使用CriteriaBuilder获得相同的结果.我已经尝试过使用hibernate-spatial依赖,但我并没有像我想要的那样让它工作.我也遵循过这样的教程.
https://docs.jboss.org/hibernate/search/4.2/reference/en-US/html/spatial.html
我使用的数据库是MySQL.
Hibernate版本4.3.10.
此教程也没有让我走得太远使用JPA Criteria Api和hibernate spatial 4
那么我将如何使用具有给定纬度/长度和距离的MySQL构建CriteriaBuilder查询,并仅检索落在该区域中的行,将它们与存储在数据库中的纬度/经度坐标进行比较.