У меня есть программа, которая берет в качестве входа массив точек lat/long. Я должен выполнить проверку на том массиве, чтобы гарантировать, что все точки в определенном радиусе. Так, например, максимальный радиус, который я позволю, составляет 100 миль. Учитывая массив lat/long (прибывающий из базы данных MySQL, могли быть 10 точек, мог быть 10000), я должен выяснить, поместятся ли они все в круг с радиусом 100 миль.
Отчасти озадаченный о том, как приблизиться к этому. Любая справка значительно ценилась бы.
Найдите наименьший круг, содержащий все точки , и сравните его радиус со 100.
Проще всего решить эту проблему, преобразовав координаты в (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.
Ознакомьтесь с ответами на этот вопрос. Он дает возможность измерить расстояние между любыми двумя (лат, длинными) точками. Затем используйте алгоритм наименьшего замкнутого круга.
Я подозреваю, что найти наименьший замкнутый круг может быть достаточно сложно на плоскости, поэтому, чтобы исключить тонкости работы с широтой и долготой и сферической геометрией, вам, вероятно, следует рассмотреть возможность отображения ваших точек на плоскость XY. Это внесет некоторое количество искажений, но если ваш предполагаемый масштаб составляет 100 миль, вы, вероятно, можете жить с этим. После того, как у вас есть круг и его центр на плоскости XY, вы всегда можете сопоставить с террестиальной сферой и повторно проверить свои расстояния.