Один общий класс констант - плохая идея. Константы должны быть сгруппированы вместе с классом, с которым они наиболее логически связаны.
Вместо того, чтобы использовать какие-либо переменные (особенно перечисления), я бы предложил использовать методы. Создайте метод с тем же именем, что и у переменной, и пусть он возвращает значение, которое вы присвоили переменной. Теперь удалите переменную и замените все ссылки на нее вызовами только что созданного вами метода. Если вы чувствуете, что константа достаточно универсальна, и вам не нужно создавать экземпляр класса просто для ее использования, тогда сделайте метод константы методом класса.
MySQL имеет целый ряд функций для работы с пространственными данными:
Пространственные расширения MySQL
Я думаю, что вам нужен раздел об измерении взаимосвязей между геометриями:
Я выполнил аналогичный географический поиск, вычислив ограничивающую рамку через расстояние большого круга и запросив база данных для этого. Вам по-прежнему нужен еще один проход в вашем приложении, чтобы «скруглить углы» от ограничивающей рамки до круга.
Итак, учитывая базу данных точек, точку поиска (X, Y) и расстояние D, найдите все точки в пределах D от (X, Y):
В качестве сокращения я обычно вычисляю градусы на милю для широты и долготы (на экваторе, так как градусы на милю на полюсах различаются для долготы) и вывести deltaX и deltaY как (D * градусы-широты на милю) или градусы-долготы на милю. Разница на экваторе и полюсе не имеет большого значения, поскольку я уже вычисляю фактическое расстояние после запроса SQL.
К вашему сведению - от 0,167469 до 0,014564 градуса-долона на милю и 0,014483 градуса-широты на милю. миля
чтобы удалить точки в углах квадрата, которые не находятся в пределах вашего круга расстояния.В качестве сокращения я обычно вычисляю градусы на милю для широты и долготы (на экваторе, поскольку градусы на милю -mile отличается на полюсах для lon), и вывести deltaX и deltaY как (D * градусы-широты на милю) или градусы-долготы на милю. Разница на экваторе и полюсе не имеет большого значения, поскольку я уже вычисляю фактическое расстояние после запроса SQL.
К вашему сведению - от 0,167469 до 0,014564 градуса-долона на милю и 0,014483 градуса-широты на милю. миля
чтобы удалить точки в углах квадрата, которые не находятся в пределах вашего круга расстояния.В качестве сокращения я обычно вычисляю градусы на милю для широты и долготы (на экваторе, поскольку градусы на милю -mile отличается на полюсах для lon), и вывести deltaX и deltaY как (D * градусы-широты на милю) или градусы-долготы на милю. Разница на экваторе и полюсе не имеет большого значения, поскольку я уже вычисляю фактическое расстояние после запроса SQL.
К вашему сведению - от 0,167469 до 0,014564 градуса-долона на милю и 0,014483 градуса-широты на милю. миля