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
我想知道一个圈 "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