2. Apéndice: Herramienta de Importación osm2pgrouting¶
osm2pgrouting es una herramienta de línea de comandos que permite importar datos de OpenStreetMap a una base de datos pgRouting. Crea automáticamente la topología de red de ruteo y crea tablas para atributos de tipos y clases de caminos.
Sitio web: https://pgrouting.org/docs/tools/osm2pgrouting.html
Documentación: https://github.com/pgRouting/osm2pgrouting/wiki/Documentation-for-osm2pgrouting-v2.2
Nota
Hay algunas limitaciones, especialmente con respecto al tamaño de la red. La forma de manejar conjuntos de datos grandes es la versión actual de osm2pgrouting necesita cargar todos los datos en la memoria, lo que lo hace rápido, pero también requiere mucha memoria para grandes conjuntos de datos. Una herramienta alternativa a osm2pgrouting sin la limitación del tamaño de la red es osm2po (https://osm2po.de). Está disponible en «Freeware License».
Los datos sin procesar de OpenStreetMap contienen muchas más características e información de la necesaria para el enrutamiento. Además, el formato no es adecuado para usar automáticamente en pgRouting. Un archivo XML .osm
consta de tres tipos de atributos principales:
nodos
caminos
relaciones
Versión y opciones de ayuda
Este taller utiliza la versión osm2pgrouting 2.3
osm2pgrouting -v
osm2pgrouting --help
$ osm2pgrouting --version
This is osm2pgrouting Version 2.3.3
$ osm2pgrouting --help
Allowed options:
Help:
--help Produce help message for this version.
-v [ --version ] Print version string
General:
-f [ --file ] arg REQUIRED: Name of the osm file.
-c [ --conf ] arg (=/usr/share/osm2pgrouting/mapconfig.xml)
Name of the configuration xml file.
--schema arg Database schema to put tables.
blank: defaults to default schema
dictated by PostgreSQL
search_path.
--prefix arg Prefix added at the beginning of the
table names.
--suffix arg Suffix added at the end of the table
names.
--addnodes Import the osm_nodes, osm_ways &
osm_relations tables.
--attributes Include attributes information.
--tags Include tag information.
--chunk arg (=20000) Exporting chunk size.
--clean Drop previously created tables.
--no-index Do not create indexes (Use when indexes
are already created)
Database options:
-d [ --dbname ] arg Name of your database (Required).
-U [ --username ] arg Name of the user, which have write
access to the database.
-h [ --host ] arg (=localhost) Host of your postgresql database.
-p [ --port ] arg (=5432) db_port of your database.
-W [ --password ] arg Password for database access.
Un ejemplo de archivo osm tiene este aspecto:
<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="Overpass API">
<note>The data included in this document is from www.openstreetmap.org. The data is made available under ODbL.</note>
<meta osm_base="2016-03-31T22:37:01Z"/>
...
<node id="2702022" lat="50.7654175" lon="7.1376180" version="11"
timestamp="2011-10-30T18:29:52Z"
changeset="9696743" uid="116044" user="berndw"/>
<node id="2702027" lat="50.7704923" lon="7.1432462" version="5"
timestamp="2014-12-09T18:47:47Z"
changeset="27362963" uid="1751908" user="Blues Brothers"/>
<node id="2703359" lat="50.7548501" lon="7.0964640" version="10"
timestamp="2013-10-19T22:50:43Z"
changeset="18442764" uid="45243" user="odna">
<tag k="TMC:cid_58:tabcd_1:Class" v="Point"/>
<tag k="TMC:cid_58:tabcd_1:Direction" v="positive"/>
<tag k="TMC:cid_58:tabcd_1:LCLversion" v="9.00"/>
<tag k="TMC:cid_58:tabcd_1:LocationCode" v="39278"/>
<tag k="TMC:cid_58:tabcd_1:NextLocationCode" v="11766"/>
<tag k="TMC:cid_58:tabcd_1:PrevLocationCode" v="11765"/>
</node>
...
<way id="4372665" version="14"
timestamp="2012-07-03T10:29:34Z"
changeset="12098548" uid="133419" user="dachefte">
<tag k="footway:right:smoothness" v="good"/>
<tag k="footway:right:surface" v="paving_stones"/>
<tag k="footway:right:width" v="3"/>
<tag k="highway" v="unclassified"/>
</way>
...
<relation id="399785" version="2"
timestamp="2012-08-08T18:27:05Z"
changeset="12660262" uid="55687" user="dschuwa">
<member type="way" ref="32285676" role="street"/>
<member type="way" ref="17129333" role="street"/>
<member type="way" ref="49305040" role="street"/>
<member type="way" ref="49305039" role="street"/>
<member type="way" ref="32286326" role="street"/>
<member type="way" ref="32286325" role="street"/>
<member type="way" ref="32286327" role="street"/>
...
<tag k="name" v="Brieger Weg"/>
<tag k="type" v="associatedStreet"/>
</relation>
...
</osm>
La descripción detallada de todos los tipos y clases de OpenStretMap posibles se describen como características del mapa
mapconfig.xml
Cuando se utiliza osm2pgrouting, solo tomamos nodos y caminos y las clases especificados en un archivo mapconfig.xml
que se importará a la base de datos de ruteo:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<type name="highway" id="1">
<class name="motorway" id="101" />
<class name="motorway_link" id="102" />
<class name="motorway_junction" id="103" />
...
<class name="road" id="100" />
</type>
<type name="junction" id="4">
<class name="roundabout" id="401" />
</type>
</configuration>
Por defecto, mapconfig.xml
es instalado en /usr/share/osm2pgrouting/
.
osm2pgrouting crea más tablas e importa más atributos de los que usaremos en este taller.
Vea la descripción de las tablas https://github.com/pgRouting/osm2pgrouting/wiki/Documentation-for-osm2pgrouting-v2.2