Используйте ST_Contains
, чтобы проверить, находится ли точка внутри многоугольника, а затем вычислить буфер вокруг вашей точки и посмотреть, пересекаются ли они, с ST_Buffer
и ST_Intersects
соответственно. Что-то вроде:
SELECT *
FROM polygon_table t1, circle_table t2
WHERE
ST_Contains(t1.area, t2.pt) AND
ST_Intersects(ST_Buffer(t2.pt,t2.radius),t1.area)
Примечание: буфер будет создан с использованием модуля вашей SRS. Например, если вы используете WGS84, он будет в градусах. Если вы хотите вместо этого использовать метры, используйте geography
вместо geometry
или просто введите его в реальном времени, например t1.area::geography
.