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

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

我有一个表有一个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 cordinate
$user_longitude = browser longitude cordinate
$the_radius = the radius that you want to search in

这是公里.

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/shujuku/mysql/20210221/17588.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部