1. Preparar Datos¶
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:
Versión PostgreSQL compatible
Versión PostGIS compatible
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 Instalación.
Nota
Si OSGeoLive no se está utilizando, consulte el apéndice del capítulo para configurar el usuario «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
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
Firenze
city data and is a snapshot of July 2021.
1.2.1. Obtención de los datos¶
1.2.1.1. Opción 1) Cuando esté usando OSGeoLive¶
OSGeoLive comes with osm data from the city of Firenze.
CITY="Firenze_IT"
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.
1# TODO Use the /15/osm instead of data/osm/FIRENZE_IT
2CITY="Firenze_IT"
3wget -N --progress=dot:mega \
4"http://download.osgeo.org/livedvd/15/osm/$CITY.osm.bz2"
5bunzip2 -f "$CITY.osm.bz2"
1.2.1.3. Opción 3) Descargar usando Overpass XAPI¶
The following downloads the latest OSM data on using the same area. Using this data in the workshop can generate variations in the results, due to changes since July 2021.
CITY="Firenze_IT"
BBOX="11.20,43.76,11.27,43.79"
wget --progress=dot:mega -O "$CITY.osm" "http://www.overpass-api.de/api/xapi?*[bbox=][@meta]"
Puede encontrar más información sobre cómo descargar datos de OpenStreetMap en https://wiki.openstreetmap.org/wiki/Downloading_data
Una alternativa para zonas muy grandes es utilizar los servicios de descarga de 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
and the
~/Desktop/workshop/Firenze_IT.osm
datacon la base de datos
city_routing
Desde una ventana de terminal ctrl-alt-t
.
1.3.1. Ejecute el convertidor osm2pgrouting¶
1/usr/local/bin/osm2pgrouting \
2 -f "Firenze_IT.osm" \
3 -c "/usr/local/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/local/bin/osm2pgrouting \
2 -f "Firenze_IT.osm" \
3 -c "/usr/local/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 | vicky
public | geometry_columns | view | vicky
public | pointsofinterest | table | user
public | pointsofinterest_pid_seq | sequence | user
public | spatial_ref_sys | table | vicky
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¶
El nombre de cuenta de OSGeoLive en la base de datos es "user"
. Para utilizar fácilmente el taller cuando no se utiliza OSGeoLive se necesitan estos pasos adicionales:
# 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