Guía de uso de pgRouting
pgRouting
es un módulo de extensión para PostgreSQL y PostGIS que ofrece varios algoritmos y funciones de enrutamiento, como el camino más corto, el problema del vendedor ambulante y el análisis de áreas de servicio, adecuado para áreas como el tráfico, la logística y el análisis de redes. Este artículo detallará cómo instalar y usar pgRouting
en ServBay.
Instalación de pgRouting
ServBay ya incluye el módulo de extensión pgRouting
, solo necesita habilitarlo en la base de datos. A continuación se describen los pasos para habilitar pgRouting
:
Conectar a la base de datos PostgreSQL:
bashpsql -U tu_usuario -d tu_base_de_datos
1Crear la extensión:
sqlCREATE EXTENSION pgrouting;
1Verificar la instalación:
sql\dx
1
Configuración de pgRouting
Una vez que haya habilitado pgRouting
, puede crear y gestionar datos de red y utilizar varios algoritmos de enrutamiento para el análisis.
Creación de la tabla de datos de red
Aquí hay un ejemplo que muestra cómo crear una tabla que contenga datos de red.
Crear tabla:
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
8Insertar datos de ejemplo:
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
Crear topología
Antes de realizar el análisis de enrutamiento, necesita crear una topología para los datos de la red.
- Crear topología:sql
SELECT pgr_createTopology('ways', 0.00001, 'geom', 'id');
1
Uso de pgRouting para análisis de enrutamiento
A continuación, algunos ejemplos comunes de análisis de enrutamiento.
Camino más corto
- Consultar el camino más corto:sql
SELECT * FROM pgr_dijkstra( 'SELECT id, source, target, cost FROM ways', 1, 4, directed := true );
1
2
3
4
Problema del vendedor ambulante
- Resolver el problema del vendedor ambulante: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
Análisis de áreas de servicio
- Análisis de áreas de servicio:sql
SELECT * FROM pgr_drivingDistance( 'SELECT id, source, target, cost FROM ways', 1, 2, directed := true );
1
2
3
4
Visualización de resultados de enrutamiento
Puede usar varias herramientas GIS (como QGIS) o servicios de mapas web (como Leaflet, OpenLayers) para visualizar los resultados de pgRouting
.
Uso de QGIS
Conectar a la base de datos PostgreSQL:
- Abra QGIS
- Seleccione "Administrador de fuentes de datos" -> "PostGIS"
- Ingrese la información de conexión de la base de datos y conéctese
Cargar datos de red:
- Seleccione la tabla o vista que desea cargar
- Haga clic en el botón "Agregar"
Uso de Leaflet
- Crear un mapa web:html
<!DOCTYPE html> <html> <head> <title>Ejemplo de pgRouting con Leaflet</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); // Añadir una línea poligonal con datos de 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
Resumen
pgRouting
es un módulo de extensión de enrutamiento poderoso que, mediante una configuración y uso simples, permite realizar análisis de enrutamiento eficientes en PostgreSQL. ServBay ya incluye el módulo de extensión pgRouting
, y solo necesita seguir los pasos descritos en este artículo para instalarlo y configurarlo. A través de varios algoritmos y funciones de análisis de enrutamiento, puede aprovechar mejor los datos de la red para proporcionar soporte confiable a su aplicación.