ja/DrivingDistance

到達圏探索

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のもとで提供されています。