ja/TopologyCreation

経路探索アプリケーションのためのデータ作成

経路探索エンジンは、通常、最短経路の探索のためにあらゆるラインについて始点終点ノードを必要とします。ライン・ネットワーク、このデータを作成するということは、そのネットワーク上にトポロジーを作成することを意味します。pgDijkstraはPostgreSQL内で始点終点ノード情報を作成することができますが、性能はそれほどよくありません。大きなデータセット上でトポロジーを作成するために、1日以上かかる場合もあります。(DBのパフォーマンス・チューニングによって時間短縮が可能です)

トポロジーを少しでも速く作成するために利用されるソフトウェアが他にもあります。

PostGIS

この文章を書いている時点で最新の PostGISバージョンは1.1.2です。このバージョンはトポロジ機能の追加が始まったばかりです。しかしまだアルファ版の段階で、トポロジを作成するためのドキュメントも少ししかありません。トポロジ機能が安定して使用できるようになった段階で、このページを更新します。

ArcInfo

ArcInfoライセンスがある場合、BUILDコマンドを実行するだけでトポロジを作成できます。

build line {Coverage Name}

そして、カバレッジをPostGISでインポート可能なShapeファイルで出力します。BUILDコマンドはfnode_, tnode_, length カラムを作成します。これらはPostgreSQLではsource, targetにリネームされます。またlengthは初期コストに設定することができます。

GRASS

 GRASSはトポロジの作成も使用も可能ですが、shapeファイルに出力されたデータセットにトポロジ情報が含まれないため、トポロジ情報を抽出しPostgreSQLに移動することはArcInfoほど簡単ではありません。

トポロジ作成コマンド"v.build"には、ファイルにパイプ出力するストリームに情報を出力するダンプオプションがあります。たとえば:

v.build map=dourol option=build,dump > dourokukan.txt 

出力はこのようになります。:

---------- TOPOLOGY DUMP ----------
N,S,E,W,T,B: 35.897887, 24.281578, 153.985841, 138.943042, 0.000000, 0.000000
Nodes (148304 nodes, alive + dead ):
node = 1, n_lines = 3, xy = 139.756532, 35.67451
line = 1, type = 2, angle = -2.265356
line = -20, type = 2, angle = -0.055499
line = 8, type = 2, angle = 1.281166
node = 2, n_lines = 3, xy = 139.756261, 35.674216
line = -9, type = 2, angle = -2.827622
line = 2, type = 2, angle = -1.878154
...
...
...
Lines (220672 lines, alive + dead ):
line = 1, type = 2, offset = 14 n1 = 1, n2 = 2, left/area = 0, right = 0
N,S,E,W,T,B: 35.674510, 35.674216, 139.756532, 139.756261, 0.000000, 0.000000
line = 2, type = 2, offset = 79 n1 = 2, n2 = 3, left/area = 0, right = 0
N,S,E,W,T,B: 35.674216, 35.672010, 139.756261, 139.755285, 0.000000, 0.000000
line = 3, type = 2, offset = 160 n1 = 3, n2 = 4, left/area = 0, right = 0
N,S,E,W,T,B: 35.672010, 35.671649, 139.755285, 139.755014, 0.000000, 0.000000

 table_topo.plのようなperlプログラムは、GRASSの出力をノードとラインテーブルを作成し、トポロジ情報を含むSQLファイルへ変換するために使用できます。これらのテーブルは、始点終点ノード情報を作成するために、PostGISのネットワークテーブルにリンクすることができます。

プログラム

トポロジをサポート http://pgrouting.postlbs.org/ticket/27


この日本語訳の著作権は、日本ユニシス株式会社に帰属しています。また、この日本語訳は、GNU FDLのもとで提供されています。