pgRouting logo OSGeo Community Project

Guida rapida su pgRouting

pgRouting è un’estensione e aggiunge funzionalità di routing e altre analisi di reti ai database PostGIS/PostgreSQL.

Questa guida rapida descrive come aprire un database con la linea di comando ed eseguire una semplice interrogazione per il percordo più corto con un set di dati campione.

Eseguire pgRouting

  • Aprire una finestra Applications ‣ Accessories ‣ Terminal e collegarsi al database pgrouting:
psql -U user pgrouting
  • Digitare \d che vi mostrerà tutte le tabelle disponibili:
                List of relations
 Schema |        Name         |   Type   | Owner
--------+---------------------+----------+-------
 public | classes             | table    | user
 public | geography_columns   | view     | user
 public | geometry_columns    | view     | user
 public | nodes               | table    | user
 public | raster_columns      | view     | user
 public | raster_overviews    | view     | user
 public | relation_ways       | table    | user
 public | relations           | table    | user
 public | spatial_ref_sys     | table    | user
 public | types               | table    | user
 public | vertices_tmp        | table    | user
 public | vertices_tmp_id_seq | sequence | user
 public | way_tag             | table    | user
 public | ways                | table    | user
(14 rows)
  • Eseguire la funzione per il percorso più corto Dijkstra:
SELECT seq, id1 AS node, id2 AS edge, cost
        FROM pgr_dijkstra('
                SELECT gid::int as id, source::int, target::int,
                        length::float8 as cost FROM ways',
                100, 600, false, false
        );
 seq | node | edge  |        cost
-----+------+-------+---------------------
   0 |  100 |   115 |  0.0605959823538948
   1 |   99 |  2972 |   0.197600739218643
   2 | 2151 |  3783 |  0.0139212050887606
 ... |  ... |   ... |                 ...
  52 |  599 |   732 |  0.0390125147117973
  53 |  600 |    -1 |                   0
(54 rows)
  • Per ottenere la geometria del percorso, collegare il risultato con le geometrie della strada:
SELECT seq, id2 AS edge, rpad(b.the_geom,60,' ') AS "the_geom (truncated)"
        FROM pgr_dijkstra('
                SELECT gid::int as id, source::int, target::int,
                        length::float8 as cost FROM ways',
                100, 600, false, false
        ) a INNER JOIN ways b ON (a.id2 = b.gid) ORDER BY seq;
 seq | edge  |                     the_geom (truncated)
-----+-------+--------------------------------------------------------------
   0 |   115 | 0102000020E610000002000000012D0208C4B0F2BFBD2DA237267A4A40E5
   1 |  2972 | 0102000020E610000002000000622B0DA1EFB3F2BF65236B685E7A4A4001
   2 |  3783 | 0102000020E610000002000000BD4571D8C7B4F2BFB2648EE55D7A4A4062
 ... |   ... |                                                          ...
  52 |   732 | 0102000020E6100000020000006B48DC63E903F3BF84CCDFCECF7B4A40E9
(53 rows)
  • Con il comando \q uscirete dalla shell di PostgreSQL.

E poi?