当前位置: 首页 > 面试题库 >

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

冷翼
2023-03-14
问题内容

我有一个表,该表的POINT列包含各个位置的纬度和经度。

然后,我还会从浏览器中的地理位置获得一个用户位置。

我需要做的是从表中找到所有记录,其中的POINT值在10 km半径(或X km半径)内,并按距离最近的顺序排序。

我的表SPATIALPOINT列上有一个索引。


问题答案:

我目前正在从事一个项目,该项目正在计算多个位置之间的距离。我正在使用以下查询来选择给定半径内的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

这是公里。



 类似资料:
  • 我在PostgreSQL/PostGIS中有一个名为的表,其中有两个几何列:()和(),指示旅程的开始和结束位置。 我还有一个单独的表,名为,带有几何列(),指示办公室的位置。 我的目标是从表中选择目标距离任何办公地点1000米以内的记录。 我需要激发什么查询才能获得所需的结果?

  • 问题内容: 我有一个数据库,该数据库具有点的纬度/经度。如果我要选择以特定点为中心的特定范围内的所有点,那么如果该点上有任何点,则可以正常工作,但是不会被选中! 我使用以下查询: 在半径大于2的情况下,地图的中心位于[-27.5796498,-27.5796498]。如果某个点位于此非常精确的中心,则此查询的效果很好,但不会被选中。为什么? 编辑:我发现上面的公式为所有点但返回到位于中心MYSQL

  • 我有一个 netCDF 文件,其中包含特定时间南半球的多个气旋位置(纬度、纬度)和气温。 我想要的是提取温度值​​距离每个气旋位置中心10个测地线度(~1110公里)的半径内。想法是确定温度值​​与每个气旋相关(假设与气旋中心的最大径向距离为10º),并绘制一张仅包含这些温度值的全球等值线图。 我在这里搜索了很多,但我只找到了适用于距离一个特定的纬度中心的距离的代码(比如这个:如何从纬度和经度值的

  • 问题内容: 我有一个网站,使用数据库提供的地址将位置存储在MySQL数据库和GeoCode中。 现在,我想添加一个功能,该功能将找到最接近指定点的位置,例如他们现在站立或输入的位置。我使用JavaScript和jQuery对地址解析器和Google地图进行编码,然后使用PHP从数据库中获取结果。 我读过有关的信息,但是我无法弄清楚在需要显示自己的数据库位置而不是Google的数据库位置的情况下它将

  • 问题内容: 有什么命令可以从所有数据库中找到某个表吗?因为我忘了桌子在哪里。谢谢。 问题答案: 使用特定于MySQL的: …或使用ANSI标准INFORMATION_SCHEMA.TABLES:

  • 我正在研究一个问题,基本上可以归结为以下几点: 给定: null 对于这样一个位置,有什么算法的想法吗?我最终将使用java实现,但我可以使用PsuedoCode。