Я хочу найти все точки, которые находятся не дальше, чем расстояние, определенное точками от заданной точки. Как и для поиска по нормальному радиусу, только радиус является переменным с каждой точкой (каждая запись определяет круг вокруг себя, используя радиус точки +).PostGIS, находя все круги, содержащие определенную точку - как определить индекс
Вопрос, который у меня есть, заключается в том, как определить индекс для этой проблемы (запрос, который я использую в данный момент ниже), также, если можно создать индекс, используя поля не ГИС и ГИС (например, поле «Включить» ниже).
я в настоящее время этот рабочий запрос для него
SELECT "Locations"."Name",
FROM public."Locations"
WHERE
"Locations"."Enabled" = TRUE
AND ST_DWithin(
"Locations"."MyCoord"::geography,
ST_SetSRID(ST_MakePoint(<Given Long>, <Given Lat>),4326)::geography,
"Locations"."Radius");
с таблицей, как следующий
Id: uuid
Name: text
Enabled: boolean
MyCoord: GEOGRAPHY(Point)
Radius: double precision
Это была ошибка копирования и вставки как в географии. Но как индекс только на MyCoord (который является центром круга вокруг него) ускоряет поиск, если радиус вообще не используется в индексе (для ускорения поиска необходим AFAIK, по крайней мере, ограничивающий прямоугольник). – Fionn
Тонкая разница, которую я вижу в вашем запросе, состоит в том, что у вас есть статическое расстояние для проверки, но в моем запросе расстояние и одна координата находятся в запрошенной таблице. Таким образом, ваш запрос имеет только один элемент переменной, а у меня два. – Fionn
Вы проверили его? Этот элемент также является переменной, которую я придумал после того, как был сделан указатель ... Нет никакой разницы. Как вы видите, в определении индекса нет 300 ... – Jendrusk