Postgresql几何圆交集

时间:2015-02-26 10:24:20

标签: postgresql geometry intersection overlap

我想知道一个圈子是否交叉" postgreSQL中的另一个圆圈(即:2个圆圈在2点上相遇)。我正在尝试交集,但不起作用:

select circle '((0,0),2)' ?# circle '((1,1),2)';

结果:

Error in query: ERROR: operator does not exist: circle ?# circle

不知道为什么......我该怎么办?

2 个答案:

答案 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点多边形,然后使用&&(重叠)运算符。