我想知道一个圈子是否交叉" postgreSQL中的另一个圆圈(即:2个圆圈在2点上相遇)。我正在尝试交集,但不起作用:
select circle '((0,0),2)' ?# circle '((1,1),2)';
结果:
Error in query: ERROR: operator does not exist: circle ?# circle
不知道为什么......我该怎么办?
答案 0 :(得分:2)
?#操作符不适用于圆圈,但您可以使用&&amp ;; operator(来自docs:Overlaps?共同点之一就是这样)。
您可以使用&&运算符也有圆,没有强制转换为多边形:
select circle '((0,0),2)' && circle '((0,4),2)'; -- true
select circle '((0,0),2)' && circle '((0,4),2.0001)'; -- true,
select circle '((0,0),2)' && circle '((0,4),1.99999)'; -- false
另见http://www.postgresql.org/docs/9.1/static/functions-geometry.html
答案 1 :(得分:0)
好的,我找到了:
select polygon(circle '((0,0),2)') && polygon(circle '((1,1),2)');
我“只”必须将两个圆圈投射到12点多边形,然后使用&&
(重叠)运算符。