Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поиск на карте (географической) в определенном радиусе  [new]
Alibek B.
Member

Откуда:
Сообщений: 3629
Подскажите, как лучше сделать.
Есть несколько точек, заданных широтой и долготой.
Нужно выбрать точки, которые находятся на расстоянии не более заданного.
Как лучше такой поиск осуществить?

1. В WHERE пересчитывать координаты в полярные и отбирать по r<N?

2. В запросе выбрать прямоугольную область (lat between ... and lon between ...), а для полученных точек расстояния вычислять на клиенте?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
9 сен 13, 11:51    [14812880]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Glory
Member

Откуда:
Сообщений: 104760
Alibek B.
Нужно выбрать точки, которые находятся на расстоянии не более заданного.

От чего ? От любой из " несколько точек, заданных широтой и долготой." ? От одной из " несколько точек, заданных широтой и долготой." ? От друг друга ?
9 сен 13, 11:55    [14812917]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
Тыкаем котёнка в его лужу:
Справочник по методам типа данных geography
STDistance
9 сен 13, 12:01    [14812947]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
aleks2
Guest
Alibek B.
Подскажите, как лучше сделать.
Есть несколько точек, заданных широтой и долготой.
Нужно выбрать точки, которые находятся на расстоянии не более заданного.
Как лучше такой поиск осуществить?

1. В WHERE пересчитывать координаты в полярные и отбирать по r<N?

2. В запросе выбрать прямоугольную область (lat between ... and lon between ...), а для полученных точек расстояния вычислять на клиенте?
________________________
Мы смотрим с оптимизмом...
...в оптический прицел.


2. Позволяет задействовать индексы.
3. Затем отобранные кандидаты допроверяются точно.
4. Где "допроверять" - дело хозяйское.
9 сен 13, 12:13    [14813044]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Alibek B.
Member

Откуда:
Сообщений: 3629
Glory
От чего ?

Слово пропустил, "не более заданного от заданной точки". То есть на карте пользователь отмечает точку и нужно выбрать из БД точки, находящиеся не далее определенного расстояния от отмеченной позиции.

По поводу типов данных geography — не хотелось бы слишком сильно привязываться к платформе.

aleks2
2. Позволяет задействовать индексы.

Да, первичный отбор лучше делать по прямоугольнику и использовать индексы.
Но может быть есть какие-то рекомендации, которые вытекают из практического опыта?
9 сен 13, 12:21    [14813105]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
Alibek B.,

сколько у вас будет храниться точек и какие возможны расстояния?
9 сен 13, 12:40    [14813197]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Alibek B.
По поводу типов данных geography — не хотелось бы слишком сильно привязываться к платформе.

А как сейчас у вас хранятся координаты? В виде пары вещественных чисел? Можете показать пример?
9 сен 13, 12:49    [14813259]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Alibek B.
Member

Откуда:
Сообщений: 3629
Пока что ничего не хранится, это проект.
Координаты будут хранится, как вещественные числа.
Количество записей ожидается с приростом 600-800 тысяч записей в год.
9 сен 13, 12:59    [14813321]     Ответить | Цитировать Сообщить модератору
 Re: Поиск на карте (географической) в определенном радиусе  [new]
Alibek B.
Member

Откуда:
Сообщений: 3629
Расстояния радиусов небольшие (т.е. можно не учитывать, что это проекция на сферу), в пределах сотни-другой километров.
9 сен 13, 13:00    [14813330]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить