首页  >  文章  >  数据库  >  如何查询数据库以获取与指定半径重叠的多个圆形标记的结果?

如何查询数据库以获取与指定半径重叠的多个圆形标记的结果?

Linda Hamilton
Linda Hamilton原创
2024-10-31 03:04:31446浏览

How to Query a Database for Results Overlapping Multiple Circular Markers with Specified Radii?

查询数据库中半径重叠范围内的结果

问题:

在具有地理特征的数据库中数据,您想要选择与指定半径的多个圆形标记部分重叠的结果。现有的 SQL 查询无法准确识别多个标记重叠的结果。

解决方案:

要获得精确结果,可以使用以下 SQL 语句:

<code class="sql">SELECT A.user_id, A.radius_id, A.latitude, A.logitude
FROM UserA AS A, 
     (SELECT user_id, latitude, longitude 
       FROM UserB 
       WHERE user_id = 8) AS B
WHERE (POW((A.latitude-B.latitude)*111.12, 2) + POW((A.longitude - B.longitude)*111.12*cos(A.latitude), 2)) <= 4</code>

解释:

此查询使用圆的方程来确定给定点(来自 UserA)是否落在圆的半径范围内(由纬度和纬度定义)以 UserB 为起点的半径的经度)。涉及以下步骤:

  1. 将经纬度转换为公里:将经纬度差值乘以111.12,转换为公里。
  2. 计算使用圆方程计算距离: 使用修改后的公式 POW((A.latitude-B.latitude)*111.12, 2) POW((A.longitude - B.经度)*111.12*cos(A.纬度), 2).
  3. 将距离与半径进行比较:如果计算出的距离小于或等于半径的平方,则该点属于半径。

通过使用此查询,您可以准确识别与多个圆形标记重叠的结果,即使圆圈相互接触也是如此。

以上是如何查询数据库以获取与指定半径重叠的多个圆形标记的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn