0

我从 GPS 接收数据并将它们存储在 MySQL 数据库中。我有以下列:

用户 ID(整数)
纬度(双)
经度(双)
水平精度(双)

水平精度是纬度/经度周围的半径,因此我的用户具有同等概率可以在该区域的任何点。

我需要找出两个用户相交的概率。但我也有30米的视野范围。如果水平精度为 0,我可以只测量两个半径为 30 米的经纬度圆的交点面积。但在我的情况下这是不可能的,因为水平精度可能在 5 到 3000 之间。通常它超过我的视野范围。

我想我可以测量两个圆锥相交的区域,这个圆锥的内圆将具有水平精度半径 + 30 米,外圆将具有水平精度半径。但是这个解决方案似乎有点复杂。

我想听听关于这个和其他可能的解决方案的一些想法。

我已经检查了 MySQL Spatial 扩展,据我所知,它不能为我做这样的计算。

谢谢。

4

1 回答 1

0

我正在解决您所描述的问题。我的方法是将 Lat/Long(世界坐标)转换为 X/Y(笛卡尔坐标),然后应用勾股定理 a^2 + b^2 = c^2 来解决问题。

首先,您需要转换纬度/经度坐标。

要获得 X,请将半径乘以角度的余弦 (cos)(注意:该角度必须以弧度表示)。

要获得 Y,您可以执行与上述相同的操作,但使用正弦函数 (sin)。

将度数转换为径向线 将角度乘以 PI(约 3.14159...)/180 的数量。

弧度 = 角度 * (PI / 180);

求解 c^2 "C Squared" c = SQRT (a*a + b*b);

有关度数到弧度的更多信息:http: //www.mathwarehouse.com/trigonometry/radians/convert-degee-to-radians.php

有关以下信息的更多信息:将纬度/经度转换为 X/Y 坐标: http: //www.mathsisfun.com/polar-cartesian-coordinates.html

我通常通过在 ask.com 上提问来找到解决此类问题所需的信息。

一切顺利。

艾伦

于 2012-01-06T16:04:23.977 回答