Guida all'uso di pgRouting
pgRouting
è un modulo di estensione per PostgreSQL e PostGIS che offre vari algoritmi e funzionalità di routing, come il percorso più breve, il problema del commesso viaggiatore e l'analisi delle aree di servizio, utile per trasporto, logistica e analisi di rete. Questo articolo descriverà in dettaglio come installare e utilizzare pgRouting
in ServBay.
Installazione di pgRouting
ServBay include già il modulo di estensione pgRouting
, è necessario solo abilitarlo nel database. Ecco i passaggi per abilitare pgRouting
:
Connettersi al database PostgreSQL:
bashpsql -U your_username -d your_database
1Creare l'estensione:
sqlCREATE EXTENSION pgrouting;
1Verificare l'installazione:
sql\dx
1
Configurazione di pgRouting
Dopo aver abilitato pgRouting
, è possibile creare e gestire i dati della rete stradale e usare vari algoritmi di routing per l'analisi.
Creare una tabella di dati della rete stradale
Ecco un esempio che mostra come creare una tabella contenente i dati della rete stradale.
Creare la tabella:
sqlCREATE TABLE ways ( id SERIAL PRIMARY KEY, source INTEGER, target INTEGER, cost DOUBLE PRECISION, reverse_cost DOUBLE PRECISION, geom GEOMETRY(LineString, 4326) );
1
2
3
4
5
6
7
8Inserire dati di esempio:
sqlINSERT INTO ways (source, target, cost, reverse_cost, geom) VALUES (1, 2, 1.0, 1.0, ST_GeomFromText('LINESTRING(116.4074 39.9042, 116.4084 39.9052)', 4326)), (2, 3, 1.0, 1.0, ST_GeomFromText('LINESTRING(116.4084 39.9052, 116.4094 39.9062)', 4326)), (3, 4, 1.0, 1.0, ST_GeomFromText('LINESTRING(116.4094 39.9062, 116.4104 39.9072)', 4326));
1
2
3
4
Creare la topologia
Prima di eseguire l'analisi del routing, è necessario creare una topologia per i dati della rete stradale.
- Creare la topologia:sql
SELECT pgr_createTopology('ways', 0.00001, 'geom', 'id');
1
Usare pgRouting per l'analisi di routing
Ecco alcuni esempi comuni di analisi di routing.
Percorso più breve
- Query per il percorso più breve:sql
SELECT * FROM pgr_dijkstra( 'SELECT id, source, target, cost FROM ways', 1, 4, directed := true );
1
2
3
4
Problema del commesso viaggiatore
- Risoluzione del problema del commesso viaggiatore:sql
SELECT * FROM pgr_tsp( 'SELECT id, x::float8 AS x, y::float8 AS y FROM ways_vertices_pgr', start_id := 1 );
1
2
3
4
Analisi dell'area di servizio
- Analisi dell'area di servizio:sql
SELECT * FROM pgr_drivingDistance( 'SELECT id, source, target, cost FROM ways', 1, 2, directed := true );
1
2
3
4
Visualizzare i risultati del routing
È possibile usare vari strumenti GIS (come QGIS) o servizi di mappe web (come Leaflet, OpenLayers) per visualizzare i risultati di pgRouting
.
Usare QGIS
Connettersi al database PostgreSQL:
- Aprire QGIS
- Selezionare "Gestore dati" -> "PostGIS"
- Inserire le informazioni di connessione al database e connettersi
Caricare i dati della rete stradale:
- Selezionare la tabella o vista da caricare
- Fare clic sul pulsante "Aggiungi"
Usare Leaflet
- Creare una mappa web:html
<!DOCTYPE html> <html> <head> <title>Esempio di Leaflet con pgRouting</title> <link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" /> <script src="https://unpkg.com/leaflet/dist/leaflet.js"></script> </head> <body> <div id="map" style="width: 600px; height: 400px;"></div> <script> var map = L.map('map').setView([39.9042, 116.4074], 13); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap contributors' }).addTo(map); // Aggiungere una polilinea dai dati pgRouting var polyline = L.polyline([ [39.9042, 116.4074], [39.9052, 116.4084], [39.9062, 116.4094], [39.9072, 116.4104] ]).addTo(map); </script> </body> </html>
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
Sommario
pgRouting
è un potente modulo di estensione per il routing, e con una configurazione e un utilizzo semplici, è possibile eseguire analisi di routing efficienti in PostgreSQL. ServBay include già il modulo di estensione pgRouting
, è solo necessario seguire i passaggi descritti in questo articolo per l'installazione e la configurazione. Grazie ai vari algoritmi e funzionalità di analisi del routing, è possibile sfruttare al meglio i dati della rete stradale per fornire un supporto affidabile al database nelle proprie applicazioni.