0

由于我的多边形查询(多边形中的多边形)的大小、数量和性能,我想预处理我的数据并将多边形分成网格。我的数据在我感兴趣的领域非常统一,所以像 12 个偶数网格一样可以很好地工作。我以后可能会根据性能调整这个数字。基本上,我将创建 12 个具有关联空间索引的表,或者我可能只创建一个具有网格分区键的表。这将使我的总索引大小减少 12 倍,并有望提高性能。从查询端,我会将查询定向到相应的表。

关键是我能够弄清楚如何将多边形分组到这些网格中。如果多边形落在多个网格中,那么我可能会在每个网格中创建一条记录,并在查询时进行重复数据删除。我不希望这种情况经常发生。

本质上,我将有一个“网格”,我想与我的多边形相交并找出多边形落在哪些网格中。

谢谢

4

1 回答 1

0

我的过程将是这样的:

  1. 查找整个数据集(两个轴)的 MIN/MAX 纵坐标值
  2. 将这些值扩展一个看起来合适的边距(以防组合时的纵坐标不形成规则的矩形)
  3. 编写一个小循环,在这些 MIN/MAX 坐标内以设定的间隔生成多边形 - 即每个网格正方形创建一个多边形
  4. 使用SDO_COVERS来查看哪个网格方块覆盖了每个多边形。如果多个网格方块覆盖一个多边形,您应该看到多个匹配项,如您所描述的。

我也同意您在单个表中分区数据的策略。我听说过对此的积极评价,但我从未亲自尝试过。不过,访问多个表的开销似乎是您想要避免的。

于 2013-02-28T08:45:41.380 回答