加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

MySQL – 从数据库中查找半径内的点

发布时间:2021-03-09 11:24:56 所属栏目:编程 来源:网络整理
导读:我有一个表有一个POINT列,其中包含各个位置的纬度和经度. 然后我还在浏览器中有一个来自地理位置的用户位置. 我需要做的是找到表中所有记录的所有记录,其中POINT值在半径10公里(或半径X公里)内,按距离最近的第一个排序. 我的表在POINT列上有一个SPATIAL索引.

我有一个表有一个POINT列,其中包含各个位置的纬度和经度.

然后我还在浏览器中有一个来自地理位置的用户位置.

我需要做的是找到表中所有记录的所有记录,其中POINT值在半径10公里(或半径X公里)内,按距离最近的第一个排序.

我的表在POINT列上有一个SPATIAL索引.

最佳答案 我正在开展一个项目,我正在计算多个地点之间的距离.我正在使用以下查询来选择给定半径内的object_id.

SELECT id,( 6371 * 
    ACOS( 
        COS( RADIANS( db_latitude ) ) * 
        COS( RADIANS( $user_latitude ) ) * 
        COS( RADIANS( $user_longitude ) - 
        RADIANS( db_longitude ) ) + 
        SIN( RADIANS( db_latitude ) ) * 
        SIN( RADIANS( $user_latitude) ) 
    ) 
) 
AS distance FROM the_table HAVING distance <= $the_radius ORDER BY distance ASC"

我无法解释ACOS配方本身,因为我从研究中得到了它.

db_latitude = database latitude field
db_longitude = database longitude field
$user_latitude = browser latitude co?rdinate
$user_longitude = browser longitude co?rdinate
$the_radius = the radius that you want to search in

这是公里.

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读