Postgresql 几何圆交集

Postgresql geometry circle instersection

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

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

结果:

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

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

好的,我发现:

select polygon(circle '((0,0),2)') && polygon(circle '((1,1),2)'); 

我 "only" 必须将两个圆投射成 12 点多边形,然后使用 &&(重叠)运算符。

?# 运算符不适用于圆,但您可以使用 && 运算符(来自文档:重叠?一个共同点证明了这一点)。

您也可以将 && 运算符与圆一起使用,而无需转换为多边形:

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