@untley

Как найти обьекты по радиусу?

Требуется найти все транспортные средства, которые проезжали и мимо точки погрузки в определенное время.
Единственный момент: таких точек - много.
Есть запрос:
SELECT
distinct (a.serial_num),
a.start_dt
           FROM full_points a
        where
        start_dt >=    '2017-07-31 12:00:00.000000'::timestamp without time zone
        and start_dt < '2017-07-31 12:05:00.000000'::timestamp without time zone
and ST_DWithin(
    (
     ST_MakePoint(
      (a.points->0 ->> 'lat'::text)::double precision,
      (a.points->0 ->> 'lon'::text)::double precision)
    )::Geography,
   (ST_MakePoint(55.2252, 36.64547))::geography,
    1000
  )
Можно запилить что-нибудь вроде симбиоза IN() и ST_DWithin? т.к. проходиться много раз по таблице, прогоняя ST_DWithin'ом каждую точку погрузки - ад для постгреса, все координаты там в JSON.
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Я вопрос не понял, что такое радиус многих точек. Но до ладно. Было бы лучше перегнать весь json в точки и построить по ним пространственный индекс. А затем уже быстро получить все точки в радиусе 1000 от заданной и просеять их через временной промежуток.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы