PostGIS:两个地理位置之间的ST_Intersects(),有时会返回false结果

时间:2013-02-21 10:06:24

标签: postgis geography intersect

我对PostGIS中两个地理位置之间的交叉存在问题: 我有一个带有地理列的table1,在wgs84中填充多个多边形(每行一个)。 第二个table2也有一个地理列,在wgs84中填充多个多边形(每行一个)。 然后我在两者之间进行交叉(select(..),其中ST_Intersects())。

在某些(非常罕见的)情况下,在我看来,它不正确,因为相交返回false,其中true是预期的: 我有一个重新投影的tif表示来自表1中一行的地理位置,它覆盖了坦桑尼亚的一个大区域。 我在表2中也有一行重新投影的tif,它只覆盖了一些km²的小区域。 在ArcMap中,两者都相交,小区域位于大边缘,但PostGIS对ST_Intsersects(geog1,geog2)返回false。

当我通过转储器将table1导出为shapefile时,地理的角点与直线连接,而不是与大圆的部分连接。 然后我得到相同的结果:table2中的区域现在位于table1的区域之外。 所以我猜,PostGis也用这个简化的多边形计算,但据我所知,地理是用大圆的部分而不是直线来计算的?

我已经尝试了所有方法以确保两个表格都充满了地理位置,而不是几何图形,但即使是明确的地理位置也没有改变结果。

之前发生过这样的事情,或者你知道我做错了什么? table2还有一个几何和一个栅格列(总共= 3个空间列),这可能是一个问题吗?

1 个答案:

答案 0 :(得分:1)

在没有看到你的实际几何形状的情况下,我无法肯定地说,但几乎可以肯定你是误解了大圆线将如何约束你的区域,而PostGIS正是如此,特别是如果你正在处理边界附近的关系。使用Google地球线条(不是多边形,不使用大圆圈渲染)可视化示例有时可以帮助澄清事物在视觉上的运作方式。