0

我有一个可以相互包含区域的数据库表,从而形成树/森林结构。每个区域都有一个父指针,顶层区域有一个父指针null

我想改变这一点,所以有一个顶级区域,其中包含简化查询的所有内容。然后我不需要处理顶级区域的特殊情况,因为区域总是有父级。

有没有办法(在 PostGIS 和 Oracle Spatial 中)插入一个具有“无限大”几何形状的区域,以便始终通过相交查询找到它?

具体来说,我想要一个几何,无论 G 是什么,以下都是正确的:

ROOT contains G = true
ROOT intersects G = true
ROOT overlaps G = false
4

1 回答 1

1

我还没有遇到任何实现这个概念的东西,但你可以(粗略地)用触发器实现它;这样每次插入新行时,顶级父级都会将新形状合并到自身中。

这个(或任何类似的方法)的可能问题是你的表现不会很好。当然,Oracle 不能很好地处理复杂几何图形的操作,而且您可能会扭曲您的域索引。

您还会发现,在 Oracle 中,sdo_geometry 对象存在纵坐标限制。从 Oracle 文档(http://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_objrelschema.htm#i1004087):

因为最大 SDO_ORDINATE_ARRAY 大小为 1,048,576 个数字,所以 SDO_GEOMETRY 对象中的最大顶点数取决于每个顶点的维数:二维为 524,288,三维为 349,525,四维为 262,144。

如果您稍微简化父形状,这应该不是问题。

我会说保留你的特殊外壳可能比走这条路更好。

于 2013-02-03T17:07:05.910 回答