1.2 トポロジ・データ・モデルの概念

トポロジとは、空間内のオブジェクトに関する数学の1つの分野です。位相関係には、包含内部覆う覆われる接触境界が交差する重なりなどがあります。

位相関係は、座標空間が(ねじりや伸張などで)変形しても変化しません。(位相的でない関係には、長さ2物間の距離面積などがあります。)

トポロジの基本的な要素は、ノード、エッジおよびフェイスです。

ノードは点で表現され、孤立したものを表すか、またはエッジの境界を示すために使用されます。2つ以上のエッジの連結部は、孤立していないノードです。ノードには、そのノードの空間位置を表す1組の座標値が関連付けられます。ノードとして表現できる地理エンティティには、通りの開始点と終了点、史跡、空港(非常に広域な地図の場合)などがあります。

エッジは、開始ノード(基点)と終了ノード(終点)の2つのノードで定義されます。1つのエッジには、1つのジオメトリ・オブジェクトが関連付けられます。このオブジェクトは、通常、エッジの空間表現を表す一連の座標です。エッジには複数の頂点が含まれる場合があり、それらによって線ストリングが表現されます。(トポロジでは円弧はサポートされていません。)エッジとして表現できる地理エンティティには、通りや川の区画があります。

座標の順序によって、エッジの方向が決まります。方向は、位相関係を判断する際に重要です。正の方向は基礎となるエッジの方向で、負の方向はそれとは逆の方向です。エッジの各方向は、有向エッジと呼ばれます。各有向エッジは、そのエッジの他方の有向エッジのミラー・イメージです。正の有向エッジの開始ノードは、負の有向エッジの終了ノードです。エッジは2つのフェイスの境界でもあります。このエッジは両方のフェイスへの参照を含んでいます。フェイスの連続した周囲の各有向エッジは、それぞれ左側の次のエッジへの参照を含んでいます。ポリゴンに対応しているフェイスは、その外側の境界の有向エッジごとに1つの参照を含んでいます。また、孤立ノードや孤立エッジが存在する場合、フェイスは各孤立要素の境界上の1つの有向エッジへの参照を含んでいます。フェイスとして表現できる地理エンティティには、公園、湖、郡、州などがあります。

図1-1に、ノード、エッジおよびフェイスを含む単純なトポロジを示します。各エッジ上の矢印は、エッジの正の方向(正確には、エッジの正の方向の基準となる線ストリング・ジオメトリまたは曲線ジオメトリの方向)を示しています。

図1-1 単純なトポロジ

図1-1の説明が続きます
図1-1「単純なトポロジ」の説明

図1-1のノート:

  • E 要素(E1、E2など)はエッジ、F 要素(F0、F1など)はフェイス、N 要素(N1、N2など)はノードです。

  • F0(フェイス0(ゼロ))は、すべてのトポロジに作成されます。これは、トポロジ内の他のすべてのものを含むユニバース・フェイスです。このユニバース・フェイスには、ジオメトリは関連付けられません。F0のフェイスID値は-1(負の1)です。

  • 各点ジオメトリ、およびエッジの各開始ノードと各終了ノードに対して、1つのノードが作成されます。たとえば、フェイスF1には、E1というエッジ(閉じたエッジ)が1つのみ存在します。このエッジには、開始ノードと終了ノードとして同じノード(N1)が含まれています。F1には、開始ノードN21と終了ノードN22で構成されたエッジE25も含まれています。

  • 孤立ノード(島ノード)は、フェイス内で孤立しているノードです。たとえば、ノードN4はフェイスF2内の孤立ノードです。

  • 孤立エッジ(島エッジ)は、フェイス内で孤立しているエッジです。たとえば、エッジE25はフェイスF1内の孤立エッジです。

  • ループ・エッジは、同じノードを開始ノードと終了ノードとして使用するエッジです。たとえば、エッジE1は、ノードN1から開始してノードN1で終了するループ・エッジです。

  • エッジ上には孤立ノードは含まれません。エッジ上にノードを追加することで、エッジを2つに分割できます。たとえば、ノードN16とN18の間が最初は単一のエッジであった場合、ノードN17を追加したことによってE6とE7の2つのエッジが作成されています。

  • 位相関係に関する情報は、特別なエッジ情報表、フェイス情報表およびノード情報表に格納されます。たとえば、エッジ情報表には、エッジE9およびE10に関する次の情報が格納されます。(各エッジの矢印の方向に注意してください。)次のエッジと前のエッジは、エッジの左と右のフェイスに基づいています。

    エッジE9の場合、開始ノードはN15で、終了ノードはN14です。左の次のエッジはE19、左の前のエッジは-E21、右の次のエッジは-E22、右の前のエッジはE20です。左のフェイスはF3で、右のフェイスはF6です。

    エッジE10の場合、開始ノードはN13で、終了ノードはN14です。左の次のエッジは-E20、左の前のエッジはE18、右の次のエッジはE17、右の前のエッジは-E19です。左のフェイスはF7で、右のフェイスはF4です。

    エッジに関連するデータの、図および説明を含むその他の例については、「エッジ情報表」を参照してください。

図1-2に、図1-1と同じトポロジにグリッドおよびX軸とY軸の目盛りを追加したものを示します。図1-2は、「SDO_TOPOパッケージ・サブプログラム」および「SDO_TOPO_MAPパッケージ・サブプログラム」の一部の例の出力を理解するために役立ちます。

図1-2 グリッド線と目盛りを追加した単純なトポロジ

図1-2の説明が続きます。
図1-2「グリッド線と目盛りを追加した単純なトポロジ」の説明

1.2.1 トポロジ・データ・モデルの許容差

許容差は、空間データに精度レベルを関連付けるために使用します。許容差は、(たとえば、丸めの誤差の調整のために、)2つの点が一致しない場合でも、2点が同一の点とみなされる最大距離に影響します。許容差には、0(ゼロ)より大きい正の数字を指定する必要があります。

ただし、トポロジ・データ・モデルの許容差には、実行されている操作によって異なる2つの意味があり、一方の意味は従来のOracle Spatialの許容差の定義であり、もう一方の意味は固定許容差10E-15です。

  • SDO_TOPO.CREATE_TOPOLOGYプロシージャへのコールに指定される許容差は、従来のOracle Spatialの定義を参照します(『Oracle Spatial開発者ガイド』を参照)。この許容差は、索引がノード表、エッジ表およびフェイス表に作成される場合と、これらの表を問い合せるために空間演算子が使用される場合に使用されます。

  • トポロジの編集操作中、内部計算(エッジの交差点の検出など)に使用される許容差は、常に(Java倍精度演算に基づく)10E-15です。この許容差は、SDO_TOPO_MAP.VALIDATE_TOPO_MAPファンクションおよびSDO_TOPO_MAP.VALIDATE_TOPOLOGYファンクションによる妥当性チェックの実行中に使用されます。

したがって、たとえば、あるエッジ・ジオメトリがSDO_TOPO_MAP.VALIDATE_TOPO_MAPファンクションまたはSDO_TOPO_MAP.VALIDATE_TOPOLOGYファンクションによって有効とみなされていても、そのエッジ・ジオメトリがSDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションに渡されると、有効でない可能性があります。