【发布时间】:2014-11-14 09:28:51
【问题描述】:
(使用 PostgreSQL 9.1,未安装 GIS)
假设我有一个盒子(应该总是方形的):
> 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)
这不会破坏交易,但我觉得应该有一种“更好”的方式来做到这一点。
有没有更简单/更好的方法来调整圆圈的大小?具体来说,我想要一个圆心在盒子的中心,半径等于盒子对角线长度的一半。
(如果有帮助,我正在使用“Contained in or on”('
谢谢。
【问题讨论】:
-
如果你把 box 放在子查询中,你就不必传递两次。
标签: sql postgresql geometry