确定半径内的重叠标记
为了识别落在重叠标记半径内的人,我们利用几何原理并将距离转换为公里以保持一致性.
以 (x1, y1) 为圆心、半径为 r 的圆内的点 (x, y) 的方程为:
(x - x1)^2 + (y - y1)^2 <= r^2
因为使用以下公式将度数转换为公里1 度 = 111.12 公里,方程变为:
((x - x1) * 111.12)^2 + ((y - y1) * 111.12)^2 = 4 (for radius = 2km)
通过此方程,检索与任何标记半径重叠的结果的 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, 2)) <= 4</code>
在这个查询中,UserA 的记录由表 A 表示,UserB 的 ID 为 8 的记录由表 B 表示。POW() 函数对数字求幂,这里用于对坐标差进行平方。
以上是我们如何使用 SQL 识别重叠的标记半径?的详细内容。更多信息请关注PHP中文网其他相关文章!