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 オブジェクトの頂点の最大数は頂点あたりの次元数によって異なります。2 次元の場合は 524,288、3 次元の場合は 349,525、4 次元の場合は 262,144 です。

親シェイプをいくらか単純化すれば、これは問題になりません。

このルートをたどるよりも、特別なケーシングを維持する方がおそらく良いと思います.

于 2013-02-03T17:07:05.910 に答える