Радиус нескольких точек широты/долготы

У меня есть программа, которая берет в качестве входа массив точек lat/long. Я должен выполнить проверку на том массиве, чтобы гарантировать, что все точки в определенном радиусе. Так, например, максимальный радиус, который я позволю, составляет 100 миль. Учитывая массив lat/long (прибывающий из базы данных MySQL, могли быть 10 точек, мог быть 10000), я должен выяснить, поместятся ли они все в круг с радиусом 100 миль.

Отчасти озадаченный о том, как приблизиться к этому. Любая справка значительно ценилась бы.

7
задан rwilliams 26 April 2010 в 21:33
поделиться

3 ответа

Найдите наименьший круг, содержащий все точки , и сравните его радиус со 100.

5
ответ дан 7 December 2019 в 07:41
поделиться

Проще всего решить эту проблему, преобразовав координаты в (X,Y,Z), а затем найдя расстояние вдоль сферы.

Предполагая, что Земля является сферой (совершенно неверной) с радиусом R...

X = R * cos(длинный) * cos(lat)

Y = R * sin(long) * cos(lat)

Z = R * sin(lat)

В этот момент вы можете аппроксимировать расстояние между точками, используя расширение теоремы Пифагора для трёх пространств:

dist = sqrt((x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2)

Но чтобы найти фактическое расстояние вдоль поверхности, вам нужно знать угол, поднимый двумя точками от начала (центра Земли).

Представляя ваши местоположения в виде векторов V1 = (X1, Y1, Z1) и V2 = (X2, Y2, Z2), угол равен:

angle = arcsin((V1 x V2) / (| В1|| V2|)), где x — перекрестное произведение.

Расстояние тогда:

dist = (окружность Земли) * угол / (2 * pi)

Конечно, это не учитывает изменения высоты или тот факт, что Земля шире на экваторе.

Приношу извинения за то, что не написал свою математику в LaTeX.

1
ответ дан 7 December 2019 в 07:41
поделиться

Ознакомьтесь с ответами на этот вопрос. Он дает возможность измерить расстояние между любыми двумя (лат, длинными) точками. Затем используйте алгоритм наименьшего замкнутого круга.

Я подозреваю, что найти наименьший замкнутый круг может быть достаточно сложно на плоскости, поэтому, чтобы исключить тонкости работы с широтой и долготой и сферической геометрией, вам, вероятно, следует рассмотреть возможность отображения ваших точек на плоскость XY. Это внесет некоторое количество искажений, но если ваш предполагаемый масштаб составляет 100 миль, вы, вероятно, можете жить с этим. После того, как у вас есть круг и его центр на плоскости XY, вы всегда можете сопоставить с террестиальной сферой и повторно проверить свои расстояния.

0
ответ дан 7 December 2019 в 07:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: