Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre Cosas que hacer en compañía de OpenStreetMap Alexandre Busquets, Laura Olivas, Pep Sitjar, Toni Hernández Servicio de Sistemas de Información Geográfica y Teledetección (SIGTE), Facultat de Lletres, Universitat de Girona, Plaça Ferrater i Mora, 1, 17071 Girona, [email protected]. (1) RESUMEN OpenStreetMap es mucho más que una colección e datos. En este artículo veremos, en primer lugar, que datos podemos descargar de OpenStreetMap y como los podemos descargar de manera totalmente personalizada y siguiendo criterios totalmente customatizables. Además de la descarga veremos otras herramientas que añaden valor a OSM ya sea como Editores, Importadores a bases de datos, servicios de geolocalización, Renderización de imágenes, algoritmos de routing, etc. Palabras clave: osm, descarga, importacion a bases de datos, renderización, routing ABSTRACT OpenStreetmap is more than a mere collection of data. In this article we will see, not only what kind of data is available to download, but how to download it. Trom pre-generating extracts to customizable queries using OSM API's. Besides we will introduce a set of free tools that we can use on top of osm data allowing us to give osm data new uses and possibilities like importing data to spacial databases, rendering images, routing applications, etc. Key words: osm, download, import to database, rendering, routing INTRODUCCIÓN Este estudio de las cosas que podemos hacer en compañía de OpenStreetMap surge de la necesidad del SIGTE, como servicio dentro de la Universitat de Girona, de ofrecer a la comunidad universitaria nuevos servicios cartográficos basados en datos libres y, más concretamente, en OpenStreetMap: desde la elaboración de mapas en formato papel hasta aplicaciones informáticas como la publicación de mapas, renderizado de capas personalizadas, routing, etc. En este artículo veremos que posibilidades nos brida OpenStreetMap y cuales son las principales herramientas que permiten operar con esos datos. Las herramientas que aparecen en este artículo se pueden agrupar en función de los siguiente usos: - Datos disponibles y vías de descarga. Desde datos pre-generados hasta la descarga más personalizada en tiempo real - Posibilidades para la generación y edición de datos Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre - Publicación en la red de mapas personalizados mostrando cartografía de OSM - Importación de datos OSM a bases de datos - Renderización de imágenes a partir de estilos definidos por el usuario - Routing - Programación avanzada de aplicaciones 1. Datos disponibles y descarga. Existen tres tipos de ficheros listos para ser descargados. -planet.osm. Este fichero, que ocupa alrededor de 26Gb en formato comprimido (pbf), contiene toda la cartografía de OpenStreetMap para todo el planeta y se genera semanalmente. -history.osm. Este fichero (39Gb en formato comprimido) se genera con menos frecuencia que el fichero planet y contiene toda la historia de la base de datos de OSM. Este fichero, por lo tanto, contiene tanto las inserciones de nodos como las modificaciones y eliminaciones. Con este fichero, pues, podemos reproducir la cartografía existente de OSM en una fecha concreta del pasado. -Ficheros diff . Debido al gran volumen de datos manejados en OpenStreetMap, existen una serie de ficheros diferenciales (.diff) que contienen las modificaciones de la base de datos llevadas a cabo durante un período de tiempo concreto (inserciones, modificaciones, eliminaciones). OpenStreetMap genera estos ficheros diferenciales cada minuto, cada hora y cada día. Aplicando el contenido de estos ficheros diferenciales podemos mantener nuestros datos actualizados de manera más cómoda y eficiente. Si lo que queremos es llevar a cabo descargas más personalizadas (por país, región, ciudad, etc) podemos descargar extractos pregenerados de la base de datos original. Estos extractos se pueden descargar desde sitios de terceros que OSM pone a nuestra disposición en su wiki (http://wiki.openstreetmap.org/wiki/Planet.osm). Pero si todavía queremos personalizar más nuestras descargas (por zonas más concretas o por la tipología de les entidades como carreteras principales, parques, etc), OSM nos ofrece también la posibilidad de utilizar sus API’s (Xpai, Overpass API) que gracias a su interfaz REST permiten la descarga de esos datos mediante la generación de URL’s. Veamos un ejemplo de petición para cada API. Xapi: Descarga de datos por bounding box. Petición HTTP: http://open.mapquestapi.com/xapi/api/0.6/*[bbox=2.79,41.96,2.84,41.99] Overpass API: Descarga de datos por proximidad a las entidades con nobre Bonn Petición basada en un formulario con lenguaje propio de la API. Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre node["name"="Bonn"]; node (around:1000) ["name"="Gielgen"]; out body; 2. Generación y edición de datos. OSM es un proyecto colaborativo para crear y proveer datos geográficos libres a nivel mundial. La principal manera de participar en esta iniciativa es editando el mapa ya sea capturando los datos geográficos a través de dispositivos GPS y móvil o utilizando otras fuentes de datos abiertas. Actualmente, los datos OpenStreetMap están bajo licencia Open Database Licence (ODbL). Esto significa que el usuario es libre de copiar, distribuir y adaptar los datos como sea necesario, pero siempre manteniendo la misma licencia. Editar el mapa de OpenStreetMap es el proceso de realizar cambios en los datos geográficos existentes como por ejemplo, añadir nuevas vías, introducir puntos de interés (POIs) que no estén presentes en el mapa, definir las características para cada elemento, o incluso modificar los datos en el caso que sean incorrectos. Al tratarse de un proyecto de mapeo colaborativo (también llamado crowdsourcing), cada usuario es libre de incorporar la información que considere necesaria, siempre que se respeten una serie de normalizaciones consensuadas por la comunidad OSM. Debido a su naturaleza, el mapa de OpenStreetMap tiene un nivel de detalle normalmente muy alto. Cada elemento del mapa tiene asociada una o varias etiquetas (o tags) que nos dan las características espaciales del objeto concreto. Contienen información acerca el tipo de elemento que hemos dibujado (si se trata de una autopista, un sendero, un árbol, un museo…), características físicas (número de carriles de una vía, tipo de superficie del suelo,…), u otra información adicional. En la página wiki Map Features se recogen una serie de recomendaciones sobre cómo etiquetar los elementos geográficos para que el mapa pueda ser interpretado correctamente. Figura1. Flujo recomendado. Fuente: Map Compare. Geofabrik tools Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre Para empezar a colaborar en el proyecto OpenStreetMap es necesario registrarse en la página principal (http://www.openstreetmap.org). El flujo de trabajo para generar datos OpenStreetMap es el siguiente: 1. Captura y adquisición de datos: Es posible utilizar tanto fuentes datos abiertas como generando nosotros mismos la información geográfica. 2. Generación y edición de datos: Existen distintos editores para introducir información a la base de datos de OpenStreetMap. 3. Etiquetado de los datos: Es una parte muy importante del proceso de edición de los datos. Se trata de añadir las etiquetas o propiedades de los elementos que hemos dibujado para poder interpretar la información del mapa. 4. Generación el mapa: Es la última fase de la edición, en la que una vez dibujados o modificados los elementos del mapa, deberemos validar los cambios y subirlos a la base de datos de OpenStreetMap. A continuación se presentan las características de los principales editores OpenStreetMap. En la wiki de OSM aparece una lista más completa de los editores (http://wiki.openstreetmap.org/wiki/Editing): · Editor web Potlacth: Editor online disponible en la web de OpenStreetMap. Permite realizar ediciones simples y de forma rápida ya que los cambios se almacenan directamente al servidor de OpenStreetMap. Dispone de herramientas básicas para la edición de elementos, así como el etiquetado de los mismos. · Editor avanzado JOSM: Es el editor offline más utilizado ya que permite crear tanto ediciones básicas como más complejas. Permite cargar tracks GPS propios o externos, guardar conjuntos de datos en formato .osm (sin subirlos al servidor), añadir cartografía base de otras fuentes de datos permitidas, añadir extensiones, validar la topología de los datos, etc. · Merkaartor: Es un editor de OSM para Unix, Windows y Mac. Tiene algunas funcionalidades que otros editores no tienen como la transparencia de los elementos. Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre Tabla 1: Principales editores Pros Potlacth JOSM • Muy intuitivo y fácil de utilizar. Curva de aprendizaje baja • Permite realizar ediciones sencillas desde la web. • Los cambios se actualizan directamente al servidor OpenStreetMap Contras • No permite realizar una edición avanzada de los elementos del mapa • No permite modificar grandes conjuntos de datos • No es posible trabajar offline • Posibilidad de utilizar tracks GPS como una nueva capa • Disponible en varios idiomas • Dispone de un modo de edición básica y avanzada • Requiere instalación del software • Posibilidad de editar los datos en modo offline • Curva de aprendizaje más alta • • Posibilidad de añadir cartografía base de otras fuentes de datos abiertas La actualización de las modificaciones realizadas en el mapa no es inmediata. • Permite modificar grandes conjuntos de datos • Posibilidad de introducir fotografías y grabaciones de voz realizadas en el trabajo de campo • Dispone de una herramienta para la validación topológica y de etiquetado de los datos. • Permite la resolución de conflictos en el caso que dos usuarios estén editando los mismos datos simultáneamente • Disponible en varios idiomas Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre • • Merkaartor • • Tiene algunas características únicas como la transparencia de los elementos Posibilidad de añadir cartografía base de otras fuentes de datos permitidas Los estilos de las etiquetas se pueden modificar • En desarrollo, no hay una versión estable • Curva de aprendizaje media • No disponible en castellano • Menos popular que JOSM • Requiere instalación del software Posibilidad de guardar los mapas renderizados en formato .svg y .bmp. 3. Publicación en la red de mapas personalizados. La publicación en la red de mapas es una de las tareas más habituales que se llevan a cabo sobre datos OSM. Gracias a herramientas libres como Leaflet u OpenLayers (por citar dos de las más extendidas) podemos, en pocas líneas de código, generar mapas para nuestras páginas web, blogs, etc . Estas herramientas están desarrolladas en código Javascript que se ejecuta en la parte cliente, por lo que estos mapas no tienen ningún requerimiento en la parte servidor y se pueden aplicar a cualquier página de la red. A continuación se muestra el código necesario para, haciendo uso de la API de Leaflet, generar un mapa que muestre la cartografía de OSM con la vista inicial que le indiquemos (nivel de zoom y coordenadas iniciales del mapa). Figura 2. Mapa web con LeafLet Como se aprecia en el código, solo es necesario cambiar un par de líneas para obtener nuestro propio mapa en el que podemos mostrar nuestra empresa, negocio, etc. Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre 4. Importación de datos OSM a bases de datos Existen varias herramientas para la importación de datos en formato .osm a bases de datos. Las principales son osm2pgsql, osmosis, imposm y nominatim. Estas herramientas están pensadas para organizar los datos (dentro de las bases de datos) siguiendo unos esquemas diseñados para unos usos muy concretos. Por ejemplo, las herramientas osm2pgsql y imposm está diseñadas para que generen unas bases de datos muy eficientes de caras a la renderización. Otras herramientas como nominatim generan un esquema diseñado para la geocodificación, etc. Cada herramienta, pues, genera un esquema. Las características principales de estos esquemas son tres: Que sean actualizables. Un esquema actualizable es aquel que permite aplicar ficheros .diff. De este modo es posible mantener la base de datos actualizada. Que contengan geometrías predefinidas. Dentro de la base de datos, las geometrías pueden estar ya calculadas, o bien, pueden estar almacenadas en forma de nodos y relaciones entre nodos. En este segundo caso, antes de representar cada geometría, ésta debe antes ser calculada a partir de esos nodos y relaciones. Que contenga todos los atributos (integral). En la base de datos de OSM existen algunos atributos relacionados con los usuarios editores. Estos atributos no tienen ningún uso, por ejemplo, si lo que queremos hacer es renderizar esos datos. Por esta razón, algunas herramientas descartan estos atributos durante el proceso de instalación. En la siguiente tabla se muestran las principales herramientas de importación de datos .osm junto con sus características más importantes. Algunas herramientas como osmosis (una especie de navaja suiza para formatos .osm) permite utilizar más de un esquema. Tabla 2: Herramientas de importación. Herramienta Uso Schema Uso de Diff osm2pgsql osmosis osmosis imposm osm2pgsql Renderizar Mirroring Análisis Renderizar Geocoding osm2pgsql apidb pgnapshot imposm nominatim Sí Sí Sí No Sí Geometrías pregeneradas Sí No Sí Sí Sí Integral No Sí No No Sí Dos de las herramientas más utilizadas son : osm2pgsql y imposm. Como se ve en la tabla 1, ambas fueron concebidas para la renderización de imágenes, motivo por el cual, contienen las geometrías predefinidas. Cada una de esas herramientas dispone de un fichero de configuración que permite flexibilizar (hasta cierto punto) la importación. En el caso de osm2pgsql disponemos del fichero default.style. Su Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre equivalente para imposm es defaultmapping.py. En términos generales, estos ficheros permiten indicar qué clase de atributos queremos importar a qué tabla. El siguiente ejemplo muestra una porción del fichero defaultmapping.py en el que se indica que deseamos importar, en la tabla towers, las entidades cuyo nombre sea igual a towers y que además tengan en el atributo man_made alguno de los valores tower, water_tower. También estamos indicando que deseamos crear en nuestra tabla tower un nuevo atributo de tipo entero con el contenido del atributo height . towers = Points( name = 'towers', mapping = {'man_made': ('tower', 'water_tower') } fields = ( ('height', Integer()), ) ) 5. Renderización y estilos La renderización es la conversión de los datos a imagen. Durante el proceso de renderización se definen qué datos incluir en la imagen (en función de sus atributos), y su estilo (color, grosor, color del borde, simbología, escala del mapa en la que debe aparecer un elemento, escala del mapa en la que debe desaparecer, etc). La complejidad de la renderización de datos OSM viene determinada principalmente por tres factores: la complejidad de cada estilo, la gran variedad de elementos distintos que contiene OSM y, en tercer lugar, el hecho de que cada nivel de zoom (hasta 22) puede tener asignados unos estilos propios para cada elemento del mapa. Es fácil pues, imaginar el esfuerzo requerido durante la renderización. La herramienta utilizada para este proceso es mapnik (disponible tanto en sistemas windows como linux). Mapnik, además de incorporar unos estilos muy versátiles, nos da la posibilidad de particionar las imágenes generadas en teselas para agilizar el tránsito en la red. De este modo las imágenes transferidas son de menor tamaño y la navegación del mapa gana fluidez. Mapnik reconoce formatos de entrada muy diversos (PostGIS, shp, tiff, formatos OGR, GDAL, raster, etc) y permite generar imágenes de salida en formato png, jpg, pdf, svg, tiff, etc. Si bien la generación de estilos es un proceso muy laborioso existen herramientas como TileMill que permiten agilizar esos procesos mediante una interfaz gráfica y amigable. Tilemill, incluye en su instalación a mapnik como motor de renderizado. Dentro de TileMill podemos cargar el proyecto OSMBright que contiene unos estilos para OpenStreetMap ya definidos. De este modo, podemos personalizar nuestros datos partiendo ya de una definición previa y centrándonos únicamente en los elementos que queremos destacar o customizar. 6. Routing Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre Actualmente existen muchas herramientas para el cálculo de rutas óptimas mediante datos de OpenStreetMap tanto para dispositivos de sobremesa como para dispositivos móviles y tanto para entornos de red como en entornos offline. Una de las herramientas más fáciles de utilizar para un usuario medio es osm2po. Osm2po es una herramienta desarrollada en Java (multiplataforma) que permite, mediante la ejecución de sencillos comandos, la importación de datos .osm y la creación de un servicio web para atender las peticiones de cálculos de ruta óptimas en un entorno web tal y como se aprecia en la siguiente imagen. Figura 1: osm2po. Interfaz web. Otra herramienta, para un perfil de usuario un poco más avanzado, es osm2pgrouting. Osm2pgrouting, disponible en sistemas linux, permite importar datos .osm a una base de datos PostgreSQL/PostGIS. Además genera la estructura de grafo (como una tabla más) necesaria para el cálculo de rutas optimas. Al disponer del grafo podemos modificar los costes asociados a las conexiones entre nodos y, de este modo, personalizar las rutas según las necesidades en cada caso. Osm2pgrouting requiere, además, de una base de datos de tipo PostGIS, las funciones de pgRouting. pgRouting extiende una base de datos espacial PostgreSQL/PostGIS para incluir la funcionalidad de cálculo de rutas. 7. Herramientas avanzadas Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/ Servicio de Sistemas de Información Geográfica y Teledetección VII Jornadas de SIG Libre Además de las herramientas vistas en este artículo, existe toda una serie de herramientas disponibles para usuarios con perfiles de programación. Estas herramientas (librerías, widgets y frameworks) permiten desarrollar nuevas aplicaciones en distintos lenguajes de programación. Entre algunas de estas herramientas encontramos: Librerías para distintos lenguajes de programación. Java, Perl, PHP, PHP, Python, R, Ruby imposm parser, osmread, J2memap, libosm, libOSM, libosmscout, libRoadNav, MapJumper, osm4routing, OSMLib, OsmSharp.... Widgets. Elementos incrustables en aplicaciones. BruTile, COSMCtrl, Halcyon, JXMapViewer, JmapViewer, JXMapKit, kogutowicz, libchamplain, Mapsforge... Frameworks. Entornos de desarrollo. CloudMade, Osmium, Osmosis, OSMNavigation, libOSM CONCLUSIONES Como hemos ido viendo a lo largo de este articulo, OpenStreetMap es algo más que una colección de datos que podemos descargar de la red. Además de la propia descarga y edición de datos, existen herramientas que permiten dar a OSM un recorrido mucho más amplio permitiendo la posibilidad de generar distintas aplicaciones, tanto online como offline, con componente espacial libre. Ente estas aplicaciones destacan las herramientas de renderización de imágenes con mapnik, tilemill y osmbright y las herramientas para el cálculo de rutas optimas muy habituales en la industria automovilística. El estado de evolución de la cartografía OpenStreetMap ha favorecido la aparición de nuevas herramientas, cuyo resultado ha enriquecido más si cabe el valor intrínseco de la propia cartografía. Algo muy habitual en los proyectos colaborativos de software Libre. Plaça Ferrater Mora 1, 17071 Girona Tel. 972 41 80 39, Fax. 972 41 82 30 [email protected] http://www.sigte.udg.edu/jornadassiglibre/