1. Preparar Datos

../_images/prepareData.png

Para poder usar pgRouting, los datos deben importarse a una base de datos.

1.1. Preparar la base de datos

pgRouting se instala como extensión. Esto requiere:

  • PostgreSQL

  • PostGIS

Estos requisitos se cumplen en OSGeoLive. Cuando se instale el software necesario, abrir una ventana de terminal presionando ctrl-alt-t y siguir las instrucciones. Se puede encontrar información sobre la instalación de OSGeoLive en OSGeoLive Installation.

Nota

If OSGeoLive is not being used, please refer to the chapter’s appendix to set up the user user.

1.1.1. Crear una base de datos compatible con pgRouting

Nota

Dependiendo de la configuración de postgres -U <user> es necesario en los comandos

 1# Create the database
 2createdb city_routing
 3
 4# login as user "user"
 5psql city_routing << EOF
 6
 7-- add PostGIS functions
 8CREATE EXTENSION postgis;
 9
10-- add pgRouting functions
11CREATE EXTENSION pgrouting;
12
13-- Inspect the pgRouting installation
14\dx+ pgrouting
15
16-- View pgRouting version
17SELECT pgr_version();
18
19EOF

Nota

To exit the database use \q

1.2. Obtenga los Datos del Taller

The pgRouting workshop will make use of OpenStreetMap data, which is already available on OSGeoLive. This workshop will use the Prizren city data and is a snapshot of March 2023.

1.2.1. Obtención de los datos

1.2.1.1. Opción 1) Cuando esté usando OSGeoLive

OSGeoLive viene con datos de OSM de la ciudad de Prizren.

CITY="Prizren_XK"
bzcat ~/data/osm/$CITY.osm.bz2 > $CITY.osm

1.2.1.2. Opción 2) Descargar datos de sitio web de OSGeoLive

Los mismos datos exactos se pueden encontrar en la página de descarga de OSGeoLive.

1CITY="Prizren_XK"
2wget -N --progress=dot:mega "https://download.osgeo.org/livedvd/16/osm/$CITY.osm.bz2"
3
4bunzip2 -f "$CITY.osm.bz2"

1.2.1.3. Opción 3) Descargar usando Overpass XAPI

A continuación se descargan los datos de OSM más recientes sobre el uso de la misma área. El uso de estos datos en el taller puede generar variaciones en los resultados, debido a los cambios desde Marzo 2023.

CITY="Prizren_XK"
BBOX="21.1922265,42.0816364,20.2206175,42.6653875"
wget --progress=dot:mega -O "$CITY.osm" "http://www.overpass-api.de/api/xapi?*[bbox=\$\{BBOX\}][@meta]"

Puede encontrar más información sobre cómo descargar datos de OpenStreetMap en https://wiki.openstreetmap.org/wiki/Downloading_data

An alternative for very large areas is to use the download services of Geofabrik.

1.3. Cargar datos en la base de datos

El siguiente paso es ejecutar el convertidor osm2pgrouting'', que es una herramienta de línea de comandos que inserta los datos en la base de datos, "listo" para ser utilizado con pgRouting. Puede encontrar información adicional sobre ``osm2pgrouting en Apéndice: Herramienta de Importación osm2pgrouting

Para este paso:

  • se utiliza el archivo de configuración predeterminado de osm2pgrouting mapconfig.xml

  • y los datos de ~/Desktop/workshop/Prizren_XK.osm

  • con la base de datos city_routing

Desde una ventana de terminal ctrl-alt-t.

1.3.1. Ejecute el convertidor osm2pgrouting

1/usr/bin/osm2pgrouting \
2    -f "Prizren_XK.osm" \
3    -c "/usr/share/osm2pgrouting/mapconfig.xml" \
4    -d city_routing \
5    -U user \
6    -W user \
7    --clean

Nota

Dependiendo de la versión osm2pgrouting -W password es necesario

Salida:

1/usr/bin/osm2pgrouting \
2    -f "Prizren_XK.osm" \
3    -c "/usr/share/osm2pgrouting/mapconfig.xml" \
4    -d city_routing \
5    -U user \
6    -W user \
7    --clean

1.3.2. Tablas en la base de datos

psql -d city_routing -c "\d"

Si todo salió bien el resultado debería verse así:

                   List of relations
 Schema |           Name           |   Type   | Owner  
--------+--------------------------+----------+--------
 public | configuration            | table    | user
 public | configuration_id_seq     | sequence | user
 public | geography_columns        | view     | runner
 public | geometry_columns         | view     | runner
 public | pointsofinterest         | table    | user
 public | pointsofinterest_pid_seq | sequence | user
 public | spatial_ref_sys          | table    | runner
 public | ways                     | table    | user
 public | ways_gid_seq             | sequence | user
 public | ways_vertices_pgr        | table    | user
 public | ways_vertices_pgr_id_seq | sequence | user
(11 rows)

1.4. Capítulo: Apéndice

OSGeoLive’s account name on the database is user. To easily use the workshop when not using OSGeoLive this extra steps are needed:

# work on the home folder
cd

# login to postgres
psql -U postgres

-- Create "user"
CREATE ROLE "user" SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN PASSWORD 'user';

-- exit psql
\q

# Add the user to .pgpass
echo :5432:*:user:user >> .pgpass