Рядом с использованием Long/Lat SQL Server 2008

У меня есть таблица Places, каждая запись в этой таблице имеет свою долготу и широту.

Я хочу выполнить поиск в этой таблице, чтобы найти места рядом с определенной долготой и широтой (предположим, что радиус близлежащего круга составляет 25 км).


person Abdullah Darwish    schedule 26.05.2012    source источник
comment
Какие существуют типы данных долготы и широты? В частности, вы используете тип данных geography? И на этом сайте и в других местах есть множество вопросов о расчетах широты и долготы и поиске ближайших поисков, поэтому вы можете продолжить исследование, а затем вернуться с более конкретным вопросом, если у вас все еще есть проблемы.   -  person Pondlife    schedule 27.05.2012
comment
Я использую географическую точку (тип данных)   -  person Abdullah Darwish    schedule 27.05.2012
comment
возможный дубликат Поиск ближайших точек из географического столбца   -  person Pondlife    schedule 29.05.2012


Ответы (1)


Поскольку у вас есть заданное расстояние для ограничения поиска, ваш вопрос немного отличается от вопроса, который задают, чтобы найти ближайшие точки (без ограничений). Я придумал две формулы, которые упрощают вычисление расстояния до разницы в градусах. Эта формула просто соответствует форме Земли, а не какой-либо другой сферической форме:

Следующий показывает, сколько километров окружает 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 км для каждой стороны. Если вы настаиваете на круглой области, вы можете выполнить расчет второго раунда для первой серии результатов с реальной формулой расстояния в точках и опустить те, которые не входят в ваш круг.

person Ali Sheikhpour    schedule 24.09.2019