В моей базе данных хранятся многоугольники. Теперь мне нужно искать все полигоны, находящиеся в определенном радиусе. Даже если многоугольник является лишь малой частью внутри региона, тогда он должен быть включен в результаты (поэтому, если есть минимальное совпадение, есть совпадение).
Каков наилучший способ сделать это? Я думал о создании другого полигона и поиске всего, что пересекает это, но не знаю, является ли это допустимым методом?
Да, я думаю, что это лучший подход. Вы можете создать многоугольник, используя ST_BUFFER, а затем вы можете использовать ST_INTERSECT, чтобы найти, будут ли полигоны пересекаться с вашим полигоном.
Возможно, вы также можете сделать это с помощью ST_DISTANCE. Он рассчитает минимальное расстояние точки от многоугольника.
Select ST_DISTANCE(polygons,POINT(x, y)) as distance, polygon_id from your_polygon_table WHERE distance <= 10