接続されたエッジ間の特別な関係をどのように説明しますか?


11

3つのエッジがノードで接続するこの単純な状況を考えてみましょう。

エッジ関係

AとCの関係から区別するように、AとBの関係を簡潔かつ明確に説明したいと思います。Bに、しかしAは隣接していないCへ。」しかし、実際には隣接関係ではありません。

別の言い方をすると、ノードに立って、Aに向かっていると想像してください。時計回りに回転し始めます。次のエッジはCではなくBです。

AとBの間のこの関係を、上で書いたよりも簡潔、正式、または正しい方法で説明する方法はありますか?

それは方向性でなければなりません(このタイプの関係の1つはAから時計回りに存在し、別の関係は反時計回りに存在します)。また、ノードで3つ以上のエッジが接続されている場合にスケールアップする必要があります。たぶんルーティングと関係があるのでしょうか?(私はこれを道路網の文脈で考えています。)

私はすでに試したことがありますが、まだ十分ではない2つのアプローチ:

  1. 9IMのようなトポロジ参照DE-9IMを調べましたが、数学者ではありませんが、図や用語から、このタイプの関係をカバーしていないことはまだわかると思います。また、ESRIヘルプまたはOracleヘルプのトポロジの説明にもまだ記載されていません。(おそらくそこに何かがありますが、私はまだそれを見つけていないだけです!)

  2. :Aの "北"側の顔もBで囲まれている可能性があるという事実をいじりましたが、Cではありません。しかし、ここの図でわかるように、それは必ずしも真実ではありません。私の図が、AとCが幹線道路で、Bが短い行き止まりの道路である道路ネットワークからの抜粋であると想像してください。

私が言おうとしていることに対する単一の用語がないかもしれないと思う。少なくとも、私が上でやったよりも簡単な方法でそのような関係を説明できるようにしたいです。これはプラットフォームに依存しない質問です。今、私はちょうど正しい言葉を探しています。後で、シェープファイルのpython(pyqgisまたはarcpy)で概念を実装しようとするので、そのエンドポイントを念頭に置いた回答は特に興味深いが、必要ではありません。


各ノードに接続されているエッジのリストを方向で並べてみませんか?
ジュリアン

1
DCELを探しているようです。平面グラフを二重化すると、面がノードになることに注意してください。図では3面の片が存在するアルファベータ、及びガンマ分離エッジAと、ベータからガンマを、分離エッジB ガンマからアルファ、および分離エッジC アルファからベータ。これにより、探しているすべての情報を含む循環グラフが生成されます。実際、デュアルグラフでは実際に隣接しています。
whuber

@julien、ありがとう-それはまともな実装のアイデアです。やってみます。しかし、最初に...私はこのタイプの関係を説明する単語やフレーズを探しています。
アンディティリア

@whuber、ヒントをありがとう。DCELに出会ったことはありません。Bは北向きの「次の」ハーフエッジ、Aの西向きのハーフエッジのように見えます。共通ノードによって暗示されます。Bが面の境界(つまり、行き止まりの道路)でない場合に機能するのだろうか さらに詳しく見ていきます。
-andytilia

@julien、あなたのコメントをもう一度読んでいます。あなたは私に提案されたフレージングも与えていることがわかります。:-)「方向で並べ替え」を使用して関係を説明できます。少し遊んでみてください。
-andytilia

回答:


1

私はここでのパーティーに少し遅れていることを知っていますが、これは非常に興味深いものであり、私の答えが役に立つことを願っています。

あなたが尋ねているのは質的な関係です。多くの場合、量的関係の兄弟は無視されました。定性的推論は、地理空間科学で頻繁に登場します。クエリの例は次のとおりです。この区画に隣接する区画はどれですか?領域Aと領域Bの重なりの中にはどのような特徴がありますか?どの領域が凹面ですか?左側にある道路はどれですか?関係は、隣接、内側、凹型、および左側です。質の高いクエリは、量が多い、短い、または多いなどの量的な質問と比較すると、見過ごされたり過小評価されたりすることがよくあります。

2つの入力を受け取る定性的関係は、バイナリ関係と呼ばれます。これには2つの一般的な表記法があります。-isLeftOf(A、B)これはプレフィックス表記法です。-A isLeftOf Bこれは中置記法です。

上記の例では、単項関係もありました:isConcave。この関係は、リージョンをそれ自体に関連付け、ブール値を返します。

9交差モデル(9EIMで参照)のEgenhoferの空間述語はすべて、2つの領域間のバイナリ関係です。また、Randell、Cui、およびCohnのRCC(http://en.wikipedia.org/wiki/Region_connection_calculus)にも興味があるかもしれません。この研究領域で与えられた定性的(位相的)関係は、領域を領域に関連付け、後の作品は線を領域に、線を線に関連付けます。ただし、これはあなたが探しているものではありません。

さて、余談ですがごめんなさい、しかしそれがあなたの質問の用語の面で役立つことを願っています。

@whuberは、二重接続エッジリスト(DCEL)を提案して順調に進んでいます。これは、多くの場合CADシステムのカバーの下で使用されるコンビナトリアルマップと翼のあるエッジに近いものです。翼のあるエッジ(http://en.wikipedia.org/wiki/Winged_edge)の概念は、well-known-text標準が多角形の穴を定義する方法です(http://en.wikipedia.org/wiki/Well-known_text #Geometric_objects)。ポリゴンでは、外側のポイントの順序は反時計回りであり、内側のポイントの場合は時計回りであることに注意してください。この順序で境界に沿って歩いている小さな妖精の人は、常に彼女の左側の地域の内側を見るでしょう。

コンビナトリアルマップとDCELの重要なポイントは、これらのオブジェクトが方向付け可能なサーフェス上で定義されることです。数学の公式に取り組む必要はありません。アイデアは非常に単純です。GISの空間参照システムでできるように、サーフェス上で方向を定義できれば、方向付け可能なサーフェスが得られます。したがって、方向を定義できる場合は、サーフェス上の任意の点の周りに方向の順序を定義できます。方向の順序付けでは、isLeftOf(A、B)、isRotationallyAdjacentTo(A、B)などを定義できます。

サーフェスに埋め込まれたグラフの頂点の周りの順序を定義するには、2つの割り当てが必要です。1)エッジエンドポイントへのラベルの割り当て、2)頂点の周りの順序の規則の割り当て。配列内の要素の順序(画像の[A、B、C]など)が時計回りの場合、どのエッジがBの左側にあるかを知ることができます。

あなたの例では、各要素は他の要素に隣接しています。配列は実際には順列を表しているため、その事実も配列に表示されます。つまり、順序が重要ですが、どの要素が最初ではありません。したがって、[A、B、C]は[C、A、B]と同等です。つまり、最後の要素が最初の要素に隣接するように、配列が折り返されます。


ありがとう!「回転的に隣接」という用語が好きです。あなたが言うように、頂点の周りの順序付けの規則で拡張する必要があります。私の場合、その慣習をケースバイケースで定義する必要があります。だから、あなたが提案するような置換を使用して、isRotationallyAdjacentTo(A、B、Direction)のようなものをコーディングすることに取り組みます。または、上記のケースに関して、「AはBに時計回りに回転隣接しており、AはCに時計回りに回転隣接していない」。
andytilia

ちなみに、私はまだ地域接続計算を検討していませんでした。(あなたが言うように)この問題を解決するものではありませんが、それでも興味深いものです。ランデル、クイ、コーンが考えている「後の作品」を教えていただけますか?(HM:RC&Cの文字がRCCと呼ばれるフレームワークを作成)
andytilia

4

Teleatlas、Navteq、ESRIなどのベンダーから取得したトポロジと接続性のグラフを見ると、パターンが見え始めます(もちろん、誰もが独自の「特別な」方法を持っています)。

個人的には、1)Geospatial Topology2)Routing Graphsは単なるグラフであり、同じデータ構造で表現できるように一般化できますが、できるだけ避けるようにしています。

私は頭の中で区別しようとします。

  • 「地理空間トポロジ」(1)と言うときは、フィーチャの幾何学的関係を表すグラフ構造を意味します(たとえば、エッジAの左側、エッジ[A、B、C]によって形成される顔、顔に含まれるもの) Bなど)。
  • 「ルーティンググラフ」(2)と言うとき、ルーティングの問題を解決するためのグラフ構造を意味します(たとえば、[X]制限/条件でA-> Bから取得するための最短パス)

それらは単なるグラフであり、科学幅広さに属しますが、同じものとして一般化しないという明確な利点があります。これらはさまざまな目的に使用され、その特定の目的に特化されている場合、操作を最適化および適用するのがはるかに簡単です。

ESRIはこれを行います。これらには、地理空間トポロジ(TopologyGraph)のグラフ構造と、ルーティング問題(ネットワークデータセット)の別のグラフ構造があります。ちなみに、ユーティリティネットワークのフローの問題にうまく機能する古いグラフ構造- ジオメトリックネットワークもあります。

おそらく、PostgreSQL / PostGISの世界では、これにも遭遇します。ルーティング用のデータ構造と、地理空間トポロジ用のデータ構造があります。

あなたの質問では、グラフについて話し、それらを時計回りと反時計回りにナビゲートするだけでなく、顔も持っています。

「地理空間トポロジ」の場合、この種のトポロジを表す良い方法は、英国水路局がS57 Topology Description of Full Topologyで行う方法だと思います。

UKHOフルトポロジ

すべての主要な実装が行うことと非常に似ています。

現在、探しているのがルーティングの場合、グラフは単一方向または双方向接続のどちらが必要かによって異なります。最後に、次のように要約します。

  • あるノードからに接続TOノード作成エッジを
  • エッジは、左側と右側(例えばアドレス範囲)の属性を持っています。
  • 接合は、(縁が接続すなわちノード)制約のセットを有することができます。したがって、基本的には、ジャンクション自体を表すマスタージャンクションエントリと、フロー制限を表すためのFROMおよびTOエントリを持つ個々のエントリがあります。

幸運を祈ります。あなたのプロジェクトがどうなるか教えてください。


2種類のグラフを明確に区別してくれてありがとう。ルーティンググラフには通常、エッジやノードに関する情報が含まれているのに対し、地理空間トポロジはエッジやノードの属性を必要としない(オブジェクト間の空間的な関係のみに基づいている)と言っても公平な違いだと思いますか?私の問題は、地理空間トポロジの領域にしっかりと当てはまると思います。エッジAとBの関係は、エッジの属性に関係なく存在します。しかし、私はまだ...この関係に名前を付けるための簡潔な方法を欠けている
andytilia

「地理空間トポロジは、エッジとノードの帰属を必要としない」と言うのはあまりにも強すぎると思いますが、実際にはケースバイケースです。そのノードを持つ機能間で共有される属性を含むトポロジグラフを見ました。例は、Zまたは温度の値です。単にノードと呼び、必要に応じて接続されたノードを区別すると言うだけですが、もちろん、解決しようとしている問題全体のコンテキストは十分ではありません。
ラギヤセルバーフム

ああ、ありがとう、橋で交差する2つの道路の平面グラフ表示。4つのエッジを持つ1つのノードが存在する場合がありますが、すべてのエッジが互いに接続しているわけではありません。そのため、ノードには交差レベルに関する情報を含める必要があり、その状況を等級交差と区別します。
アンディティリア

1
丁度 :)。だから私はジャンクションに言及します。私はその事件について考えていました。その方法の1つは、ジャンクションをFROM-TOエントリを持つ「マスターノード」として表すことです。高架/地下道の状況は常に発生します。最悪の場合は、ベイブリッジやシカゴのように、エッジが一方向に流れ、他のセットが他の方向に流れる2D空間(事実上互いに重なり合っている)に一致するエッジがある場合です。
ラギヤセルバーフム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.