У меня есть таблица Places, каждая запись в этой таблице имеет свою долготу и широту.
Я хочу выполнить поиск в этой таблице, чтобы найти места рядом с определенной долготой и широтой (предположим, что радиус близлежащего круга составляет 25 км).
У меня есть таблица Places, каждая запись в этой таблице имеет свою долготу и широту.
Я хочу выполнить поиск в этой таблице, чтобы найти места рядом с определенной долготой и широтой (предположим, что радиус близлежащего круга составляет 25 км).
Поскольку у вас есть заданное расстояние для ограничения поиска, ваш вопрос немного отличается от вопроса, который задают, чтобы найти ближайшие точки (без ограничений). Я придумал две формулы, которые упрощают вычисление расстояния до разницы в градусах. Эта формула просто соответствует форме Земли, а не какой-либо другой сферической форме:
Следующий показывает, сколько километров окружает 1 градус долготы вокруг данной широты:
LongDistanceFactor = − 0.0114 * (lat)^2 − 0.2396(lat) + 112.57
а второй показывает, сколько километров окружено в 1 градусе широты вокруг данной широты:
LatDistanceFactor = 0.0139(lat) + 110.51
Таким образом, для заданных 25 км вокруг (широта, долгота) вам просто нужно найти точки, широта которых находится между lat ± (25/LatDistanceFactor)
и долготой между lng ± (25/LongDistanceFactor)
.
Изменить: поскольку я использую ± как для широты, так и для долготы, целевой областью будет квадрат с длиной 50 км для каждой стороны. Если вы настаиваете на круглой области, вы можете выполнить расчет второго раунда для первой серии результатов с реальной формулой расстояния в точках и опустить те, которые не входят в ваш круг.
geography
? И на этом сайте и в других местах есть множество вопросов о расчетах широты и долготы и поиске ближайших поисков, поэтому вы можете продолжить исследование, а затем вернуться с более конкретным вопросом, если у вас все еще есть проблемы. - person Pondlife   schedule 27.05.2012