経路探索アプリケーションのためのデータ作成
経路探索エンジンは、通常、最短経路の探索のためにあらゆるラインについて始点終点ノードを必要とします。ライン・ネットワーク、このデータを作成するということは、そのネットワーク上にトポロジーを作成することを意味します。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のもとで提供されています。