(57)【特許請求の範囲】
【請求項１】
コンピュータ・データベース内に空間データ・オブジェクトを記憶する、コンピュータによって実行される方法であって、
領域（２１）内の各データ・オブジェクトに、座標系における位置点を割り当てるステップと、
割り当てられた前記位置点を前記データベース内に記憶するステップと、
複数のシングル（１７）を前記データベース内に記憶するステップであり、前記シングルの各々が、少なくとも他の前記シングルの１つに隣接し、前記シングルの各々が、該シングルに隣接している他の前記シングルと、所定面積でオーバーラップしており、階層的なシングル構造を有し、同じ層に在る前記シングルが同じ大きさであるステップと、
前記シングル（１７）の各々に関して、位置点が前記シングル（１７）内にある前記データ・オブジェクトを、前記データ・オブジェクトの大きさが前記シングルに完全に包含されている限り、隣接するシングルにオーバーラップしているシングルの部分を含んでいるそのシングルのみに割り当てるステップと、
割り当てられた前記データ・オブジェクトの情報及びシングルを前記データベースに記憶するステップとを含む方法。
【請求項２】
前記データ・オブジェクトが空間データ・オブジェクトである、請求項１に記載の方法。
【請求項３】
前記データ・オブジェクト用の最小境界矩形を決定することにより、該データ・オブジェクトの前記位置点が割り当てられる、請求項１又は２に記載の方法。
【請求項４】
前記データ・オブジェクト用の最小境界矩形が過大評価される、請求項３に記載の方法。
【請求項５】
シングル（１７）のそれぞれに固有のコードが割り当てられる、請求項１〜４の何れか１項に記載の方法。
【請求項６】
オーバーラップする前記所定面積が１つのシングルの面積の半分に等しい、請求項１〜５の何れか１項に記載の方法。
【請求項７】
オーバーラップする前記所定面積が１つのシングルの面積の１／４に等しい、請求項１〜６の何れか１項に記載の方法。
【請求項８】
前記データ・オブジェクトが、線、円、四角形及び多角形からなる群の中から選択される、請求項１〜７の何れか１項に記載の方法。
【請求項９】
前記領域（２１）が、正方形、長方形、円形、又は六角形の複数のシングル（１７）に分割される、請求項１〜８の何れか１項に記載の方法。
【請求項１０】
空間データ・オブジェクトを記憶するコンピュータシステムであって、
複数のシングル（１７）に区分された領域（２１）に関するデータベースを記憶するコンピュータメモリであって、前記シングルの各々が、少なくとも他の前記シングルの１つに隣接し、前記シングルの各々が、該シングルに隣接している他の前記シングルと、所定面積でオーバーラップしており、階層的なシングル構造を有し、同じ層に在る前記シングルが同じ大きさであるコンピュータメモリと、
プロセッサとを備え、
前記プロセッサが、
座標系におけるデータ・オブジェクトの位置を決定するステップと
位置点がシングル（１７）内にある前記データ・オブジェクトを、前記データ・オブジェクトの大きさが前記シングルの大きさより小さく、前記データ・オブジェクトが完全に前記シングルに包含されている限り、隣接するシングルにオーバーラップしているシングルの部分を含んでいるそのシングルに割り当てるステップと、
前記データ・オブジェクトを、それが割り当てられている前記シングルを参照して、前記コンピュータメモリ内に記憶するステップとを、
実行するように構成されているコンピュータシステム。
【請求項１１】
前記空間データ・オブジェクトが、地図データベースの構成要素の一部である、請求項１０に記載のコンピュータシステム。
【請求項１２】
前記空間データ・オブジェクトが、線、円、多角形、及び四角形からなる群の中から選択される、請求項１０又は１１に記載のコンピュータシステム。
【請求項１３】
前記プロセッサが、空間データ象限を順序付けるためのペアノ−ヒルベルト方法を実行するように構成されている、請求項１０〜１２の何れか１項に記載のコンピュータシステム。
【請求項１４】
オーバーラップする前記所定面積が１つのシングルの面積の半分に等しい、請求項１０〜１３の何れか１項に記載のコンピュータシステム。
【請求項１５】
オーバーラップする前記所定面積が１つのシングルの面積の１／４に等しい、請求項１０〜１３の何れか１項に記載のコンピュータシステム。
【請求項１６】
前記プロセッサが実行するデータ・オブジェクトの決定する前記ステップが、前記空間データ・オブジェクト用の最小境界矩形を計算することを含む、請求項１０〜１５の何れか１項に記載のコンピュータシステム。
【請求項１７】
割り当てる前記ステップが、前記空間データ・オブジェクト用の前記最小境界矩形の左下隅の座標位置を決定することを含む、請求項１６に記載のコンピュータシステム。
【請求項１８】
前記空間データ・オブジェクトが、機械製図および建築図面、アニメーションおよびバーチャル・リアリティ・データベース、ラスタ・ビットマップからなる群の中から選択される、請求項１０〜１７の何れか１項に記載のコンピュータシステム。
【請求項１９】
前記プロセッサが、
前記座標系内の各点が少なくとも１つのシングルに割り当てられるように前記座標系のオーバーラップしているシングルの第２の層の境界を計算するステップと、
前記第１の層内の前記シングルのサイズより大きい各空間データ・オブジェクトに、各空間データ・オブジェクトの位置点に基づいて前記第２の層の特定のシングルを割り当てるステップとを実行するように構成されている、請求項１０〜１８の何れか１項に記載のコンピュータシステム。
【請求項２０】
前記領域が、正方形、長方形、円形、又は六角形の複数のシングルに分割される、請求項１０〜１９の何れか１項に記載のコンピュータシステム。
【請求項２１】
前記空間データ・オブジェクトを記憶する前記ステップが、前記データ・オブジェクトを、多次元オブジェクトのデータベースに記憶することを含み、
前記多次元オブジェクトのデータベースが、
各オブジェクトが座標系内における１つの位置点を含む、１組の多次元オブジェクトと、
各多次元オブジェクトを、座標系のシングルに参照付けるコードと、
を有する、請求項１０〜２０の何れか１項に記載のコンピュータシステム。
【請求項２２】
前記多次元データ・オブジェクトが、線、円、四角形及び多角形からなる群の中から選択される、請求項２１に記載のコンピュータシステム。
【請求項２３】
前記多次元データ・オブジェクト用の最小境界矩形を決定することにより、前記位置点が計算される、請求項２２に記載のコンピュータシステム。
【発明の詳細な説明】
発明の背景
発明の分野
本発明は、コンピュータ・データベースに関する。特に、本発明は、２次元および３次元空間におけるオブジェクトの位置、サイズ、および形状を記述する情報を含むデータベースレコードに索引を付ける方法に関する。
関連技術の説明
データ構造の目的は、大量の情報を編成してコンピュータがデータ構造の内容を選択的に処理できるようにすることである。このための動機は単純である。すなわち、いつでも、時間的要件、プロセッサ速度、メイン・メモリ、ディスク・アクセス時間の点で一度にすべて処理できる以上のデータがある。データおよびアプリケーションの性質に応じて、データ編成戦略は、同様のプロパティを備えたサブセットに内容を区分すること、または高速ランダム・アクセス用の索引付けおよびハッシングをサポートするためにデータに順序付けを行うことができる。データべースおよびデータベース管理システムでは、このような概念を拡張し、構造化データの永続的記憶およびトランザクション制御編集を行えるようにしている。
２次元マップを記述するような空間データは、効率のよい編成の必要性の点ではまったく変わりはない。マップ・データは、この点では特に要求が厳しいものである。中位のサイズの地域社会の総合的な街路マップは、数万ないし数十万個の個々の街路セグメントからなることがある。ロサンジェルスまたはニューヨークの広域マップは、数百万個のセグメントを含むことがある。各マップ・データ・オブジェクトの内容もいくらかかさばる可能性がある。たとえば、個々の街路セグメントのレコードは、その終点の座標、使用法の分類、街路名、街路住所範囲、街路の左右側、法人都市名、郵便番号を含むことができる。
しかし、その中心部の空間データは、２次元空間内でオブジェクトを編成しようと試みるので、特に厄介な問題を提起する。空間座標は、互いに独立しているがほとんどの空間照会にとって同様に重要な２つ（またはそれ以上）の値からなる。確率されたデータ構造およびデータベース方法は、多次元空間の表現ではなく、単一の値を効率よく処理するように設計されている。
このような困難については、数十万個の空間オブジェクトからなるデータベース（家屋を取り囲む都市のマップ）からマップ・データの小さいウィンドウ（たとえば、家屋を取り囲む平方マイル）を提示するアプリケーションの作成という問題を検討することによって例示することができる。これを行うための動機は実際には２つの面がある。第１に、コンピュータ・モニタの典型的な解像度が限られており、所与の量の情報しか表すことができないことである。第２に、すべてのデータがモニタ内におさまる場合でも、この大量の情報を計算するためのデータ処理時間（取出し、変換、クリッピング、描画）は、平均的なパーソナル・コンピュータにとっては長すぎるものになるだろう。
この問題を解決するためには、モニタ上に生成される「ウィンドウ」内に現れる街路セグメントをすべて検出し、現れない街路セグメントについてはできるだけ多くのセグメントを回避することが有利である。したがって、ｘ座標（または経度）値およびｙ座標（または緯度）値の特定の範囲内にあるすべてのオブジェクトが収集される。この問題は、一般に、矩形ウィンドウ検索と呼ばれ、より基本的なタイプの空間照会の１つである。この方法は、以下に示す編成方法のそれぞれの有効性を評価するための方法として以下の項で使用する。
最も厳重に調査され、一般的に使用されている空間データ構造（地理データおよび幾何データを編成するために使用するデータ構造）は、タイルベースの階層ツリーという概念を頼りにしている。このコンテキストにおけるタイルとは、座標空間の矩形（またはその他の規則正しい形状または不規則な形状の）区画であり、座標系のどの単一点も複数のタイル内に存在することがないように各区画はタイル同士を分離する明瞭な線を有する。階層ツリーは、座標空間全体を表すルートから開始して、その空間をより小さいタイルに再帰的に分解することにより、座標空間を分割するための構造の１つである。このシステムにおけるタイル間の「ハード・エッジ」とは、空間内のあらゆる点が正確に階層の各レベルの１つのタイル内に存在することを意味する。いかなる点も複数のタイルに共存することはできない。
周知の階層ツリーの一例は、クワッドツリー・データ構造である。一例のクワッドツリーは、地球の表面を表すことができるだろう。クワッドツリーのルートには、地球の表面全体を表すノードが存在する。次にこのルートは、緯度空間および経度空間の各象限を表す４つの子、すなわち、グリニッジより東で赤道より北、グリニッジより東で赤道より南、グリニッジより西で赤道より北、最後に、グリニッジより西で赤道より南という子を有することになる。グリニッジ子午線および赤道上の点は、１つの象限または残りの部分に属するものとして任意に定義される。これらの子のそれぞれは、より多くの象限、すなわち、その子の子などにさらに分割され、クワッドツリーに記憶すべきデータの量および密度をサポートするのに必要な区分度に至るまで分割される。
クワッドツリー構造の主な問題は、その構造がアンバランスになっていることである。ツリー内の各ノードのデータ記憶容量は制限されているので、その制限を上回る場合、ノードは４つの子に分割しなければならず、データ内容はツリーの下の方の凹部に押し込まれる。その結果、クワッドツリーの深さは、データ密度が低ければ浅くなり、データ密度が高ければ深くなる。たとえば、地球の表面上の人口の中心を検出するために使用するクワッドツリーは、大洋中央および極地域では非常に浅くなり（たとえば、少数のノードを有する）、米国の東部および南部などの地域では非常に深くなる（たとえば、多数のノードを有する）。
クワッドツリーは本質的にアンバランスなものなので、クワッドツリーの矩形ウィンドウ検索行動は予測が難しい。ソフトウェアにとっては、必要なデータを検出するために訪れなければならない可能性のある多くのノードがどの程度の深さにあるかを予測することは困難なことである。大規模な空間データベースでは、クワッドツリー階層で他のノードに移行するための各ステップは、通常、時間のかかるディスク・シークを必要とする。さらに、必要なデータをすべて検出するためには、ツリーの複数のブランチをたどらなければならないだろう。第２に、データ構造の内容が動的なものである場合、効率のよい空間管理は問題を含むことになる。というのは、各ノードは一定量の空間と一定の地域範囲の両方を有するからである。現実のデータ方式では、この２つが対応することはめったにない。このような問題を最小限にしようと試みるために、クワッドツリーの変形がいくつか存在する。しかし、依然として効率の悪さが持続する。
これまで、各空間オブジェクトが単一組の座標を含む場合に複数の点を含むデータ構造についてのみ説明してきた。線、曲線、円、多角形は、次元を有するので、さらに複雑さを増す。したがって、タイリング方式が極めて不自然なものでない限り、これらのオブジェクトはもはやタイル・ベースのデータ構造にきちんとおさまらなくなる。ある座標領域から他の座標領域へハード・エッジのタイル境界を横切るようなオブジェクトの部分が必ず存在することになる。ただし、これは、オブジェクトの記述の単純さにかかわらず真実であることに留意されたい。たとえば、線分はその２つの終点によって記述され、円はその中心点と半径によって記述される。
この問題を取り巻く単純で一般的に使用される方法は、タイル境界を横切るオブジェクトを複数のオブジェクトに分割することである。したがって、その終点が２つの隣接タイル内に含まれる線分は２つの線分に分割され、１つのタイルから始まり、そのもう一方の端部までの間に５０個のタイルを通過する線分は、それが接触する各タイルごとの１つずつ、合計５２個の線分に分解される。
この手法は、読取り専用である所与のアプリケーションにとっては有効な戦略になりうる。しかし、これは、動的内容を備えたデータ構造によっては不十分な戦略である。新しいデータ・オブジェクトの追加は比較的単純であるが、データの削除および変更はより難しい。元のオブジェクトが完全な状態のままであると保証されるわけではないので、問題が発生する。線分を移動または除去する必要がある場合、データベースが予想通りに動作するようにその線分を何とかして再構成しなければならない。これには、追加のデータベースブックキーピング、より複雑なアルゴリズム、それに付随する設計の単純さおよびパフォーマンスの低下が必要になる。
多次元オブジェクトの編成に関するもう１つの一般的な問題は、これらのオブジェクトの多くがいったん分解してしまうと数学的に記述するのが難しくなることである。たとえば、１つの円が４つの隣接する矩形タイルに重なるようにする方法は多数ある。配置によっては、同じサイズの円が２つ、３つ、または４つの異形片になる可能性がある。過度に断片化された線分の場合と同様、そのオブジェクトの本来の「自然な」特徴は完全に失われる。
代替戦略は、タイル境界を横切るオブジェクトを多様に参照する迂遠的方法（indirection）を使用することである。しかし、各参照ごとにそのオブジェクトを回復するための余分なステップが必要であり、同じ照会によって同じオブジェクトを複数回検索することができるが、解決するためには追加の複雑さが必要になる。データベース内のオブジェクトの数が大きくなると、この余分な迂遠レベルは費用がかかりすぎ、実行可能なシステムを作成することができなくなる。
クワッドツリーで使用するもう１つの戦略は、タイル境界を横切るオブジェクトをそれらが最終的におさまるまでツリーのより高いレベルに押し込むことである。この戦略の難しさは、より高いノードに含まれるマップ・オブジェクトの数が増加した場合、データベース操作によって上位ノードのすべてのオブジェクトを検査しないと、有用な情報を含む可能性の高いより小さいノードに探索を向けることができないことである。この結果、データを検出するために膨大な遅れ時間が発生する。
従来のＤＢＭＳにおける照会の最適化
前述のように、空間内のオブジェクトの位置、サイズ、形状を記述するデータは一般に空間データと呼ばれる。空間データの集合は空間データベースと呼ばれる。様々なタイプの空間データベースの例としては、マップ（街路マップ、地形図、土地利用図など）、２次元および３次元の建築図面、集積回路設計図などがある。
従来のデータベース管理システム（ＤＢＭＳ）では、所与のフィールドに特定のデータ値を有するレコードの検索を最適化するために索引付け方法を使用している。データベース内の各レコードごとに、対応する値を含むレコードに戻るためのポインタとともに関心のあるフィールドの値をツリーまたは同様の索引付けデータ構造内のキーとして記憶する。
データベース表１は、架空の企業の元従業員に関する情報を含む単純なデータベース表の例を示している。表内の各行は単一レコードに対応する。各レコードは単一の元従業員に関する情報を含む。表内の列は、その氏名や雇用開始日および雇用終了日を含む各元従業員に関する様々な事実を記憶する各レコード内のフィールドに対応する。
0004231943.tif 000002
照会例１は、１９９３年中に就業を開始したすべての元従業員の氏名を検出するＳＱＬ照会を示している。元従業員データベース内のレコードの数が大きく、定期的または適時に照会を実行する必要がある場合、この照会をより効率よく実行させるために開始日フィールド上に索引を作成すると有用である可能性がある。Ｂツリーなどの順次索引付けデータ構造を使用すると、データベース表２に示すように、索引付けされたフィールドの順にデータベース表が効果的に再整理される。このような順次索引付け方法の重要な特徴は、索引付きフィールド内に特定の値を含むレコードと、索引付きフィールド内に所定の範囲の値を有するレコードの両方について、非常に効率のよい探索が可能になることである。
照会例１
１９９３年中に雇用されたすべての元従業員を検出するためのＳＱＬ
0004231943.tif 000003
0004231943.tif 000004
分析のため、コンピュータ・アルゴリズムとそのサポート・データ構造の効率をOrder関数で表すが、この関数はアルゴリズムの近似行動を関連オブジェクトの総数の関数として記述するものである。Orderを表すために使用する簡略表記は00である。データ処理アルゴリズムの場合、Order関数は処理するオブジェクトの数に基づくものになる。
たとえば、最良ソート・アルゴリズムは通常、Ｏ（Ｎ×ｌｏｇ（Ｎ））というコストで行われ、式中、Ｎはソートするレコードの数である。オブジェクトを管理するために使用するデータ構造（たとえば、データベース内の索引）の場合、Order関数は管理するオブジェクトの数に基づくものになる。たとえば、最良データベース索引付け方法は通常、Ｏ（ｌｏｇ（Ｎ））という探索コストを有し、式中、Ｎはデータベースに記憶されるレコードの数である。所与のアルゴリズムは、別個であるが通常はまれな最悪ケースのコストも有するが、これは他のOrder関数によって示すことができる。オブジェクトの総数とは無関係な定数関数は関数Ｏ（Ｋ）によって示される。
Ｂツリーおよび同様の索引順次アクセス方式（すなわちＩＳＡＭ）は一般に、Ｏ（ｌｏｇ（Ｎ））というコストによって所与のキー値へのランダム・アクセスを可能にするものであり、式中、Ｎは表内のレコードの数であり、また、Ｏ（Ｋ）という平均コストで後続レコードへの順次アクセスを可能にし、式中、Ｋは索引によりレコードを読み取るという不利益を表す小さい定数である（Ｋを最小限にするために、索引クラスタおよびキャッシュを含む様々な戦略を使用することができる）。したがって、照会例１を実行するための全コストはＯ（ｌｏｇ（Ｎ）＋（Ｍ×Ｋ））になり、式中、Ｍは照会を満足するレコードの数である。Ｎが大きく、ＭがＮに対して小さい場合、索引を使用して照会を実行するためのコストは、表全体を走査するためのＯ（Ｎ）というコストより実質的に小さくなる。データ・表１は、ＮおよびＭの様々な値について何らかのOrder関数による計算値を示すことによってこの事実を示すものである。この例は、極めて単純であるが、索引を使用して照会を最適化するという広く使用され一般的に受け入れられているデータベース管理の慣行を代表するものである。
式１
索引によりデータベース表から連続レコードを検索するためのコスト
0004231943.tif 000005
照会例２は、１９９３年中に就業していたすべての元従業員の氏名を検出するＳＱＬ照会を示している。照会例１とは異なり、任意の条件境界、この場合は任意の時間範囲に関して照会例２を大幅に改善する索引を従来の方法のみを使用して構築することは不可能である。データベース理論の観点から見ると、この照会の難しさは、以下の２通りの事実の相互作用によるものである。すなわち、２つの条件が別々のフィールド値に関するものであり、２つの条件のうちの一方を満足するすべてのレコードを検査して、もう一方の条件も満足するかどうかを確認する必要があることと、各条件が不等式であり、したがって、検査しなければならないレコードのセットがテスト値の一方の前または後に現れる（どちらのフィールド値を最初に検査するかによる）すべてのレコードを含むことである。
照会例２
１９９３年中に就業していたすべての元従業員を検出するためのＳＱＬ
0004231943.tif 000006
データベース表２によって表されている索引を使用して照会例２を満足するプロセスについて検討する。２つのフィールドのいずれかに基づく索引を使用して照会例２を実行するためのコストは、Ｏ（Ｋ×Ｎ／２）という平均コストと、Ｏ（Ｋ×Ｎ）という最悪ケース・コストになるだろう。換言すれば、照会は平均すると表の半分を調べなければならず、２つの条件のうちの最初の条件を満足するレコードのすべてを検出するためには表全体を検査する必要がある場合もある。索引なしで表全体を走査するためのコストはＯ（Ｎ）なので、索引を使用する価値は完全に失われる（表３を参照）。実際には、このようなタイプの状況が検出されると、照会最適化プログラム（照会を満足するために実行される実際の一連のステップを決定する前処理機能）は、通常、表全体を走査するために索引の使用を放棄する。
式２
開始値または終了値に関する従来のデータベース索引を使用する間隔に重なるすべてのレコードを検索するためのコスト
0004231943.tif 000007
0004231943.tif 000008
より抽象的な観点から見ると、この例の難しさは、従来のデータベース表現が考慮に入れていないより多くの情報が実際に存在することである。事実、開始日と終了日は、含まれる時間範囲である単一データ項目の２通りのファセットである。空間的に表現すると、開始日フィールドと終了日フィールドは時間線上の２つの位置を定義し、これらの位置間の差によってサイズが定義される。単純な１次元データの場合でも、従来のデータベース管理では位置とサイズの両方に基づいて照会を最適化することができない。
２次元空間データの概説
空間データベースは、関連オブジェクトの数が膨大であるため、効率のよいデータベース管理を特に厳しく要求している。中位のサイズの地域社会の総合的な街路マップは、数万ないし数十万個の個々の街路ブロックからなる可能性があり、カリフォルニア州ロサンジェルスまたはニューヨーク州ニューヨークの広域マップは、百万個以上の街路ブロックを含む可能性がある。同様に、最新の集積回路の設計図も数百万個のコンポーネントを含む。
図１は、Ｘ軸とＹ軸を有する座標平面を示している。以下に示す例のため、平面のサイズは２００×２００座標単位になるように選択し、Ｘ軸とＹ軸の両方について最小座標値および最大座標値をそれぞれ−１００および１００とする。ただし、以下の例について述べる原理は、平面、円柱表面、球面の各座標系を含みかつこれに限定されない任意のサイズのいかなる有界２次元座標系についても適用可能であることに留意されたい。最小緯度値および最大緯度値が−９０度および＋９０度であり、最小経度値および最大経度値が−１８０度および＋１８０度である地球表面の緯度／経度座標系はこのような球座標系の一例である。
図２は、図１の平面上における点の分布を示している。前述のように、点は最も単純なタイプの空間データ・オブジェクトである。その空間記述は座標位置情報のみからなる。一般に点オブジェクトに関連する非空間記述の例としては、その位置にある事業所の名前とタイプ、たとえば、「レオンズ  ビービーキュー」または「レストラン」を含む可能性がある。
図３は、マップを表す線形および多角形空間データ・オブジェクトの分布を示している（ただし、「Hwy 1」および「Hwy 2」というテキスト・ストリングはそれ自体は空間データ・オブジェクトではなく、むしろそれに対応するオブジェクトに近接配置されたラベルであることに留意されたい）。線形および多角形データ・オブジェクトの空間記述はより複雑なものになる。というのは、座標系におけるそれぞれの位置に加え、サイズおよび形状情報を含むからである。一般に線形マップ・オブジェクトに関連する非空間記述の例としては、その線が表す街路の名前と住所範囲、たとえば、「100-199メインストリート」を含む可能性がある。また、一般に多角形マップ・オブジェクトに関連する非空間記述の例としては、多角形オブジェクトの名前とタイプ、たとえば、「ミシガン湖」、「大きい湖」になる。
図４は、様々な線形および多角形空間データ・オブジェクトの最小境界矩形（ＭＢＲ）を示している。ある空間データ・オブジェクトの最小境界矩形は、そのオブジェクトを完全に含み、座標軸に直交する最小矩形である。最小境界矩形は、通常、その空間記述に現れる最小座標値および最大座標値の単純な検査によって非常に容易に計算できるものである。空間データ記憶検索方法では、最小境界矩形を使用して、オブジェクトの近似位置およびサイズを表す場合が多い。というのは、その単純な内容（２対の座標）が非常に効率のよい処理に向いているからである。
従来のデータベース管理システムにおける２次元空間データの記憶
データベース表３は、図２の点の一部を正規のデータベース表に表す方法を示している。データベース表３の点は、図２に示す点のうち、＊マーカで示した点のサブセットに対応する。照会例３は、矩形ウィンドウ内のすべての点を取り出すＳＱＬ照会を示している。矩形ウィンドウ照会は、一般に使用される幾何照会タイプのうちの最も単純なタイプである。検査によって、「エミリーズ  ブックストア」がこの照会によってデータベース表３から選択される唯一のレコードであることが明らかになる。図５は、図２に示す点の上に重ねられた照会例３に対応する矩形ウィンドウを示している。
0004231943.tif 000009
照会例３
ウィンドウ内のすべての事業所を検出するためのＳＱＬ
0004231943.tif 000010
この例が示す主な問題は、単純な索引を構築する従来の照会最適化方法では有用と言えるほど十分にうまく機能しないことである。Ｘフィールド値に基づいて索引を構築する方法について検討する。この索引を使用して照会例３を満足すると、その結果、図６に示す２本の太い垂直バーが示すようにデータベース表のオーバーサンプリングが発生する。この照会を実行する場合、実際に陰影付きウィンドウ内におさまるかなり小さいサブセットを検出するために、この２本のバー間にあるすべての点オブジェクトのレコードを検査することが必要になる。データベース表３の「スーパー  セーバー」レコードは、不必要に検査されそうなレコードの一例である。
照会を開始するのに必要な作業は対数であるが、オーバーサンプリングが行われる点オブジェクトの予想数は、式３が示すように、データベース内の点オブジェクトの数の線形関数になる。これは、データベース内のオブジェクトの数が増すにつれて、この照会のパフォーマンスが直線的に低下する傾向があることを意味する。データ・ボリュームが大きくなると、この線形行動は好ましいＯ（ｌｏｇ（Ｎ））よりかなり悪くなり、このスタイルの解決がまったく無効になる。Ｙに基づく索引の場合も同じ問題が発生する。この問題の根本的原因は、２次元空間座標が互いに独立しているがほとんどの空間照会の場合に同じように重要な２つの値（ＸとＹ）からなることである。従来のデータベース管理技法は、２次元データの処理にはあまり適していない。
式３
ほとんど均一なＸの分布を想定し、従来のデータベース索引付け方法を使用して２次元矩形ウィンドウ照会を実行するための平均コスト
0004231943.tif 000011
関連の２次元空間データ構造の説明
従来のデータベース管理方法が空間データに関して問題を抱えているので、その結果、空間データ構造と呼ばれる様々な専用データ記憶検索方法が開発された。ハナン  サメットによる空間データ構造の設計及び分析（The Design and Analysis of Spatial Data Structures）には、このような方法の多くに関する検討内容が記載されている。一般に使用される空間データ構造の多くは、タイル・ベースの階層ツリーの概念を頼りにしている。
図７は空間の矩形再帰的分解を示しているが、図８はその分解によって形成されたタイルを編成して「ツリー」（探索のために設計された階層データ構造）を形成する方法を示している。このタイプのデータ構造はクワッドツリーと呼ばれる。図９は、このクワッドツリーの「リーフノード」に分散された図２の点を示している。
図１０は、照会例３の矩形ウィンドウ検索が接触するクワッドツリーのサブセットを示している。ただし、クワッドツリー内で検査しなければならない２つの下位レベル・ノードと、図６に示すように従来のデータベース索引付けを使用して検査しなければならない長いストライプとのコントラストに留意されたい。図１０の２つのノードからの点のうち、すべての検査済みの点は、少なくともこの矩形の近傍にあり、図６のストライプの内側のいくつかの点は文字通り座標系の向こう側のエッジ（底部）にある。この例は単純なので検査済みの点の数の差は大きくないが、点オブジェクトの数が非常に大きい場合はパフォーマンス・コントラストが劇的なものになる。クワッドツリーは、座標系の両方の軸に沿って同時に索引を付けるので、位置ベースのデータを記憶するのに非常に適したものである。
クワッドツリーの最も基本的な実施態様では、階層内の各タイルは、そのタイルに関連する情報を含む「レコード」に対応する。そのタイルがルートまたはブランチ・レベルにある場合、対応するレコードは、各子タイルに関するレコードの座標およびそのレコードを指すポインタを含むことになる。タイルがリーフ・レベルにある場合、対応するレコードは、タイルの外周内に幾何学的に含まれる空間データ・オブジェクトのサブセット（点、線、または多角形オブジェクトおよびその属性）を含む。クワッドツリー・データベースの「レコード」は、ルートがファイルの先頭になり、幅優先または深さ優先の順序でディスク・ファイルに記憶される。また、一部の空間データ・オブジェクトを階層のより高いレベルに保持し、ほとんどまたは完全に空であるリーフおよびブランチ用のレコードは実際には作成しないような様々な変形例が存在する。たとえば、図９のリーフ１３３および１４４はどちらも空である。
クワッドツリー・データ構造の利点は、データの空間密度がかなり均一である場合にＯ（ｌｏｇ（Ｎ））というコストを示し、その結果、うまくバランスの取れたツリーが得られることである。このバランスは、ブランチの量を制御する構成アルゴリズムによって推進される。クワッドツリー内のブランチの量（したがって、最大深さ）は、空間データ・オブジェクトの局所密度と、リーフ・レベル・レコードに収容可能なこのようなオブジェクトの最大数との相互作用によって推進される。具体的には、リーフ・レコード内のデータ記憶が一杯になると、そのリーフは４つの子に分割され、それに応じてその空間データ・オブジェクトは幾何学的封じ込めによって再配分される。これが行われるたびに、ツリーの局所高さは１だけ大きくなる。しかし、このアルゴリズムの行動の結果、局所データ密度が非常に高くなり、そのため、ツリーの深さが過大になったことによりクワッドツリーのパフォーマンスがＯ（Ｎ）というコストに向かって低下する。
また、座標系内のハード・エッジ・タイルの非階層的使用法は多種多様である。このような方法の１つでは、タイルを順序付けるために空間充填曲線を使用する。図１１は、ペアノ−ヒルベルト曲線を使用して４×４のタイリングを順序付ける方法を示している。この結果得られるタイルは、一方の側に５０ユニットになる。このように順序付けられたタイルは、クワッドツリー内のリーフと同様のレコードに記憶することができ、各レコードに記憶されたデータはタイルの外周内に含まれるサブセットに対応する。レコードは、タイル番号をレコード位置に変換する表によって簡単に索引を付けることができる。
また、このタイルは、タイルのメンバーシップを割り当てるための単純な計算フレームワークとして使用することができる。データベース表４は、図１１からの対応タイル番号フィールドによって強化された事業所位置データベース表を示している。タイル番号は、その点を含むタイルのＸおよびＹの列番号および行番号の２進表現を計算し、周知のペアノ−ヒルベルト・ビットインタリーブ・アルゴリズムを適用してシーケンス内のタイル番号を計算することによって決定される。タイル番号フィールド上の索引を構築することにより、従来のデータベースにレコードを記憶する場合でも、そのレコードを幾何学的照会によって効率よく探索することができる。たとえば、タイル番号８または９によってマークされたレコードだけを検査することにより、照会例３に示す矩形ウィンドウＳＱＬ照会を満足できることを計算することは可能である。
0004231943.tif 000012
このシステムの予想コストの分析によって、このシステムと同様のすべてのシステムが共用するタイル細分性の重要性が示される。式１に示すデータベース照会用のOrder関数から補外すると、この方法のorder関数が式４によって示される。固定サイズのウィンドウ検索矩形の場合、タイルの予想数は式５によって示される（ウィンドウ検索が少なくとも１つのタイル境界を横切る可能性を反映するために各括弧内で１が加算されている）。したがって、所与の平均サイズ・ウィンドウ検索の場合、式４のＡの値はタイリングの細分性の逆幾何関数になり、これはタイリングの細分性を増加することによって最小限にすることができる。タイルあたりの点の予想数は式６によって示される。したがって、所与の平均データ密度の場合、式４のＢの値は、おおよそ、タイリングの細分性の二次関数になり、これはタイリングの細分性を減少することによって最小限にすることができる。したがって、所与の平均検索ウィンドウ・サイズおよび平均データ密度の場合、式４の予想値は、ＡおよびＢの競争傾向によってシステムの最良最小行動が得られる点を見つけるためにタイリングの細分性を調整することによって最小限にすることができる。
式４
データベース表に埋め込まれたタイル番号を使用するウィンドウ検索の予想コスト
0004231943.tif 000013
式５
検索あたりのタイルの予想数
0004231943.tif 000014
式６
タイルあたりの点の予想数
0004231943.tif 000015
この技法では依然としてデータベースのオーバーサンプリングが行われるが、サンプリングされるレコードの予想数は、タイル内のレコードの予想数に照会を満足するために必要なタイルの平均数を掛ける関数になる。タイル・サイズを調整することにより、Ｘ座標またはＹ座標のみに基づく単純な索引とは異なり、このデータベース索引付け方式のＯ（ｌｏｇ（Ｎ））という特性を保持するように、この方法の行動を制御することが可能である。２次元の「ＨＨＣＯＤＥＳ」のオラクル社によるインプリメンテーションはこのタイプの方式の一例である。
すべてのタイル・ベース方式が抱える問題は、図１２および図１３が示すように、より高次元のオブジェクト（セグメント、ポリライン、多角形）は点のようにきちんとはその方式に適合しないことである。図１２は図３からの線形および多角形データ・オブジェクトがクワッドツリー例の様々なノードに自然に分かれる様子を示している。ただし、クワッドツリーのより高いレベルにどれだけ多くのオブジェクトが存在するかに留意されたい。具体的には、下位レベルのタイル境界の１つを横切るオブジェクトはツリー内の次に高いレベルに保持されなければならない。というのは、そのタイルは、そのオブジェクトを完全にカバーする最小タイルであるからである。これは、単一エンティティとして境界を横切る可能性のあるオブジェクトを収容するためにクワッドツリー・タイル階層が有する唯一の方法である。
図１３は、階層ツリーを上へ移動するデータが矩形ウィンドウ検索例に及ぼす劇的影響を示している。線形および多角形データは位置に加え、サイズを有するので、一部の実質的なサブセットは必ずタイル境界をまたぐことになる。データベース内のオブジェクトの数が増大するにつれて、クワッドツリーの上位ノード内に存在するオブジェクトの数も増大し、その結果、構造を使用するというパフォーマンス上の利点が損なわれることになる。この問題は、すべてのハード・タイル境界方法（クワッドツリー、Ｋ−Ｄツリー、グリッドセル他）が分担している。
タイル境界をまたぐオブジェクトを管理するという問題に打ち勝つために使用する主な方法は、１）タイル境界を横切るオブジェクトを複数の断片に分割し、それによりデータ・オブジェクトを適合させること、２）オブジェクトが接触する余分なタイルごとに１回ずつそのオブジェクトを複製すること、３）それが接触する各タイルごとに１回ずつ各オブジェクトを間接的に参照することの３通りがある。特に、断片化は、読取り専用マップ・データ・アプリケーションで最も頻繁に使用されるものである。これらの各方法はそれぞれの長所を有するが、そのすべてが分担している弱点は、特に空間データベースの内容を動的に編集しなければならないときにインプリメンテーションの複雑さが大幅に増すことである。ただし、これらの技法は違反オブジェクトのそれぞれに適用する必要があり、このオブジェクトは、図１３の中間レベルおよび上位レベルのノードのオブジェクト集団が示すように、データベースの相当な部分になる可能性があることにも留意されたい。
Ｒツリー（またはレンジツリー）は、線形および多角形データの複雑さに対処するように特に進化したデータ構造である。クワッドツリーと同様に、Ｒツリーは、１つのルートと、実際の空間データを含むリーフに至る複数のブランチ・レベルからなる階層探索構造である。平面のトップダウン正規分割から構築されるクワッドツリーとは異なり、Ｒツリーは、空間データ・オブジェクトの不規則性に適合するようにボトムアップで構築される。リーフレベル・レコードは、同様のサイズおよび局所性を有するデータ・オブジェクトをまとめて収集することによって形成される。各レコードごとに、レコード内のセット・オブジェクトの最小座標値および最大座標値を定義する最小境界矩形が計算される。次に、同様のサイズおよび局所性を有するリーフ・レコードは小枝レベルのレコード内に収集されるが、このレコードは、それぞれの子レコードの最小境界矩形とその子レコードを指すポインタのリストと、集合全体を取り囲む追加の最小境界矩形からなる。次に、このような小枝レコードをまとめて収集して次のレベルのブランチを形成し、ツリーが単一ルート・レコードに収束するまで繰り返す。うまくバランスの取れたＲツリーはＯ（ｌｏｇ（Ｎ））という効率を示す。
Ｒツリーの難しさは、ツリーを構築するためにどのようにデータ内容がまとめて「適合する」かによってその定義が決まるので、Ｒツリーを構築し維持するためのアルゴリズムが複雑になり、そのデータ内容に非常に敏感になる傾向があることである。データ内容が変化しないようなＲツリーの静的アプリケーションは実現するのに最も容易なものである。データが絶えず変更されるような動的アプリケーションはかなり難しいものである。これは、幾分、空間データの幾何学的記述を変更するような編集操作が包含レコードの最小境界矩形を変更する可能性を暗に有するからであり、それが親の小枝レコードの最小境界矩形に影響し、ルートに至るまで次々に影響する可能性があるからである。したがって、どの操作もツリー構造の大幅な再編成を引き起こす可能性があり、その構造はＯ（ｌｏｇ（Ｎ））という効率を維持するためにうまくバランスが取れた状態を保持しなければならない。
要約すると、様々な専用データ構造は、多次元空間データ記憶の特定の要件を満足するように進化してきた。これらの技法は２次元空間データに関連する問題の一部を効果的に解決するが、連続範囲の値を表すデータを扱うときに１次元の方法が有するのと同じ固有の弱点も分担している。１次元の場合、問題データ・オブジェクト・タイプは単一変数の閉区間、たとえば、時間区間である。２次元の場合、線、円、多角形などの問題データ・オブジェクト・タイプは、２つの変数の閉区間によって記述される。
３次元およびより高次元の空間データ構造の説明
３次元表面を記述する空間データには、効率よく編成するための同様の要件がある。追加された複雑さとしては、３次元空間データが同等の重みを有する３つの独立変数（Ｘ、Ｙ、Ｚ）からなることである。線、表面、ボリュームの３次元の幾何学的記述も２次元の線および多角形より複雑なものになり、このため、データはいくらかかさが増すことになる。
しかし、３次元の基本データベース編成問題は基本的には２次元空間のものと同じであり、したがって、非常によく似た解決策に従うことになる。クワッドツリーと同等で、３次元空間の正規立方分割を使用する３次元技術が存在する。オラクル社では、点オブジェクトを記憶するためのその「ＨＨＣＯＤＥ」技術の３次元バージョンも実現した。また、Ｒツリーと同等で、３次元最小境界枠を使用してリーフおよびブランチの座標範囲を定義する３次元技術も存在する。これらの技術も、連続する３次元区間を表すデータを処理するときに１次元および２次元技術と同じ制限を分担する。
また、同じ原理はより高次元のデータにも適用される。特に、オラクル社では、最高１１次元までの点オブジェクトに対処するためにその「ＨＨＣＯＤＥ」技術を拡張した。
前述のように、データベース内の多次元空間データを効率よく編成し、索引を付けることに関連する問題がいくつかある。このため、空間データを凝視するための改良された方法が有利になるだろう。この利点は、本発明のシステムによって提供される。
発明の概要
前述のように、情報のデータベースは数百メガバイトのデータを含むことができ、それにより、効率よく探索するのが非常に困難になる。しかし、本発明の方法およびシステムによって記憶される多次元データは、従来のシステムよりかなり少ないプロセッサ・サイクルおよびディスク・シークで検索することができる。
従来、大量の空間データを編成するための１つの方法は、まず、空間データの上に座標系を重ねることであった。空間データベース内の各オブジェクトにはＸ座標とＹ座標が割り当てられるはずである。線、多角形、その他の形状など、より大きいオブジェクトには、そのオブジェクトをその位置に保持するためのアンカーのように機能する座標系内の単一位置点が割り当てられるはずである。たとえば、線はその一方の端部に対応する位置点を有する可能性があり、そのオブジェクトの残りの部分はもう一方の端部のＸ座標とＹ座標、線の太さ、カラー、その他の特徴に関する情報を含むはずである。このようにして、空間データベース内の各オブジェクトは、そのオブジェクトがデータベース内でどのくらいの大きさであっても、単一位置点を有するはずである。
より大きい座標系を小区域に分割することにより、特定の小区域に各位置点を割り当てることができるだろう。このような小区域は、１組の空間データを含む座標系の上に重ねられた一連のタイルに似ているので、タイルと呼ばれる。したがって、各タイルは、特定の１組の空間データを保持するだろう。その結果、どのタイルが所望の情報を保持しているかを知っているユーザだけがその特定のタイルを探索すればよかった。コンピュータ・ユーザが空間データベース内の所望の領域内の空間データを識別すると、システムは、メモリからこのいくつかのタイルを読み取り、そのタイルからオブジェクトを収集するプロセスを開始した。この方法では、それにより、システムがコンピュータ・ユーザのすべての要求に対してデータベース全体のすべてのオブジェクトを分析するのを防止していた。
データ・オブジェクトにタイル番号を割り当てるというこのシステムは点のみを含むデータにはうまく機能していたが、より大きいデータ・オブジェクトが関連すると非常に遅くなった。より大きいデータ・オブジェクトは空間データベース内の線、円、多角形になる可能性がある。空間データ・オブジェクトの編成に関連する多くの問題は、オブジェクトが多くのタイルを横切る場合にこれらのオブジェクトを唯一のタイルに割り当てるという難しさを処置しなければならなかった。たとえば、３つのタイルを横切る長い線は多くの問題を提起する可能性がある。その長い線には特定のタイルが一切割り当てられていないので、その線は間違ったタイルかまたは一連のタイルに割り当てられる可能性がある。線などのオブジェクトを複数のタイルに割り当てると、このような関連付けのすべてをコンピュータ・システム内で維持しなければならないので、膨大なコンピュータ・オーバヘッドが発生する。
一実施の形態によれば、空間データベース内のすべてのタイル間に一連のオーバラップを設けることにより、このような従来の問題が低減される。このようなオーバラップ・タイルは、ここでは「シングル（shingle）」と呼ばれ、それぞれの最も近い４つの隣接物にオーバラップするタイルを表す。どのシングルについてもオーバラップの面積は、最大効率をもたらすようにあらかじめ決定することができる。たとえば、マップ・データを保持する空間データベースは、１０平方マイルというシングル・サイズを有し、各シングル・オーバラップが５平方マイルを含むようにプログラミングすることが可能である。したがって、あらゆるシングルは、隣接シングルのサイズに等しい、その最も近い４つの隣接物とのオーバラップを有することになるだろう。このシングル・オーバラップにより、空間データベース内のより多くのデータ・オブジェクトを唯一のシングルに割り当てることができ、複数のハード・エッジ・タイル間で分割されない。前述のように、１つのオブジェクトを複数のタイル間で分割することは非常に不利なことである。というのは、特定のオブジェクトに割り当てられたすべてのタイルをシステムが追跡しなければならないからである。
したがって、層状シングル構造の目的は、データベースへの空間照会を適時にかつ効率よく解明するための論理フレームワークを提供することである。空間データ構造は、空間データ・セット内のオブジェクトに索引を付けるための編成を可能にする概念構造である。層状シングル構造は、有用かつ効果的になるように特定のコンピュータ・データ構造で実施する必要はない。層状シングル構造は、空間におけるそれぞれの同様の位置およびサイズに基づくサブセットに線、四角形、多角形などの１組の空間データ・オブジェクトを編成するための計算ツールの一部である。さらに、層状シングル構造は、データベースへの特定の空間照会が要求する必要かつ十分な空間データ・オブジェクトを含むデータベースのサブセットを識別するためのメカニズムを提供することができる。
本発明のシステムおよび方法は、タイトル境界を横切る小さいオブジェクトがツリーのより上位レベルへ移動するという従来システムで見られた問題を軽減する。一実施の形態では小区域の層が生成され、オーバラップする領域ができるようにタイルが計算される。したがって、タイル間にはいかなるハード・エッジも存在しないか、あるいは１つのオブジェクトが２つのタイル内に同時に存在する可能性がある。このようなオーバラップした小区域はシングルと呼ばれる。シングルは、たとえば、その最も近い近隣物の半分とオーバラップする可能性があるので、大きいシングル領域におさまるオブジェクトは、可能な限り最低のレベルにとどまることになる。本発明のもう１つの利点は、空間データベースに対して最高速アクセスを行えるように各層のシングル・オーバラップ・サイズを事前にプログラミングすることができるので、個々のデータベースの効率が改善されることである。
街路などの多数の小さいオブジェクトを伴うデータベースは、フリーウェイなどの多数の大きいオブジェクトを有するデータベースより小さいシングル・オーバラップ・サイズでプログラミングすることができる。シングルおよびオーバラップ領域のサイズを平均データ・オブジェクトのサイズに応じて調整すると、より多くのデータ・オブジェクトが本発明のデータベースアーキテクチャ内の単一の下位レベルに保持される。しかし、１つのシングル内におさまることができないデータ・オブジェクトは、次に高いレベルのシングルに記憶させることができる。
たとえば、第１のレベルのシングルは、５平方マイルのシングル・サイズを有し、マップ・データベースを１００００個のシングルに分割する可能性がある。しかし、第２のレベルのシングルは、１０平方マイルのシングル・サイズを有し、マップ・データベースを２５００個のシングルに分割する可能性がある。これについては、図１２を参照して以下により具体的に説明する。
本発明の実施の形態は、マップ・データベース内の空間データ・オブジェクトを編成する方法であり、データ・オブジェクトを領域内の位置点としてある座標系に対して基準付けする（referencing）こと、その領域を複数の小区域に分割すること、およびオブジェクトのいずれの部分も所定の量だけその小区域の外に延びていない限り、その位置点がその１つの小区域内に入っているデータ・オブジェクトをその小区域に割り当てることを含む。
本発明の他の実施の形態は、空間データ・オブジェクトをコンピュータ・メモリに記憶する方法であり、（１）座標系内の各データ・オブジェクトのサイズを決定するステップと、（２）各空間データ・オブジェクトを座標系内の位置点に割り当てるステップと、（３）座標系内の各点が少なくとも１つの小区域に割り当てられるように座標系のオーバラップ小区域の第１の層の境界を計算するステップと、（４）第１の層内の前記小区域のサイズより小さい各空間データ・オブジェクトに、各空間データ・オブジェクトの位置点に基づいて座標系の特定の小区域を参照させるステップと、（５）特定の小区域に対するその参照とともに空間データ・オブジェクトをコンピュータ・メモリに記憶するステップとを含む。
【図面の簡単な説明】
図１は、２次元空間における座標平面を示す図である。
図２は、図１の座標平面上の点空間データ・オブジェクトの分布を示すコンピュータ・データベースの図である。
図３は、図１の座標平面上のマップを表す線形および多角形空間データ・オブジェクトの分布を示すコンピュータ・データベースの図である。
図４は、コンピュータ・データベース内の線分、ポリライン、多角形に対応する最小境界矩形を示す図である。
図５は、図１の座標平面上の矩形ウィンドウ検索を示す図である。
図６は、図１の座標系を示す図であり、従来のコンピュータ・データベース索引付け方式が座標平面内の空間分布データの探索に適用されている。
図７は、図１の座標平面の正規象限ベースの分解を示す図である。
図８は、コンピュータ・データベース用のクワッドツリータイプの空間データ構造を形成するために図７の座標平面分解の象限および小象限を編成する方法を示すツリーの図である。
図９は、コンピュータ・データベースの空間データ構造におけるクワッドツリー・ノードへの点データ・オブジェクトの分散を示す図である。
図１０は、コンピュータ・データベースのクワッドツリーベースのデータ構造に適用された矩形ウィンドウ検索の図であり、２次元点データを管理する場合にこのデータ構造が有効であることを示す図である。
図１１は、ペアノ−ヒルベルト空間充填曲線を計算することにより、コンピュータ・データベースが正規象限ベースのタイリング方式を使用して２次元データを編成する方法を示す図である。
図１２は、線形および多角形空間データ・オブジェクトがクワッドツリーとして編成されたコンピュータ・データベースの２次元データ構造におさまる様子を示す図である。
図１３は、クワッドツリーとして編成され、線形および多角形データを含むコンピュータ・データベースに適用された矩形ウィンドウ検索の図である。この図は、２次元データをこのタイプのデータ構造に編成し、固有のサイズを有する空間データを管理することが無効であることを示している。
図１４は、座標平面に適用された３レベルの層状シングル構造を有するコンピュータ・データベースの編成を示す図である。
図１５は、本発明の層状シングル構造を使用して編成されたコンピュータ・データベースに分散された線形および多角形マップ・データ要素を示す図である。
図１６は、本発明の層状シングル構造に適用されたコンピュータ・データベース用の矩形ウィンドウ検索の図であり、サイズを有する空間データを管理する場合にこのデータ構造が有効であることを示す図である。
好ましい実施の形態の詳細な説明
次に添付図面を参照するが、図面全体を通して同様の番号は同様の部分を示す。また、便宜上、以下の説明は、概要、関数の説明、データベース表内のインプリメンテーション例、経験的分析、数学的分析、結論という主な項として編成する。
１．概要
本発明は、大量のデータを編成するための方法およびシステムである。本発明の実施の形態を示すために使用する例はマップ・データを編成するためのものであるが、この技法は他のタイプのデータにも適用可能である。適用可能な他のデータ・タイプとしては、機械製図および建築図面、アニメーションおよびバーチャル・リアリティ・データベース、ラスタ・ビットマップのデータベースなどがある。
さらに、添付図面では２次元のオブジェクトを表すデータを編成するために使用可能な本発明の実施の形態を示しているが、本発明は３次元またはそれ以上の次元のオブジェクトに関するデータの編成にも適用可能である。
したがって、前述のように、層状シングル構造の目的は、コンピュータ・データベースへの空間照会を適時にかつ効率よく解明するための論理フレームワークを提供することである。層状シングル構造は、有用かつ効果的になるように特定のコンピュータ・データ構造で実施する必要はない。層状シングル構造は、空間におけるそれぞれの同様の位置およびサイズに基づくサブセットに線、四角形、多角形などの１組の空間データ・オブジェクトを編成するための計算ツールの一部である。さらに、層状シングル構造は、データベースへの特定の空間照会が要求する必要かつ十分な空間データ・オブジェクトを含むデータベースのサブセットを識別するためのメカニズムを提供する。さらに、層状シングル構造は、好ましい一実施の形態ではＩｎｔｅｌ(R)プロセッサ・ベースのコンピュータ・システムで動作することができる。しかし、Ａｐｐｌｅ(R)、ＤＥＣ(R)、ＩＢＭ(R)が販売しているような他のコンピュータ・システムも本発明の範囲内で機能することが予想される。
図１４は、それが図１に示す座標平面例に適用されるはずなので、３レベルの層状シングル構造を示す図である。この層状シングル構造は、図７に示す座標平面の正規象限ベースの分解と同様のものである。しかし、各レベルのデータ構造が別個のハードエッジ・タイルで編成されるのではなく、各レベルはオーバラップ・シングルからなる。隣接シングル間のオーバラップについては、以下に詳述するが、図１４では陰影付きバンド２２で示す。ただし、他の構成は可能であるが、座標軸に対して垂直の正規オーバラップ四角形または矩形によって形成されるシングル１〜１８は、最も理解しやすく、実現しやすいものであることに留意されたい。
層状シングル構造の最も微細なレベル（図１４のシングル１〜１６）は、空間データの大多数のための索引付け媒体として機能するように設計されている。したがって、データ・オブジェクトの大多数がデータ構造のこのレベルのシングルに割り当てられることが望ましい。したがって、空間オブジェクトは、所定の量を上回る量だけ、シングルの中央部分のエッジを越えて延びる（たとえば、そのオーバラップは階層内の次に高い層に割り当てられることになる）。その最も微細なレベルの細分性（シングルのサイズおよびオーバラップの量）は、そのレベルのシングルに「おさまる」空間データ・オブジェクトの数を最小限にする場合（シングルのサイズを増大することによって実施する）と分割の程度を最大限にする場合（シングルのサイズを低減することによって実施する）の競争傾向間のバランスを取るように調整することができる。より粗大なレベルのシングル（シングル１７〜２０からなる図１４のシングル・レベル）は、その最も近い隣接物とのシングル付きオーバラップを含み、最も微細なレベルにおさまらないオブジェクト（すなわち、空間的に大きすぎて特定のタイル内におさまらないオブジェクト）のための代替索引付け媒体として機能する。ただし、オーバラップの絶対サイズは、連続的により粗大になる各レベルのタイル・サイズが増大するにつれて増大することに留意されたい。最後に、大きすぎてデータ構造の他のタイル内におさまらないような少数のオブジェクトを割り当てるために使用する最上位レベルのシングル２１（図１４）が存在する。
図１５は、図３に示す線形および多角形オブジェクトのそれぞれを本発明の層状シングル構造データ内に編成する方法を示す図である。以下に説明するように、各シングルは同様の位置およびサイズを有するオブジェクトのサブセットを含む。本発明のデータ構造によって提供される正規オーバラップ・タイルの利点は、図１５の本発明のデータ構造編成と図１２のデータ構造編成を比較することによって分かるだろう。このシングル付きオーバラップ・システムにより、従来技術のデータ構造の任意のタイル境界上に位置していた小さいデータ・オブジェクト（図１２のタイル１００、１１０、１２０、１３０、１４０内の集団の大部分）は層状シングル構造の最低レベル内にとどまることができる。具体的には、所与のレベルのオーバラップのサイズより小さいオブジェクトは、そのレベルまたはそのレベルより下にある何らかのシングルにおさまることが保証されている。さらに、シングル・オーバラップより大きい多くのオブジェクトは、それより下のレベル内におさまることができる。たとえば、図１５のシングル１、６、９は、このようなオブジェクトでほとんど占められている。ただし、同じオブジェクトの図１２における位置に留意されたい。データ・表２は、図１５対図１２のデータ・オブジェクト分割の数値比較を示している。
図１６と図１３を対照すると、層状シングル構造によってもたらされる改良された分割方式によって、従来技術に基づく同等の構造より矩形ウィンドウ照会パフォーマンスが改善される理由が分かる。データ照会中に検査する必要があるタイルの数は図１３の５から図１６の７にわずかに増加しているが、検査しなければならないデータ・オブジェクトの数はほぼ半分だけ（１６対３１）低下している。この低下は、まさに、各区画のサイズがわずかに増大したことによって、より多くのオブジェクトがより微細な区画レベルにおさまることができるためである。前述のように、空間データ照会は、その照会のパラメータを満足する各タイル内のあらゆるオブジェクトを検査しなければならない。したがって、図１３の場合、最上位レベル・タイル１００内の各データ・オブジェクトを検査して、それが空間データ照会のパラメータを満足するかどうかを判定しなければならない。本発明の方法によって編成されると、このように多くのデータ・オブジェクトがより小さいタイル構造内に存在できるので、空間データ照会中に検査すべきデータ・オブジェクトの数は少なくなる。このため、本発明のシステムによって編成されるコンピュータ・データベースは、従来技術のシステムより高速で探索することができる。
ただし、実際には、図１２および図１３に示す従来技術に基づく同等の構造はめったに実現されないことに留意されたい。これは、上位レベルに固定されたオブジェクトの数が多すぎて、妥当なパフォーマンスを可能にするには負担になるからである。むしろ、ハード境界方法は、タイル境界で個々のデータ・オブジェクトを断片化すること、オブジェクトが接触する各タイルごとに１回ずつそのオブジェクトを複製すること、オブジェクトが接触する各タイルごとに１回ずつそのオブジェクトを間接的に参照することを含む、代替戦略を頼りにしている。
0004231943.tif 000016
２．関数の説明
本発明の好ましい実施の形態は、２通りの主なクラスの関数を提供する。第１のクラスであるシングル割当て関数は、空間データ・オブジェクトの空間記述を「シングルキー」に変換するものである。シングルキーは、層状シングル構造内の特定のシングルを一意的に表す数値である。第２のクラスである照会制御関数は、所与の共通幾何照会の照会指定を、照会を満足するために必要なデータを「含む」必要かつ十分なシングルキーのリストに変換するものである。
付録Ａには、Ｃプログラミング言語で作成された本発明の好ましい一実施の形態が記載されている。所定の最小境界矩形の場合のシングルキーを計算する１つのシングル割当て関数KeyForBox（０５０７行から始まる）と、矩形ウィンドウ照会を解決するために必要なすべてのシングルキーをまとめて計算して返す１つの照会制御関数セット、すなわち、KeyRectCreate（０７０３行）、KeyRectRange（１０３０行）、KeyRectDestroy（１１２５行）が存在する。KeyForBox関数呼出しとKeyRectCreate関数呼出しはどちらも、それぞれに対応する空間記述パラメータが小数を伴う経度（Ｘ１およびＸ２）および緯度（Ｙ１およびＹ２）座標で表されるものと予想する。また、これらの関数はどちらも、層状シングル構造にどちらのレベルを含めるべきかを制御するnLevelMaskと、隣接シングル間のオーバラップの量を制御するnLevelLapという２つの追加パラメータを取る。付録Ａに含まれるインライン・ドキュメンテーションには、パラメータの用法が詳細に記載されている。
ただし、KeyForBoxとKeyRectCreateのどちらの場合も、倍精度の経度／緯度座標が直ちに固定小数点整数表現に変換され、３６０度分の経度が２８ビットの整数Ｘ座標で表され、１８０度分の緯度が２７ビットの整数Ｙ座標で表されることに留意されたい。この表現の分解能は概略で地上の最も近い１／２フィートの精密さである。倍精度から固定小数点へのこの変換により、シングル封じ込めとペアノ−ヒルベルト・シングル順序付けの両方を計算するために非常に効率のよいモジュール２進算術演算を使用することができる。
便宜上、この項の残りの部分は、以下のようにシングル割当て関数、照会制御関数、従来のデータベース内でのインプリメンテーションという３つの項に分割する。
２．１  シングル割当て関数
シングル割当て関数によって生成されるシングルキーは、１組の空間データのメンバをサブセットに分割するために使用するが、この場合、１つのサブセットのすべてのメンバは同じシングルキーを有する。これは、１つのサブセットの各メンバを同じシングル上に「おさめる」ことができることを意味する（たとえば、そのオブジェクトを含む最小境界枠のサイズがタイルより大きくない）。さらにこれは、１つのサブセットのすべてのメンバが同様の空間サイズと位置を有することを意味する。したがって、シングルキーによって記憶メカニズム内のデータに索引を付けてクラスタ化すること（効率を改善するための共通のデータベース管理慣行）は非常に効果的である。というのは、通常、空間照会は同様の位置およびサイズを有する複数のオブジェクトを１つのグループとして選択するからである。
手順表１は、特定の空間データ・オブジェクトに対応するシングルキーを導出する１組の計算ステップを示している。この表内のステップは、付録ＡのKeyForBox関数の０５３６〜０６５２行に対応する。これらのステップの一部については、後続パラグラフで詳述する。
0004231943.tif 000017
手順表１に示すステップ１は、空間データ・オブジェクトの最小境界矩形を計算することである。空間データ・オブジェクトの最小境界矩形は、座標軸に対して垂直で、そのオブジェクトを完全に含む最小矩形である。最小境界矩形を表す典型的な方法は、最小点（従来の座標系の左下隅）と最大点（右上隅）という２つの点によるものである。図４は、いくつかの一般的なタイプの空間オブジェクトの最小境界矩形を示している。手順表２は、様々な一般的なタイプの空間データ・オブジェクトについて最小境界矩形を計算する方法を記述したものである。場合によっては、精密な計算では費用がかかりすぎるときに、最小境界矩形のわずかな過大評価を使用することができる。
0004231943.tif 000018
0004231943.tif 000019
手順表１のステップ３では、現行レベルのシングルの最小点（右下隅）が空間オブジェクトの最小境界矩形に最も近くしかもそれ以下であるかどうかの判定が行われる。層状シングル構造が（図１４に示し、付録Ａに記載したように）座標平面の正規矩形または四角形タイリングに基づいている場合、候補シングルは最小境界矩形の最小点を含むタイルに対応するシングルである。付録ＡのKeyForBox関数の０５９０行および０５９１行では、２進モジュール算術演算を直接使用して、シングルの最小点の座標が計算される（タイル封じ込めが暗示される）。
手順表１のステップ４では、候補シングルの最大点（右上隅）が計算される。この点は、現行レベルの標準シングル幅をｘ座標に加え、現行レベルの標準シングル高さをｙ座標に加えることによって、シングルの最小点から直接決定することができる。付録Ａでは、この計算はKeyForBox関数の０５９８〜０６０１行で行われる。付録Ａで使用する層状シングル構造はオーバラップ四角形に基づくものなので、各座標に同じ値が加えられる。
手順表１のステップ５では、シングルの最大コーナーが最小境界矩形（ＭＢＲ）の最大コーナーと比較される。これは、シングルの最大ｘ座標とＭＢＲの最大ｘ座標ならびにシングルの最大ｙ座標とＭＢＲの最大ｙ座標との区分比較によって実施される。シングルの各座標値がＭＢＲの対応する値より大きい場合、シングルの最大コーナーはＭＢＲの最大コーナーより大きいと言われる。付録Ａでは、この計算はKeyForBox関数の０６０９〜０６１０行で行われる。
最小境界矩形におさまるシングルが見つからずにステップ２〜５の反復ループが完了した場合のみ、手順表１のステップ６が行われる。したがって、最小境界矩形によって表される空間オブジェクトはシングル構造の下位レベル（たとえば、層）のいずれにもおさまらない。したがって、定義上、それは最上位レベルのシングル内におさまらなければならない。付録Ａでは、このステップはKeyForBox関数の０６５１行および０６５２行で行われる。
手順表１に示すステップ７は、そのデータ・オブジェクトに「最良適合」であると判断されたシングル用のシングルキーを決定するものである。付録Ａでは、KeyForBox関数の０６２３〜０６２５行に示すKeyGenerator関数呼出しにより、ペアノ−ヒルベルト空間充填曲線を使用してシングルキー番号を割り当てる。KeyGenerator関数は付録Ａの００４３〜０４８５行に実現されている。KeyGenerator関数に与えられるパラメータとしては、シングルの最小点の座標と、層状シングル構造内の対応するレベルとを含む。ただし、異なるレベル間におけるシングルキー番号の固有性は、付録Ａの０４８２行のステートメントによって保証されることに留意されたい。
２．２  照会制御関数
第２のクラスの関数は、コンピュータ・データベースへの空間照会を制御するために使用する。このクラスの関数は、所与の共通幾何照会の照会指定を、照会を満足するために必要なデータを含む必要かつ十分なシングル・キーのリストに変換するものである。このシングルキーのリストは、個々のキーを網羅するリストまたはキー範囲のリスト（その範囲の最小値と最大値を含みかつこれらの値の間にあるすべてのキーが必要であることを暗示する）として表すことができる。
最も一般的なタイプの空間照会は、選択された外周によって定義される領域にオーバラップするすべてのオブジェクトを検出するものである。例としては、矩形ウィンドウ照会と多角形オーバラップ照会がある。手順表３は、このタイプの照会制御関数の一般的な用法を示している。
0004231943.tif 000020
データベースのいくつかの領域（たとえば、タイル）にオーバラップする照会の場合、照会した領域にオーバラップする１組のシングルは、その領域にオーバラップする各階層レベルからのシングルの和集合である。所与のレベルのシングルは、まずその領域の外周に接触するすべてのシングルを識別し、次に中央セクションから欠落しているシングルで充填することによって検出することができる。照会の外周に接触するすべてのシングルを検出するための方法の１つは、冗長出現を除去するよう注意して、シングルの配置によって各コンポーネントの経路を計算処理で追跡することである。中央セクションから欠落しているシングルを充填するための方法は、外周上で検出されたシングル間を下から上へ、左から右へ計算処理で走査することである。
付録Ａのソフトウェア・プログラムは、０６５５〜１１３５行で１つの照会制御関数セットを実現する。この関数セットは、所与の経度／緯度矩形にオーバラップするすべてのシングルを識別するものである。手順表４は、この関数セットのアルゴリズム用法を示している。
付録Ａのソフトウェア・コードの０７９２〜１０２０行に実現された内部関数KeyRectGeneratorは、現行レベルの１組のシングルを計算するために使用する。上記で概説した方法と同様に、この関数は矩形の各エッジに沿ってシングルを追跡する。しかし、ペアノ−ヒルベルト空間充填曲線はシングルを順序付けるために使用し、ペアノ−ヒルベルト曲線はその性質上、連続することが保証されているので、曲線がエッジ上の各シングルで矩形内に向かうかまたは矩形から外へ向かうかに留意し、結果として得られるリストをソートして暗示された各範囲の最小および最大を見つけ、曲線に中央部を充填させるだけで十分である。図１７は、ペアノ−ヒルベルト空間充填曲線が空間データベースの１つのレベル内の各タイルを連続的にうねって進む様子を示している。
0004231943.tif 000021
矩形検索の代わりに汎用多角形検索を実行するために同じ方法を拡張することは可能である。汎用多角形検索は、照会の目的が任意の多角形の内部にあるかまたは任意の多角形の境界に接触しているすべてのデータベースオブジェクトを取り出すことである点で、矩形ウィンドウ検索と同様のものである。しかし、システム照会言語（ＳＱＬ）の制約のため、照会例３と同等の形式で汎用多角形照会を表すことは不可能である。
汎用多角形照会を実行するために手順表４のアルゴリズムを拡張するには、どのシングルが入口点と出口点に対応するかならびに冗長なものがあればどれが冗長であるかを同時に追跡しながら、外周シリングによって多角形の経路を追跡するように配慮しなければならない。しかし、境界シングルが識別されると、同じ最小および最大範囲編成が機能することに留意されたい。一般に、この方法は、任意の閉領域にオーバラップするすべてのシングルを検出する場合に機能するだろう。
２．３  従来のデータベース内のインプリメンテーション
データベース表５は、図３からの街路セグメントの一部を表すデータ・オブジェクトを含むサンプル・データベース表を示している。シングルという列は図１５からの割当て済みシングルキーを含んでいる。Ｘ１／Ｙ１およびＸ２／Ｙ２という列は、選択されたシングル内の各オブジェクト用の最小境界矩形の座標を含んでいる。
照会例４は、付録Ａと同様の関数インタフェースがこの層状シングル構造についても存在していると想定し、矩形照会ウィンドウにオーバラップする最小境界矩形を備えた各データ・オブジェクトの一部を検出するためにデータベース表５に照会する方法を示している。この照会は、手順表４のステップ３〜５に対応する。このため、この照会は、矩形にオーバラップするすべてのセグメントを検出するために各キー範囲ごとに１回ずつ繰り返さなければならないだろう。
図１６に示すように、照会例４のウィンドウに対応するキー範囲は、８〜９、１７〜２０、２１〜２１である。ただし、データベース表５上のこのようなキー範囲を使用してこの照会を実行した結果、シングル９に割り当てられたシングル・オーバラップ・セグメントがどのように選択されるかに留意されたい。データベース表５にリストしていない図３からの他のオブジェクトもこのウィンドウにオーバラップする。
0004231943.tif 000022
0004231943.tif 000023
0004231943.tif 000024
0004231943.tif 000025
照会例４
キー範囲MinKey〜MaxKeyの場合にウィンドウ内のすべてのセグメントを検出するためのＳＱＬ
0004231943.tif 000026
３．経験的分析
図１２および図１５の先行比較で識別された分割の改善は、大量の実マップ・データが与えられたときに本発明がどのように機能するかを測定することによって妥当性を検査することができる。データ・表３は、このような測定の１つの結果を示している。このような測定を行うために使用するデータは、カリフォルニア州ロサンジェルス郡の米国Census BureauのTopographically Integrated Geographic Encoding and Referencing（ＴＩＧＥＲ）データベースファイルからの街路セグメントの抜粋である。CensusのＴＩＧＥＲファイルは、事実上の業界標準の街路マップ・データ・ソースを含む。ロサンジェルス郡というのは、そのサイズが大きく（この抜粋では４２６３６７個のセグメント）、包含範囲が多様（密集した都市化の中心、不規則に広がる郊外、人口密度の低い山岳地域および砂漠地域）なので、代表的な選択としては良好なものである。
データ・表３では、２５％のオーバラップを有する層状シングル構造と従来技術で見られるような同等のハード境界タイリングにおけるＴＩＧＥＲ街路セグメントの自然分布を比較している。これらの統計は、付録Ａに示すソフトウェア・プログラムからのKeyForBox関数に各セグメントを供給することによって生成されたものである。２５％のオーバラップを有するシングルの統計を生成するため、nLevelLapパラメータに２という値を使用した（shingle_overlap=tile_size * 1/2nLevelLap）。ハード境界タイルの統計を生成するには、オーバラップ量を強制的にゼロにするために、nLevelLapパラメータに３２という値を使用した。
データ・表３のレベルという列は、タイル／シングル構造のレベルを示し、０は最も微細な分割であり、１４は最も粗大であり、１５は最上位レベルの区画である。サイズという列は、結果として得られる象限分割のサイズ（幅と高さの両方）を緯度／経度の度数（=180/2(15-Lev)）で示す。シングルのサイズは、実際にはサイズ列に示された値より２５％大きい。ただし、付録Ａのソフトウェア・プログラムはシングルを緯度／経度空間の四角形として実現することに留意されたい。セグメントという列は、このレベルに自然に適合する（すなわち、タイル／シングル境界を横切らず、KeyForBox関数のpnLevelパラメータによって返される）ＴＩＧＥＲ街路セグメントの総数を累積する。シングルおよタイルという列は、KeyForBox関数によって返される固有のキー値の総数を累積する。Avという列は、固有のタイル／シングルあたりのセグメントの平均数を計算する。Mxという列は、いずれか１つのタイル／シングルに関連していたセグメントの最大数を示す。
0004231943.tif 000027
データ・表３の２５％のオーバラップを有するシングルという列は、層状シングル構造がこのデータ・セットをどの程度効率よく編成するかを示している。ただし、この構造の下位レベルへのセグメントの浅い分布、すなわち、セグメント９５％以上がデータ構造の最下位レベルに定着していることに留意されたい。また、必要な追加レベルは非常に少なく、これらのレベルのシングルあたりのセグメントの平均数および最大数も小さいことに留意されたい。
次に、データ・表３の２５％のオーバラップを有するシングルの統計と対応するハードタイル境界構造とを対照させる。これは、街路セグメントデータというこの付加を受けてクワッドツリー・データ構造がどのように行動するかを示す概略モデルとして機能する（しかし、クワッドツリー・ノードあたりの記憶空間に対する構造上の依存状態のために、この対応関係は精密ではない）。より微細な各レベルで導入される新しい境界によって切断されるセグメントの断片を増大するような全体的な傾向を観察する。具体的には、レベル６〜１の場合、レベルが１段ずつ下がるごとに、セグメント数が倍増する。この倍増は、より微細な各レベルがハード・タイル境界の全長を倍増し、したがって、所与のセグメントが横切る可能性が倍増するために発生する（ただし、分割の細分性がロサンジェルス郡の空間範囲を超え始めるので、この傾向はレベル６より上では次第に消えていくことに留意されたい）。さらに、レベル４以上には１００００個以上のセグメントが位置することに留意されたい。これらのセグメントがこの状態でクワッドツリーに記憶された場合、クワッドツリーの主なブランチを実質的に混乱させ、パフォーマンスを大幅に妨げることになるだろう。たとえば、記憶されるデータの量が１００倍に増加した場合、これに対応して、タイル境界交差セグメントの数も１００倍に増大し（レベル４で５００Ｋ、レベル５で２５０Ｋ、レベル６で１２５Ｋなど）、上位レベルのブランチにとって完全に過負荷になるだろう。
ハードタイル境界の列の不十分な統計は、このタイプのマップ・データをこの形式で記憶する場合にクワッドツリーを使用できない理由を示している。むしろ、この種の問題にうち勝つために、これまではデータ断片化、複製、または複数間接参照などの戦略を使用してきた。データ・表４は、様々なタイル・サイズについてこれらの特殊ケースの方法の１つで処理しなければならないオブジェクトの数をまとめたものである。この表の統計は、タイルあたりのセグメントの数の最小化と特殊ケースにより管理しなければならないセグメントの数の制限との兼ね合いを明確に示している。
0004231943.tif 000028
４．数学的分析
経験的分析で識別された統計傾向の結果、式７および式８によって分かる空間検索の対数コストが非常に予測可能なものになる。これらの式は、正規データベース表／索引が空間データ用の記憶／検索メカニズムとして使用され、索引はシングルキーに基づくという想定に基づくものである。式７は、データベース表に点を記憶するためのタイルベースの方法の行動を設定した式４から導かれる。式７における主な改良点は、複数レベルにわたるオブジェクトの広がりを反映するために合計を累積しなければならないことである。式１１は、主に、オーバラップによって照会ウィンドウが接触するタイルの数が増加する傾向があるという事実を反映するためにオフセット係数を１から２に変更することによって式５から導かれる。表１３は、経度０．０１６度×緯度０．０１４５度の矩形ウィンドウ（カリフォルニア州ロサンジェルスの緯度ではおよそ１マイルの四角形）の場合のＡLおよびＢL用のプラグイン値を示している。
表１３に示す値のうちの適度なサイズを巨大人口サイズと比較したものは、Ｏ（ｌｏｇ（Ｎ））パフォーマンス行動を可能にする係数である。たとえば、ロサンジェルス郡のみではなく米国のすべての郡に関するＴＩＧＥＲファイルのセット全体を使用する場合、人口サイズの約１００倍の増加は、式７の対数成分を２だけ増加するものでなければならない（ｌｏｇ10（４００，０００）＝６．６；ｌｏｇ10（４０，０００，０００）＝８．６）。式の他のすべての成分はだいたい同じ状態を維持するだろう。さらに、矩形ウィンドウ検索サイズが劇的に変化する場合、行動はアンバランスな状態になるので、シングル・サイズを上下に調整して補正することができる。付録Ａに示すソフトウェア・プログラムは、非常に詳細な街路マップ・データを処理するために調整されたものである。
ただし、式７は実際には大幅に改善可能な最悪のケースを表していることに留意されたい。具体的には、ＡL×ｌｏｇ（Ｎ）という式の一部分の値ＡLは、付録Ａに示すソフトウェア・インプリメンテーションで行われているように、コンピュータ・データベースにシングルを記憶するときにペアノ−ヒルベルト空間充填曲線を使用してシングルを順序付けることによって、実質的に低減することができる。この曲線を使用すると、多くの隣接シングルに連続して番号が付けられることが保証される。たとえば、ペアノ−ヒルベルト曲線で順序付けられたフィールド内の隣接シングルを任意に３×３でグループ化する場合、多くても４つの連続シーケンスができる可能性がある（図８および図１７を参照）。
式７
データベース表内の本発明のシングル番号を使用するウィンドウ検索の予想コスト
0004231943.tif 000029
式８
レベル別の検索あたりのシングルの予想数
0004231943.tif 000030
0004231943.tif 000031
５．結論
本発明は、大量のデータを編成するための効率のよい方法およびシステムを提供するものである。前述のように、情報のデータベースは、数百メガバイトのデータを含むことができ、それにより、効率よく探索するには非常に困難なものになる。しかし、本発明の方法およびシステムによって記憶された多次元データは、従来システムよりかなり少ないプロセッサ・サイクルおよびディスク・シークで検索することができる。
より大きい座標系を小区域に分割することにより、各空間オブジェクトは特定の小区域に割り当てられる。これらの小区域は、１組の空間データの上に重ねられると一連のタイルに似ているので、タイルと呼ばれる。したがって、各タイルは、特定の１組の空間データを保持するだろう。その結果、どのタイルが所望の情報を保持しているかを知っているユーザだけがその特定のタイルを探索すればよかった。コンピュータ・ユーザが空間データベース内の所望の領域内に位置する空間データを識別すると、システムは、メモリからこのいくつかのタイルを読み取り、そのタイルからオブジェクトを収集するプロセスを開始することができる。この方法では、それにより、システムがコンピュータ・ユーザのすべての要求に対してデータベース全体のすべてのオブジェクトを分析するのを防止する。
本発明では、空間データベース内のすべてのタイル間に一連のオーバラップを設ける。このようなオーバラップ・タイルは、ここでは「シングル」と呼ばれ、それぞれの最も近い隣接物にオーバラップするタイルを表す。どのシングルについてもオーバラップの面積は、最大効率をもたらすようにあらかじめ決定される。従来システムで行われていたように、このシングル・オーバラップにより、空間データベース内のより多くのデータ・オブジェクトを唯一のシングルに割り当てることができ、これらのオブジェクトは複数のハード・エッジ・タイル間で分割されなくなる。前述のように、１つのオブジェクトを複数のタイル間で分割することは非常に不利なことである。というのは、特定のオブジェクトに割り当てられたすべてのタイルをシステムが追跡しなければならないからである。
本発明のシステムおよび方法は、タイトル境界を横切る小さいオブジェクトが上位レベルへ移動するという問題を軽減する。本発明では、小区域の層が生成されるときに、オーバラップの領域ができるようにそれらが計算される。本発明では、空間データベースに対して最高速アクセスを行えるように各層のシングル・オーバラップ・サイズを事前にプログラミングすることができるので、個々のデータベースの効率が改善される。
街路などの多数の小さいオブジェクトを伴うデータベースは、フリーウェイなどの多数の大きいオブジェクトを有するデータベースより小さいシングル・サイズでプログラミングすることができる。タイルおよびシングルのサイズを平均データ・オブジェクトのサイズに応じて調整すると、より多くのデータ・オブジェクトが本発明のデータベースアーキテクチャ内の単一の下位レベルに保持される。したがって、単一のシングル内におさまることができないデータ・オブジェクトは、次に高いレベルのシングルに記憶させることができる。
付録  Ａ
0004231943.tif 000032
0004231943.tif 000033
0004231943.tif 000034
0004231943.tif 000035
0004231943.tif 000036
0004231943.tif 000037
0004231943.tif 000038
0004231943.tif 000039
0004231943.tif 000040
0004231943.tif 000041
0004231943.tif 000042
0004231943.tif 000043
0004231943.tif 000044
0004231943.tif 000045
0004231943.tif 000046
0004231943.tif 000047
0004231943.tif 000048
0004231943.tif 000049
0004231943.tif 000050
0004231943.tif 000051
0004231943.tif 000052
0004231943.tif 000053
0004231943.tif 000054
0004231943.tif 000055
0004231943.tif 000056
0004231943.tif 000057
0004231943.tif 000058
0004231943.tif 000059
0004231943.tif 000060
0004231943.tif 000061
0004231943.tif 000062
【図１】
0004231943.tif 000063
【図２】
0004231943.tif 000064
【図３】
0004231943.tif 000065
【図４】
0004231943.tif 000066
【図５】
0004231943.tif 000067
【図６】
0004231943.tif 000068
【図７】
0004231943.tif 000069
【図８】
0004231943.tif 000070
【図９】
0004231943.tif 000071
【図１０】
0004231943.tif 000072
【図１１】
0004231943.tif 000073
【図１２】
0004231943.tif 000074
【図１３】
0004231943.tif 000075
【図１４】
0004231943.tif 000076
【図１５】
0004231943.tif 000077
【図１６】
0004231943.tif 000078
【図１７】
0004231943.tif 000079