Вероятность пересечения двух пользователей с горизонтальной точностью и зоной обзора - PullRequest
0 голосов
/ 31 июля 2011

Я получаю данные от GPS и храню их в базе данных MySQL.У меня есть следующие столбцы:

User ID (int)
Latitude (double)
Longitude (double)
Horizontal Accuracy (double)

Точность по горизонтали - это радиус вокруг широты / долготы, поэтому мой пользователь с эквивалентной вероятностью может находиться в любой точке этой области.

Мне нужно выяснить вероятность того, что два пользователя пересекались.Но у меня также есть зона обзора, которая составляет 30 метров.Если бы горизонтальная точность была равна 0, я мог бы просто измерить площадь пересечения двух окружностей с радиусом 30 метров вокруг широты / долготы.Но в моем случае это невозможно, потому что горизонтальная точность может быть в диапазоне от 5 до 3000. Обычно это больше, чем область моего зрения.

Я думаю, что я могу измерить область пересечения двух конусов, где внутренний круг этого конусабудет иметь радиус горизонтальная точность + 30 метров , а внешний круг будет иметь радиус горизонтальная точность .Но это решение кажется немного сложным.

Я хочу услышать некоторые мысли об этом и другом возможном решении.

Я проверил расширение MySQL Spatial и, насколько я вижу, он не может выполнить такие вычисления для меня.

Спасибо.

1 Ответ

0 голосов
/ 06 января 2012

Я работал над такой проблемой, которую вы описываете.Я подошел к нему, чтобы преобразовать широту / долготу (мировые координаты) в 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.

Всего наилучшего.

Аллан

...