1. Datos para los Objetivos de Desarrollo Sostenible

../_images/prepareData.png

Para poder utilizar pgRouting, los datos deben importarse a una base de datos. Este capítulo usará osm2pgrouting para obtener los datos de OpenStreetMaps (OSM). Estos datos se utilizarán para ejercicios en capítulos posteriores.

1.1. Directorio de trabajo para la manipulación de datos de pgRouting

mkdir ~/Desktop/workshop
cd ~/Desktop/workshop

1.2. Base de datos de Mumbai

pgRouting está preinstalado como una extensión que requiere:

  • Versión PostgreSQL compatible

  • Versión PostGIS compatible

These requirements are met on OSGeoLive. When the required software is installed, open a terminal window by pressing ctrl-alt-t and follow the instructions. Information about installing OSGeoLive can be found in Instalación of this workshop.

Nota

Si no está pgRouting instalado. Se puede encontrar el procedimiento de instalación en este enlace

1.2.1. Crear base de datos de Mumbai compatible con pgRouting

Utilice el siguiente comando para crear la base de datos mumbai

createdb mumbai

Para conectarse a la base de datos, haga lo siguiente

psql mumbai

Después de conectarse a la base de datos, el primer paso es crear EXTENSION para habilitar pgRouting y PostGIS en la base de datos. A continuación, agregue el SCHEMA` para cada tabla.

 1-- add PostGIS extension
 2CREATE EXTENSION postgis;
 3
 4-- add pgRouting extension
 5CREATE EXTENSION pgrouting;
 6
 7-- creating schemas for data
 8CREATE SCHEMA roads;
 9CREATE SCHEMA buildings;
10CREATE EXTENSION hstore;

1.2.2. Obtenga los datos de Mumbai

El taller pgRouting hará uso de los datos de OpenStreetMap de un área en la ciudad de Mumbai. Las instrucciones para descargar los datos se dan a continuación.

1.2.2.1. Descarga de datos de Mumbai desde OSGeo

El siguiente comando se utiliza para descargar la instantánea de los datos del área de Mumbai utilizados en este taller, utilizando el servicio de descarga de OSGeo.

Nota

Los datos de Mumbai para este taller depende de ésta instantanea.

1CITY="mumbai"
2wget -N --progress=dot:mega \
3"https://download.osgeo.org/pgrouting/workshops/$CITY.osm.bz2"
4bunzip2 -f "$CITY.osm.bz2"

1.2.2.2. Descarga de datos de Mumbai desde OpenStreetMap (OSM)

El siguiente comando se utiliza para descargar los datos de OpenStreetMap del área en Mumbai, India.

Los datos de OpenStreetMap cambian día a día, por lo tanto, si se utilizan estos datos, los resultados pueden cambiar y algunas consultas pueden necesitar ajustes. El comando se utilizó para tomar la instantánea de los datos en junio de 2021.

1CITY="mumbai"
2BBOX="72.8263,19.1021,72.8379,19.1166"
3wget --progress=dot:mega -O "$CITY.osm" "http://www.overpass-api.de/api/xapi?*[bbox=][@meta]"

1.2.3. Cargar datos de Mumbai 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 lo siguiente:

  • Archivos de configuración mumbai_buildings.xml y mumbai_roads.xml para osm2pgrouting.

  • ~/Desktop/workshop/mumbai.osm - Datos de OSM del paso anterior

  • Base de datos mumbai.

El contenido de los archivos de configuración se indican en el Apéndice. Crear un archivo XML utilizando estos contenidos y guardar en el directorio raíz ~/Desktop/workshop.

Abrir una ventana de terminal con ctrl-alt-t y navegar al directorio del taller cd ~/Desktop/workshop. El siguiente comando osm2pgrouting se utilizará para convertir los archivos osm a un formato amigable a pgRouting que usaremos para ejercicios posteriores.

1.2.3.1. Importación de los caminos de Mumbai

El siguiente comando osm2pgrouting se utilizará para importar los caminos del archivo de OpenStreetMap a la base de datos pgRouting los cuales usaremos para ejercicios posteriores.

 1/usr/bin/osm2pgrouting \
 2    -f "mumbai.osm" \
 3    -c "/usr/share/osm2pgrouting/mapconfig.xml" \
 4    --schema "roads" \
 5    -d mumbai \
 6    -U user \
 7    -W user \
 8    --prefix "roads_" \
 9    --tags \
10    --clean

Nota

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

Salida:

 1Execution starts at: Mon Aug 22 21:49:29 2022
 2
 3***************************************************
 4           COMMAND LINE CONFIGURATION             *
 5***************************************************
 6Filename = mumbai.osm
 7Configuration file = /usr/share/osm2pgrouting/mapconfig.xml
 8host = localhost
 9port = 5432
10dbname = mumbai
11username = user
12schema= roads
13prefix = roads_
14suffix = 
15Drop tables
16Don't create indexes
17Don't add OSM nodes
18***************************************************
19Testing database connection: mumbai
20database connection successful: mumbai
21Connecting to the database
22connection success
23
24Dropping tables...
25TABLE: roads.roads_ways dropped ... OK.
26TABLE: roads.roads_ways_vertices_pgr dropped ... OK.
27TABLE: roads.roads_pointsofinterest dropped ... OK.
28TABLE: roads.configuration dropped ... OK.
29TABLE: roads.osm_nodes dropped ... OK.
30TABLE: roads.osm_ways dropped ... OK.
31TABLE: roads.osm_relations dropped ... OK.
32
33Creating tables...
34TABLE: roads.roads_ways_vertices_pgr created ... OK.
35TABLE: roads.roads_ways created ... OK.
36TABLE: roads.roads_pointsofinterest created ... OK.
37TABLE: roads.configuration created ... OK.
38Opening configuration file: /usr/share/osm2pgrouting/mapconfig.xml
39    Parsing configuration
40
41Exporting configuration ...
42  - Done 
43Counting lines ...
44  - Done 
45Opening data file: mumbai.osm	total lines: 24438
46    Parsing data
47
48
49End Of file
50
51
52    Finish Parsing data
53
54Adding auxiliary tables to database...
55
56Export Ways ...
57    Processing 1309 ways:
58
59[**************************************************|] (100%) Total processed: 1309	 Vertices inserted: 378	Split ways inserted 558
60
61Creating indexes ...
62
63Processing Points of Interest ...
64#########################
65size of streets: 1309
66Execution started at: Mon Aug 22 21:49:29 2022
67Execution ended at:   Mon Aug 22 21:49:30 2022
68Elapsed time: 0.534 Seconds.
69User CPU time: -> 0.270041 seconds
70#########################

1.2.3.2. Importación de edificios de Mumbai

Similar a los caminos, el comando osm2pgrouting se utilizará para importar los edificios desde el archivo de OpenStreetMaps a la base de datos pgRouting que usaremos para ejercicios posteriores.

 1/usr/bin/osm2pgrouting \
 2    -f "mumbai.osm" \
 3    -c "buildings.xml" \
 4    --schema "buildings" \
 5    --prefix "buildings_"  \
 6    --tags \
 7    -d mumbai \
 8    -U user \
 9    -W user \
10    --clean

Nota

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

Salida:

 1Execution starts at: Mon Aug 22 21:49:28 2022
 2
 3***************************************************
 4           COMMAND LINE CONFIGURATION             *
 5***************************************************
 6Filename = mumbai.osm
 7Configuration file = buildings.xml
 8host = localhost
 9port = 5432
10dbname = mumbai
11username = user
12schema= buildings
13prefix = buildings_
14suffix = 
15Drop tables
16Don't create indexes
17Don't add OSM nodes
18***************************************************
19Testing database connection: mumbai
20database connection successful: mumbai
21Connecting to the database
22connection success
23
24Dropping tables...
25TABLE: buildings.buildings_ways dropped ... OK.
26TABLE: buildings.buildings_ways_vertices_pgr dropped ... OK.
27TABLE: buildings.buildings_pointsofinterest dropped ... OK.
28TABLE: buildings.configuration dropped ... OK.
29TABLE: buildings.osm_nodes dropped ... OK.
30TABLE: buildings.osm_ways dropped ... OK.
31TABLE: buildings.osm_relations dropped ... OK.
32
33Creating tables...
34TABLE: buildings.buildings_ways_vertices_pgr created ... OK.
35TABLE: buildings.buildings_ways created ... OK.
36TABLE: buildings.buildings_pointsofinterest created ... OK.
37TABLE: buildings.configuration created ... OK.
38Opening configuration file: buildings.xml
39    Parsing configuration
40
41Exporting configuration ...
42  - Done 
43Counting lines ...
44  - Done 
45Opening data file: mumbai.osm	total lines: 24438
46    Parsing data
47
48
49End Of file
50
51
52    Finish Parsing data
53
54Adding auxiliary tables to database...
55
56Export Ways ...
57    Processing 1309 ways:
58
59[**************************************************|] (100%) Total processed: 1309	 Vertices inserted: 1063	Split ways inserted 1066
60
61Creating indexes ...
62
63Processing Points of Interest ...
64#########################
65size of streets: 1309
66Execution started at: Mon Aug 22 21:49:28 2022
67Execution ended at:   Mon Aug 22 21:49:29 2022
68Elapsed time: 0.6 Seconds.
69User CPU time: -> 0.288831 seconds
70#########################

Para conectarse a la base de datos, escribir lo siguiente en el terminal.

psql mumbai

1.3. Base de datos de Bangladesh

Ahora descargar los datos de un área en Bangladesh siguiendo los mismos pasos que el de Mumbai.

1.3.1. Crear una base de datos de área de Bangladesh compatible con pgRouting

Utilice el siguiente comando para crear la base de datos bangladesh

createdb bangladesh

Para conectarse a la base de datos, haga lo siguiente

psql bangladesh

Después de conectarse a la base de datos, el primer paso es crear EXTENSION para habilitar pgRouting y PostGIS en la base de datos. A continuación, agregue el SCHEMA` para cada tabla.

1-- add PostGIS extension
2CREATE EXTENSION postgis;
3
4-- add pgRouting extension
5CREATE EXTENSION pgrouting;
6CREATE EXTENSION hstore;
7-- creating schemas for data
8CREATE SCHEMA waterways;

1.3.2. Obtener los datos de Bangladesh

1.3.2.1. Descarga de datos de Bangladesh desde OSGeo

El siguiente comando se utiliza para descargar la instantánea de los datos del área de Bangladesh utilizados en este taller, utilizando el servicio de descarga de OSGeo.

Nota

Los datos de Bangladesh para este taller depende de ésta instantanea.

1CITY="bangladesh"
2wget -N --progress=dot:mega \
3  "https://download.osgeo.org/pgrouting/workshops/$CITY.osm.bz2"
4bunzip2 -f "$CITY.osm.bz2"

1.3.2.2. Descarga de datos de Bangladesh desde OpenStreetMap

El siguiente comando se utiliza para descargar los datos OSM del área en Munshigang, Bangladesh.

1CITY="bangladesh"
2BBOX="88.9515,22.2192,89.3806,22.4310"
3wget --progress=dot:mega -O "$CITY.osm" "http://www.overpass-api.de/api/xapi?*[bbox=][@meta]"
4
5osmconvert --drop-author --drop-version bangladesh.osm -o=bangladesh_pass1.osm
6osmfilter bangladesh_pass1.osm -o=bangladesh.osm --drop="highway= building="

See Opción 3) Descargar usando Overpass XAPI

1.3.3. Cargar datos de Bangladesh 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 lo siguiente:

  • Archivo de configuración waterways.xml

  • ~/Desktop/workshop/bangladesh.osm - Datos de OSM del paso anterior

  • Base de datos bangladesh

El contenido de los archivos de configuración se indican en el Apéndice. Crear un archivo XML utilizando estos contenidos y guardar en el directorio raíz ~/Desktop/workshop.

Abra una ventana de terminal con ctrl-alt-t y vaya al directorio del taller por cd ~/Desktop/workshop.

1.3.3.1. Importación de vías navegables de Bangladesh

El siguiente comando de osm2pgrouting se utilizará para importar las vías navegables desde el archivo OpenStreetMaps a la base de datos pgRouting que usaremos para ejercicios posteriores.

 1osm2pgrouting \
 2    -f "bangladesh.osm" \
 3    -c "waterways.xml" \
 4    --schema "waterways" \
 5    --prefix "waterways_"  \
 6    --tags \
 7    -d bangladesh \
 8    -U user \
 9    -W user \
10    --clean

Nota

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

Salida:

 1Execution starts at: Mon Aug 22 21:49:30 2022
 2
 3***************************************************
 4           COMMAND LINE CONFIGURATION             *
 5***************************************************
 6Filename = bangladesh.osm
 7Configuration file = waterways.xml
 8host = localhost
 9port = 5432
10dbname = bangladesh
11username = user
12schema= waterways
13prefix = waterways_
14suffix = 
15Drop tables
16Don't create indexes
17Don't add OSM nodes
18***************************************************
19Testing database connection: bangladesh
20database connection successful: bangladesh
21Connecting to the database
22connection success
23
24Dropping tables...
25TABLE: waterways.waterways_ways dropped ... OK.
26TABLE: waterways.waterways_ways_vertices_pgr dropped ... OK.
27TABLE: waterways.waterways_pointsofinterest dropped ... OK.
28TABLE: waterways.configuration dropped ... OK.
29TABLE: waterways.osm_nodes dropped ... OK.
30TABLE: waterways.osm_ways dropped ... OK.
31TABLE: waterways.osm_relations dropped ... OK.
32
33Creating tables...
34TABLE: waterways.waterways_ways_vertices_pgr created ... OK.
35TABLE: waterways.waterways_ways created ... OK.
36TABLE: waterways.waterways_pointsofinterest created ... OK.
37TABLE: waterways.configuration created ... OK.
38Opening configuration file: waterways.xml
39    Parsing configuration
40
41Exporting configuration ...
42  - Done 
43Counting lines ...
44  - Done 
45Opening data file: bangladesh.osm	total lines: 719061
46    Parsing data
47
48
49End Of file
50
51
52    Finish Parsing data
53
54Adding auxiliary tables to database...
55
56Export Ways ...
57    Processing 13256 ways:
58
59[**************************************************|] (100%) Total processed: 13256	 Vertices inserted: 792	Split ways inserted 815
60
61Creating indexes ...
62
63Processing Points of Interest ...
64#########################
65size of streets: 13256
66Execution started at: Mon Aug 22 21:49:30 2022
67Execution ended at:   Mon Aug 22 21:49:32 2022
68Elapsed time: 1.8 Seconds.
69User CPU time: -> 1.39775 seconds
70#########################

Para conectarse a la base de datos, escribir lo siguiente en el terminal.

psql bangladesh

1.4. Apéndice

1.4.1. Información de configuración para edificios

  1<?xml version="1.0" encoding="UTF-8"?>
  2<configuration>
  3  <tag_name name="building" id="1">
  4    <!-- Buildigs are grouped based on the population density in each category -->
  5
  6    <!-- Negligible -->
  7    <tag_value name="terrace" id="1" />
  8    <tag_value name="shrine" id="2" />
  9    <tag_value name="service" id="3" />
 10    <tag_value name="transformer_tower" id="4" />
 11    <tag_value name="water_tower" id="5" />
 12    <tag_value name="military" id="6" />
 13    <tag_value name="ruins" id="7" />
 14    <tag_value name="tree_house" id="8" />
 15    <tag_value name="hangar" id="9" />
 16    <tag_value name="digester" id="10" />
 17    <tag_value name="barn" id="11" />
 18    <tag_value name="farm_auxiliary" id="12" />
 19    <tag_value name="slurry_tank" id="13" />
 20    <tag_value name="stable" id="14" />
 21    <tag_value name="sty" id="15" />
 22    <tag_value name="grandstand" id="16" />
 23    <tag_value name="pavilion" id="17" />
 24    <tag_value name="riding_hall" id="18" />
 25    <tag_value name="sports_hall" id="19" />
 26    <tag_value name="stadium" id="20" />
 27    <tag_value name="parking" id="21" />
 28    <tag_value name="greenhouse" id="22" />
 29    <tag_value name="kiosk" id="23" />
 30    <tag_value name="carport" id="24" />
 31    <tag_value name="garage" id="25" />
 32    <tag_value name="garages" id="26" />
 33    <tag_value name="container" id="27" />
 34    <tag_value name="roof" id="28" />
 35    <tag_value name="user defined" id="29" />
 36    <tag_value name="toilets" id="30" />
 37    <tag_value name="cowshed" id="31" />
 38
 39    <!-- Very Sparse -->
 40    <tag_value name="farm" id="101" />
 41    <tag_value name="warehouse" id="102" />
 42    <tag_value name="conservatory" id="103" />
 43    <tag_value name="train_station" id="104" />
 44    <tag_value name="transportation" id="105" />
 45    <tag_value name="houseboat" id="106" />
 46    <tag_value name="industrial" id="107" />
 47    <tag_value name="temple" id="108" />
 48    <tag_value name="chapel" id="109" />
 49    <tag_value name="monastery" id="110" />
 50    <tag_value name="presbytery" id="111" />
 51    <tag_value name="religious" id="112" />
 52    <tag_value name="synagogue" id="113" />
 53    <tag_value name="cathedral" id="114" />
 54    <tag_value name="church" id="115" />
 55    <tag_value name="mosque" id="116" />
 56    <tag_value name="bakehouse" id="117" />
 57    <tag_value name="office" id="118" />
 58    <tag_value name="retail" id="119" />
 59    <tag_value name="public" id="120" />
 60    <tag_value name="kindergarten" id="121" />
 61    <tag_value name="school" id="122" />
 62    <tag_value name="government" id="123" />
 63    <tag_value name="commercial" id="124" />
 64    <tag_value name="civic" id="125" />
 65    <tag_value name="bridge" id="126" />
 66
 67    <!-- Sparse -->
 68    <tag_value name="university" id="201" />
 69    <tag_value name="college" id="202" />
 70
 71    <!-- Moderate -->
 72    <tag_value name="tent" id="301" />
 73    <tag_value name="cabin" id="302" />
 74    <tag_value name="detached" id="303" />
 75    <tag_value name="ger" id="304" />
 76    <tag_value name="semidetached_house" id="305" />
 77    <tag_value name="static_caravan" id="306" />
 78    <tag_value name="fire_station" id="307" />
 79    <tag_value name="hut" id="308" />
 80    <tag_value name="shed" id="309" />
 81    <tag_value name="bunker" id="310" />
 82    <tag_value name="construction" id="311" />
 83    <tag_value name="gatehouse" id="312" />
 84    <tag_value name="bungalow" id="313" />
 85    <tag_value name="hotel" id="314" />
 86    <tag_value name="house" id="315" />
 87    <tag_value name="dormitory" id="316" />
 88    <tag_value name="supermarket" id="317" />
 89    <tag_value name="hospital" id="318" />
 90
 91  
 92    <!-- Dense -->
 93    <tag_value name="residential" id="401" />
 94    <tag_value name="yes" id="402" />
 95
 96
 97    <!-- Very Dense -->
 98    <tag_value name="apartments" id="501" />
 99  </tag_name>
100 
101</configuration>

1.4.2. Información de configuración para vías navegables

 1<?xml version="1.0" encoding="UTF-8"?>
 2<configuration>
 3  <tag_name name="waterway" id="1">
 4    <tag_value name="river" id="101" />
 5    <tag_value name="riverbank" id="102" />
 6    <tag_value name="stream" id="103" />
 7    <tag_value name="tidal_channel" id="104" />
 8    <tag_value name="canal" id="105" />    
 9    <tag_value name="fairway" id="106" />
10  </tag_name> 
11</configuration>