Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
27.01.2021, 17:44
|
|||
---|---|---|---|
|
|||
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
Добрый день! Есть первая таблица с точками присутствия продаж (координатами 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. Просьба сгенерировать идеи или поделить опытом. Пока что мои знания кончились. Заранее благодарю! З.Ы. В оригинале речь идет не о магазинах и ларьках, но пример более менее удачный ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2021, 18:19
|
|||
---|---|---|---|
|
|||
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
VinniL, А в чем проблема с пересечением? Ну да, один ларек будет попадать в выборку несколько раз, но каждый раз это будет по отношению к разным магазинам. Если вам надо без дубликатов, то определитесь, по какому принципу они будут отсеиваться. ЗЫ Типы данных geometry / geography не рассматривали? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2021, 19:24
|
|||
---|---|---|---|
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
+ к выше, есть специально для таких вещей типы STDistance ? Или по другому, т.е. фактически увеличиваешь зону объекта (из точки координат по радиусу) до искомого километра и смотришь где получается флаг=1 через STIntersects , ну и с др. методами по производительности сравнить ... |
|||
:
Нравится:
Не нравится:
|
|||
|
27.01.2021, 20:51
|
|||
---|---|---|---|
|
|||
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
VinniL, надо не "выбирать", а составить и заполнить таблицу влияния, в которой будут перечислены центры влияния и сопутствующие им субъекты влияния. Затем будет просто определить субъекты, попавшие под многократное влияние. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.01.2021, 08:00
|
|||
---|---|---|---|
|
|||
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
Хоть убей, не понимаю, зачем такие сложности. Просто посчитать для этих 10000 расстояние до всего миллиарда - и всё. Влоб. Там и те, и другие точки заданы пространственными координатами? Значит, расстояние в 1 км между точками - это когда географические координаты различаются не более, чем в 3 знаке после запятой. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.01.2021, 13:14
|
|||
---|---|---|---|
|
|||
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
Благодарю за ответы! Думаю да, это замудренный путь, надо проще сделать. В итоге переделал с подзапросами и скрипт начал работать. Вопрос снимаю) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.01.2021, 15:07
|
|||
---|---|---|---|
Задача про пересечении квадратов или укрупнении их. |
|||
#18+
uaggster Хоть убей, не понимаю, зачем такие сложности. Просто посчитать для этих 10000 расстояние до всего миллиарда - и всё. Влоб. Там и те, и другие точки заданы пространственными координатами? Значит, расстояние в 1 км между точками - это когда географические координаты различаются не более, чем в 3 знаке после запятой. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=46&mobile=1&tid=1685156]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
342ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
others: | 539ms |
total: | 962ms |
0 / 0 |