Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задача про пересечении квадратов или укрупнении их. / 7 сообщений из 7, страница 1 из 1
27.01.2021, 17:44
    #40039433
VinniL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
Добрый день!

Есть первая таблица с точками присутствия продаж (координатами latitude и longitude)ю
Нужно выбрать все точки присутствия в радиусе 1 км от объекта из второй таблицы.

В первой таблице более 5 млрд записей, во второй более 10 тыс.


Например, есть магазин, и нужно выбрать все ларьки и магазины в радиусе 1 км от этого магазина.

[image001.png]

КоординатыСтороны квадратаNameLatitudeLongitudelat1lat2lng1lng2Ларек158.24539.42458.24258.24839.42139.427Ларек258.27339.45958.2758.27639.45639.462Ларек358.17439.31258.17158.17739.30939.315Магазин58.2439.4158.23758.24339.40739.413


Хочу сделать следующим образом.
1. Из координаты магазина сделать квадрат, прибавив 0.003 (около 1007 метров) - lat1,lat2,lng1,lng2
2. Из таблицы1 отфильтровать только ларьки, которые входят эти квадраты.
FROM table1 AS t1
JOIN table2 AS t2
ON t1.lat2 > t2.lat1 AND t1.lat2 < t2.lat2
AND t1.lng2 > t2.lng1 AND t1.lng2 < t2.lng2
3. Из выборке уже сформировать витрину с ключом магазин+ларек.


Возникает проблема с пересечением квадратов, то есть один ларек попадает сразу в два квадрата.

Есть мысль, что если есть пересечение, то вычислять новый квадрат, в который будут входить предыдущие два.

Но тут проблема с реализацией в SQL.

Просьба сгенерировать идеи или поделить опытом. Пока что мои знания кончились.


Заранее благодарю!


З.Ы. В оригинале речь идет не о магазинах и ларьках, но пример более менее удачный
...
Рейтинг: 0 / 0
27.01.2021, 18:19
    #40039451
Ennor Tiegael
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
VinniL,

А в чем проблема с пересечением? Ну да, один ларек будет попадать в выборку несколько раз, но каждый раз это будет по отношению к разным магазинам. Если вам надо без дубликатов, то определитесь, по какому принципу они будут отсеиваться.

ЗЫ Типы данных geometry / geography не рассматривали?
...
Рейтинг: 0 / 0
27.01.2021, 19:24
    #40039458
vikkiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
+ к выше, есть специально для таких вещей типы
STDistance ?
Или по другому, т.е. фактически увеличиваешь зону объекта (из точки координат по радиусу) до искомого километра и смотришь где получается флаг=1 через STIntersects , ну и с др. методами по производительности сравнить
...
Рейтинг: 0 / 0
27.01.2021, 20:51
    #40039475
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
VinniL,

надо не "выбирать", а составить и заполнить таблицу влияния, в которой будут перечислены центры влияния и сопутствующие им субъекты влияния. Затем будет просто определить субъекты, попавшие под многократное влияние.
...
Рейтинг: 0 / 0
28.01.2021, 08:00
    #40039540
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
Хоть убей, не понимаю, зачем такие сложности.
Просто посчитать для этих 10000 расстояние до всего миллиарда - и всё. Влоб.
Там и те, и другие точки заданы пространственными координатами? Значит, расстояние в 1 км между точками - это когда географические координаты различаются не более, чем в 3 знаке после запятой.
...
Рейтинг: 0 / 0
28.01.2021, 13:14
    #40039621
VinniL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
Благодарю за ответы!
Думаю да, это замудренный путь, надо проще сделать.

В итоге переделал с подзапросами и скрипт начал работать.

Вопрос снимаю)
...
Рейтинг: 0 / 0
28.01.2021, 15:07
    #40039657
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача про пересечении квадратов или укрупнении их.
uaggster
Хоть убей, не понимаю, зачем такие сложности.
Просто посчитать для этих 10000 расстояние до всего миллиарда - и всё. Влоб.
Там и те, и другие точки заданы пространственными координатами? Значит, расстояние в 1 км между точками - это когда географические координаты различаются не более, чем в 3 знаке после запятой.
Долготу и широту вы считаете в километрах? Однако! Действительно в лоб!
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задача про пересечении квадратов или укрупнении их. / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]