具有无限边坐标的重叠框

时间:2012-05-17 19:58:54

标签: postgresql postgis

我试着理解与无穷大重叠的盒子是如何工作的

为什么下面的例子不起作用。它工作正常,除非我尝试引入两个无限值。

这个例子应该返回true。

SELECT box '((1,1),(infinity, 1))' && box '((2, 1),(infinity, 1))' AS overlap;
overlap 
---------
f

以下两个例子

SELECT box '((1,1),(4, 1))' && box '((2, 1),(infinity, 1))' AS overlap;
overlap 
---------
t


SELECT box '((1,1),(4, 1))' && box '((2, 1),(5, 1))' AS overlap;
overlap
---------
t

所以我的问题是:有什么我做错了或者我不明白吗?

1 个答案:

答案 0 :(得分:0)

我问过postgresql buglist:

汤姆小巷给了我这个回答:

对此的测试涉及

FPge(box1->high.x, box2->high.x)

其中FPge定义为

#define FPge(A,B)    ((B) - (A) <= EPSILON)

当两个high.x值都是无穷大时,你有无穷大减去无穷大, 这在IEEE算术中产生NaN,因此与epsilon的比较来了 出错。

一般来说,我认为我们不承诺涉及几何操作 无限端点将表现得很清醒。可能有一大船 除了这个之外需要在我们之前修复的角落案件 可以考虑支持的案例。