pgRouting Benutzerhandbuch
pgRouting
ist ein Erweiterungsmodul für PostgreSQL und PostGIS, das verschiedene Routing-Algorithmen und -Funktionen wie kürzeste Wege, das Problem des Handlungsreisenden und Servicereihenanalyse bietet. Es eignet sich für Bereiche wie Verkehr, Logistik und Netzwerkanalyse. Dieser Artikel beschreibt im Detail, wie Sie pgRouting
in ServBay installieren und verwenden.
Installation von pgRouting
ServBay enthält bereits das pgRouting
-Erweiterungsmodul. Sie müssen es nur in Ihrer Datenbank aktivieren. Hier sind die Schritte zur Aktivierung von pgRouting
:
Mit der PostgreSQL-Datenbank verbinden:
bashpsql -U your_username -d your_database
1Erweiterung erstellen:
sqlCREATE EXTENSION pgrouting;
1Installation überprüfen:
sql\dx
1
Konfiguration von pgRouting
Nach der Aktivierung von pgRouting
können Sie Netzwerkinformationen erstellen und verwalten sowie verschiedene Routing-Algorithmen zur Analyse verwenden.
Erstellen der Netzwerkdatentabelle
Hier ist ein Beispiel, wie Sie eine Tabelle mit Netzwerkinformationen erstellen.
Tabelle erstellen:
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
8Beispieldaten einfügen:
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
Topologie erstellen
Bevor Sie Routing-Analysen durchführen können, müssen Sie eine Topologie für die Network-Daten erstellen.
- Topologie erstellen:sql
SELECT pgr_createTopology('ways', 0.00001, 'geom', 'id');
1
Verwendung von pgRouting zur Routing-Analyse
Hier sind einige gängige Beispiele für Routing-Analysen.
Kürzeste Strecke
- Kürzeste Strecke abfragen:sql
SELECT * FROM pgr_dijkstra( 'SELECT id, source, target, cost FROM ways', 1, 4, directed := true );
1
2
3
4
Problem des Handlungsreisenden
- Problem des Handlungsreisenden lösen: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
Servicereihenanalyse
- Servicereihenanalyse:sql
SELECT * FROM pgr_drivingDistance( 'SELECT id, source, target, cost FROM ways', 1, 2, directed := true );
1
2
3
4
Visualisierung der Routing-Ergebnisse
Sie können verschiedene GIS-Tools (z. B. QGIS) oder Web-Mapping-Dienste (z. B. Leaflet, OpenLayers) verwenden, um die Ergebnisse von pgRouting
zu visualisieren.
Verwendung von QGIS
Mit der PostgreSQL-Datenbank verbinden:
- Öffnen Sie QGIS
- Wählen Sie „Datenquellenmanager“ -> „PostGIS“
- Geben Sie die Verbindungsinformationen zur Datenbank ein und verbinden Sie sich
Netzwerkdaten laden:
- Wählen Sie die zu ladende Tabelle oder Sicht aus
- Klicken Sie auf die Schaltfläche „Hinzufügen“
Verwendung von Leaflet
- Webkarte erstellen:html
<!DOCTYPE html> <html> <head> <title>Leaflet pgRouting Beispiel</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); // Eine Polylinie aus den pgRouting-Daten hinzufügen 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
Zusammenfassung
pgRouting
ist ein leistungsstarkes Routing-Erweiterungsmodul, das durch einfache Konfiguration und Nutzung effiziente Routing-Analysen in PostgreSQL ermöglicht. ServBay enthält bereits das pgRouting
-Erweiterungsmodul; Sie müssen es lediglich gemäß den in diesem Artikel dargelegten Schritten installieren und konfigurieren, um es verwenden zu können. Mit verschiedenen Routing-Algorithmen und Analysemethoden können Sie Netzwerkinformationen optimal nutzen und Ihrer Anwendung zuverlässige Datenbankunterstützung bieten.