Le blog de Jean David TECHER, un Réunionnais à Saint-Priest/Lyon

Aller au contenu | Aller au menu | Aller à la recherche


< 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 >

mardi 22 juillet 2008

Shooting star and bridge - Usage example

We have the following roads. See the following image

The table test has the following content
routing_db=# SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test order by gid;
 id | source | target |       cost       |   reverse_cost   | x1 |  y1  | x2  |  y2  | rule | to_cost 
----+--------+--------+------------------+------------------+----+------+-----+------+------+---------
  1 |      1 |      2 |             27.5 |             27.5 | 60 | 87.5 |  60 |  115 |      |        
  2 |      2 |      3 | 25.4950975679639 | 25.4950975679639 | 60 |  115 |  85 |  120 |      |        
  3 |      1 |      4 |             62.5 |             1000 | 60 | 87.5 |  60 |   25 |      |        
  4 |      5 |      6 | 29.0688837074973 | 29.0688837074973 |  1 |    1 |  20 |   23 |      |        
  5 |      6 |      4 | 40.0499687890016 | 40.0499687890016 | 20 |   23 |  60 |   25 |      |        
  6 |      4 |      7 | 27.3130005674953 | 27.3130005674953 | 60 |   25 |  85 |   36 |      |        
  7 |      8 |      1 |               59 |               59 |  1 | 87.5 |  60 | 87.5 |      |        
  8 |      1 |      9 |               25 |               25 | 60 | 87.5 |  85 | 87.5 |      |        
  9 |      9 |     10 |               65 |               65 | 85 | 87.5 | 150 | 87.5 |      |        
 10 |     11 |      3 |               15 |               15 | 85 |  135 |  85 |  120 |      |        
 11 |      3 |      9 |             32.5 |             32.5 | 85 |  120 |  85 | 87.5 |      |        
 12 |      9 |      7 |             51.5 |             51.5 | 85 | 87.5 |  85 |   36 |      |        
 13 |      7 |     12 |               35 |               35 | 85 |   36 |  85 |    1 |      |        
(13 lignes)
Suppose now that we have build a bridge from edge=8 to edge=9 and a one-way street. We have the following image

Question: How to use shooting start in order to taking account the bridge?

First we have to update the fields rule and to_cost for edge in (8,9,11,12) and add required tuples. Then we have the following content.

Notice: Edge 3 is a one-way street. so reverse_cost=1 000 000

routing_db=# select gid,astext(the_geom),source,target,x1,y1,x2,y2,cost,reverse_cost,rule,to_cost from test order by 1;
 gid |               astext                | source | target | x1 |  y1  | x2  |  y2  |       cost       |   reverse_cost   | rule | to_cost 
-----+-------------------------------------+--------+--------+----+------+-----+------+------------------+------------------+------+---------
   1 | MULTILINESTRING((60 87.5,60 115))   |      1 |      2 | 60 | 87.5 |  60 |  115 |             27.5 |             27.5 |      |        
   2 | MULTILINESTRING((60 115,85 120))    |      2 |      3 | 60 |  115 |  85 |  120 | 25.4950975679639 | 25.4950975679639 |      |        
   3 | MULTILINESTRING((60 87.5,60 25))    |      1 |      4 | 60 | 87.5 |  60 |   25 |             62.5 |          1000000 |      |        
   4 | MULTILINESTRING((1 1,20 23))        |      5 |      6 |  1 |    1 |  20 |   23 | 29.0688837074973 | 29.0688837074973 |      |        
   5 | MULTILINESTRING((20 23,60 25))      |      6 |      4 | 20 |   23 |  60 |   25 | 40.0499687890016 | 40.0499687890016 |      |        
   6 | MULTILINESTRING((60 25,85 36))      |      4 |      7 | 60 |   25 |  85 |   36 | 27.3130005674953 | 27.3130005674953 |      |        
   7 | MULTILINESTRING((1 87.5,60 87.5))   |      8 |      1 |  1 | 87.5 |  60 | 87.5 |               59 |               59 |      |        
   8 | MULTILINESTRING((60 87.5,85 87.5))  |      1 |      9 | 60 | 87.5 |  85 | 87.5 |               25 |               25 | 11   |    2000
   8 | MULTILINESTRING((60 87.5,85 87.5))  |      1 |      9 | 60 | 87.5 |  85 | 87.5 |               25 |               25 | 12   |    2000
   9 | MULTILINESTRING((85 87.5,150 87.5)) |      9 |     10 | 85 | 87.5 | 150 | 87.5 |               65 |               65 | 10   |    2000
   9 | MULTILINESTRING((85 87.5,150 87.5)) |      9 |     10 | 85 | 87.5 | 150 | 87.5 |               65 |               65 | 11   |    2000
   9 | MULTILINESTRING((85 87.5,150 87.5)) |      9 |     10 | 85 | 87.5 | 150 | 87.5 |               65 |               65 | 12   |    2000
  10 | MULTILINESTRING((85 135,85 120))    |     11 |      3 | 85 |  135 |  85 |  120 |               15 |               15 |      |        
  11 | MULTILINESTRING((85 120,85 87.5))   |      3 |      9 | 85 |  120 |  85 | 87.5 |             32.5 |             32.5 | 8    |    1000
  11 | MULTILINESTRING((85 120,85 87.5))   |      3 |      9 | 85 |  120 |  85 | 87.5 |             32.5 |             32.5 | 9    |    1000
  12 | MULTILINESTRING((85 87.5,85 36))    |      9 |      7 | 85 | 87.5 |  85 |   36 |             51.5 |             51.5 | 8    |    1000
  12 | MULTILINESTRING((85 87.5,85 36))    |      9 |      7 | 85 | 87.5 |  85 |   36 |             51.5 |             51.5 | 9    |    1000
  13 | MULTILINESTRING((85 36,85 1))       |      7 |     12 | 85 |   36 |  85 |    1 |               35 |               35 |      |        
(18 lignes)

Notice: for more informations, please see http://pgrouting.postlbs.org/

Let's now do a few tests

Example 1

Find the path from edge=7 to edge=13
routing_db=# SELECT edge_id FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',7,13, true,true);
 edge_id 
---------
       7
       3
       6
      13
For the reversed path (from 13 to 7), we have
routing_db=# SELECT edge_id FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',13,7, true,true);
 edge_id 
---------
      13
      13
      12
      11
       2
       1
       7

Example 2

Find the path from edge=9 to edge=13
routing_db=# SELECT edge_id FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',9,13, true,true);
 edge_id 
---------
       9
       9
       8
       3
       6
      13
If start is 13 and stop is 9 then we have
routing_db=# SELECT edge_id FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',13,9, true,true);
 edge_id 
---------
      13
      13
      12
      11
       2
       1
       8
       9

Example 3

Find the path from edge=12 to edge=9
routing_db=# SELECT edge_id FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',12,9, true,true);
 edge_id 
---------
      12
      12
      11
       2
       1
       8
       9
From 9 to 12, we have
routing_db=# SELECT edge_id FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',9,12, true,true);
 edge_id 
---------
       9
       9
       8
       1
       2
      11
      12

Example 4

From 9 to 10 and vice-versa
routing_db=# SELECT *  FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',9,10, true,true);
 vertex_id | edge_id |       cost       
-----------+---------+------------------
         8 |       9 |               65
        12 |       9 |               65
         8 |       8 |               25
         6 |       1 |             27.5
        18 |       2 | 25.4950975679639
        16 |      10 |               15
(6 lignes)

routing_db=# SELECT *  FROM shortest_path_shooting_star('SELECT gid as id, source, target, cost, reverse_cost, x1, y1, x2, y2, rule, to_cost FROM test',10,9, true,true);
 vertex_id | edge_id |       cost       
-----------+---------+------------------
        15 |      10 |               15
        16 |       2 | 25.4950975679639
        18 |       1 |             27.5
         6 |       8 |               25
         8 |       9 |               65
(5 lignes)

[PgRouting 1.02]Using Shooting star with a clause where

Let's suppose that we are at Montpellier in France. (the one of the most beautifull towns in South France !). We want to go from "Avenue du Fès" to "Rue de Casseyrols", i.e.
  • start point := "Avenue du Fès";
  • end point := "Rue de Casseyrols".

Everything is shown in the following picture


start point and and point

In order to manage the street, we had the following column to hour table. If the status field is yes, then the street is available.

ALTER TABLE routing add column status text default 'yes';
We use
SELECT the_geom FROM routing r JOIN 
           (SELECT edge_id FROM shortest_path_shooting_star(
         'SELECT gid as id,source,target,cost,reverse_cost,x1,y1,x2,y2,rule,to_cost from routing WHERE status='::text||'''yes'''::text,
           426515,
          404982, true, true)) AS  x(e)
     ON x.e = r.gid;
Then we have
We go through the street "Avenue du Père Soulas". Suppose now that the street is not available.
We do
 UPDATE routing SET status='no' WHERE name='Avenue du Père Soulas';
We have

Toulouse...une belle ville que j'aimerais bien visiter!

Depuis que je suis sur la côte, que ce soit lors de mes sorties nocturnes ou au taf, j'ai rencontré beaucoup de personnes qui ont cotoyé cette ville. De l'expérience et du vécu de chacun, il en ressort toujours la même impression: belle et charmante ville.

On me dit que c'est une ville qui bouge, qui est vivante. J'aimerais bien y faire un tour à l'occasion. Non pas que pour des vacances mais au moins pour un séjour assez long. Pourquoi pas professionnellement?...LOL! Mais bon on verra ça dans les temps à venir. Laisson l'été passé et profitons-en. Du temps où je taffais à 01MAP, de part les formations en informatique que je donnais, j'ai souvent eu l'occasion pendant mes courts séjours de faire un peu de tourisme!

Toulouse est l'une des villes que je n'ai pas encore inscrit dans mon parcours. Mais à entendre les gens que je cotois en parler, cette ville et sa région, il fait bon y vivre!...On verra, on verra si l'occasion de s'y échapper/rentre se présente, j'y ferais bien un tour sur place!

S'il faut amener le chat, j'amène le chat!

dimanche 20 juillet 2008

Vendredi soir et samedi soir: soirée au Tché de Juan-Les-Pins avec un pote antillais

En semaine j'avais fait la connaissance d'un ami antillais avec qui j'ai vite sympathisé. Sincèrement ça fait dun bien que d'être sur lacôte et de bouger avec quelqu'un des îles comme moi. Vendredi soir ca a été bien.Arrivé vers 00h30~1h00, ons'est retrouvé, on a commandé une bouteille de rosée, puis ti'punch etc...

Sincèrement nous avons passé une très bonne soirée. Nous sommes arrivé que depuis quelques mois sur la côte avec notre parcours à chacun, nos soucis, nos projets etc...mais on a su se trouver pour bouger ensemble et penser à autre chose le temps d'une soirée...Mais j'ai surtout noté et bien des gens de la place nous l'on fait remarqué, on s'est bougé! Pourtant rien d'extraordinaire, que ce soit à la Réunion, à Montpellier, ou à Juan, j'ai toujours bougé pareil. Je ne m'encombre pas des mentalités locales ou surfaites pour essayer de m'intégrer, mon pote aussi. C'est sûrement ça qui doit faire la différence! Tout à notre honneur, nous qui sommes des îles

Par contre contrairement à mes habituelles soirées, pour une fois le boss de la place nous a mis de la musique des îles. On a bougé comme des gamins enragés et heureux le temps d'une soirée.

Samedi soir, en début de soirée, je suis allé au Quai Sud d'Antibes histoire de prendre un truc frais à boire. Et là j'ai discuté avec la serveuse -qui au pasage était très charmante-. Et là elle me parle comme si elle me connaissait déjà sans gêne. J'ai été quelque peu surpris. Et quand elle m'a dit qu'elle m'avait déjà vu au Tché et qu'elle y allait souvent. Là je me suis dit..Houla apparement bouger et danser ca marque les esprits !

Samedi soir, on a remis ça de 1h00 à la fermeture à 5h00. Là aussi c'est resté très festif . Mon pote et moi ont été chauds comme de la braiseLOL....Y'a pas à dire faire la fête c'est sûrement gravé dans les gênes. On a cassé la blague avec des gens de la place en fin de soirée mais tout celà restait enfantin. Pas de prise de tête, histoire de parler ouvertement et faire connaissance.

Sincèrement on été pa l'er ek' lo band' moun' autour de nou! C'était Réunion et Antilles en force...! Kawo fé ti ma!? Ti bouz' enkor' ?

Y'a même eu à notre demande un bon son raggae rien que pour nous. J'en ai profité pour demander au DJ de me passer Relax de Mika, histoire de bouger une dernière fois ! Il sait que je kiffe grave cette chanson. D'ailleurs quand elle est passée, j'étais le seul sur la piste dans mon délire.

Pour conclure, j'ai passé un week-end très très agréable. Aujourd'hui dimanche, je me repose. Dehors il fait pas beau. J'ai eu mon coloc' de Montpellier au tél' aujourd'hui. Lui aussi va bien et tout se passe bien pour lui.