(Используя PostgreSQL 9.1, без установки ГИС)
Предполагая, что у меня есть коробка (которая всегда должна быть квадратной):
> SELECT box '((0, 0), (1,1))'
"(1,1),(0,0)"
Я могу получить круг, который помещается внутри квадрата:
> SELECT circle (box '((0, 0), (1,1))')
"<(0.5,0.5),0.707106781186548>"
и немного повозившись, я могу получить больший круг:
> SELECT circle(center(circle(box '((0, 0), (1,1))')), radius(circle(box '((0, 0), (1,1))')) * 2)
"<(0.5,0.5),1.4142135623731>"
но сделать это как подготовленный оператор означает дважды передать квадрат:
"SELECT circle(center(circle(?)), radius(circle(?)) * 2)
что не является нарушением условий сделки, но я чувствую, что должен быть «лучший» способ сделать это.
Есть ли более простой/лучший способ изменить размер круга? В частности, мне нужен круг с центром в центре коробки и радиусом, равным половине длины диагонали коробки.
(Если это поможет, я использую оператор «Содержится в или на» («‹@»), чтобы получить набор точек в области)
Спасибо.