到達圏探索
driving_distance機能を利用するためには以下の宣言文が必要です:
CREATE OR REPLACE FUNCTION driving_distance(sql text, source_id integer, distance float8) RETURNS SETOF path_result
引数:
sql: SQLのクエリーです。以下に続くカラムからなる行セットを返します:
- id: エッジのID[int4]
- source: 始点ノードのID[int4]
- target: 終点ノードのID[int4]
- cost: エッジにかかる重み(負の重みはエッジがグラフに挿入されることを防ぎます)[float8]
source_id: 始点ノードのID[int4] distance: 始点からの距離[float8]
関数は行のセットを返します。それぞれの交差しているエッジあたり1行、また終点を含む追加行が1行あります。各行のカラム構成は:
- vertex_id: 各エッジの始点ノードIDです。経路探索の終点ノードIDを含む最後のエッジの後に、もう一行あります。(最後のエッジの終点ノードから続くエッジがないことを示すため)
- edge_id: 交差したエッジのID
- cost: 現在のエッジに関連付けられたコスト。最後のエッジの場合は0となります。したがって、経路の合計コストはcostカラムの合計となります。
例:
SELECT * FROM driving_distance('SELECT gid AS id,source,target, length::double precision AS cost FROM dourol',10549,0.01);
vertex_id | edge_id | cost -----------+---------+--------------- 6190 | 120220 | 0.00967666852 6205 | 118671 | 0.00961557335 6225 | 119384 | 0.00965668162 6320 | 119378 | 0.00959826176 ... ... ... 15144 | 122612 | 0.00973386526 15285 | 120471 | 0.00912965866 15349 | 122085 | 0.00944814966 15417 | 120471 | 0.00942316736 15483 | 121629 | 0.00972957546 (293 rows)
この日本語訳の著作権は、日本ユニシス株式会社に帰属しています。また、この日本語訳は、GNU FDLのもとで提供されています。