La fonction driving_distance est définie comme suit :
CREATE OR REPLACE FUNCTION driving_distance(sql text, source_id integer,distance float8)
RETURNS SETOF path_result
RETURNS SETOF path_result
Les arguments sont :
- sql
- une requête SQL, qui devrait renvoyer un ensemble de lignes ayant les colonnes suivantes :
- id: un identifiant (int4) de l'arc
- source: un identifiant (int4) du noeud origine
- target: un identifiant (int4) du noeud destination
- cost: une valeur float8 représentant le coût de traversé d'un arc. (un coût négatif entrainera la non insertion de l'arc dans le graphe).
- source_id
- un identifiant (int4) du point de départ id of the start point
- distance
- une valeur float8 de la distance en degrés
La focntion renvoie un ensemble de lignes. Il y a une ligne pour chaque arc tranversés et un ligne supplémentaire contenant le noeud terminal. Les colonnes de chaque lignes sont :
- vertex_id: l'identifiant du noeud source de chaque arc. Il y a une ligne supplémentaire contenant l'identifiant du noeud final du chemin.
- edge_id: l'identifiant de l'arc traversé
- cost: le coût associé à l'arc. Il vaut 0 pour la ligne après le dernier arc. Donc, le cou^t total du chemin peut être calculé comme la somme de la colonne cost de toutes les lignes.
Exemple:
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)Posted in version imprimable | Vous devez vous connecter ou vous enregistrer pour écrire des commentaires | 3155 lectures
Posté par djay le 21 Août, 2006 - 12:44.