Cosas que hacer en compañía de OSM (IV)

Tematización de datos

En este cuarto post hablaremos del proceso de generación de mapas con datos de OpenStreetMap (OSM) utilizando un estilo personalizado, para posteriormente servirlos a través de un geoservicio WMS. Para ello, se hará uso de PostGIS, TileMill, OSM Bright y mbtiles.

Almacenar en PostGis los datos de OSM

Antes de empezar a tematizar y generar un mapa con datos procedentes de OSM, hay que determinar el lugar en que almacenar estos datos. Dado que el volúmen de información con el que se trabaja suele ser muy grande, una de las formas más eficientes para ello es utilizar una base de datos espacial, como PosGIS.

Desde el sitio web http://metro.teczno.com pueden descargarse datos de OSM en formato .pbf, que podrán ser importados a una tabla de PostGIS con Imposm (http://imposm.org/docs/imposm/latest/). También podrían usarse datos en formato .osm descargados de cloudmade (http://downloads.cloudmade.com/).

Diseño del mapa con TileMill

TileMill es un software que permite el diseño cartográfico, de forma rápida y eficaz, de los datos procedentes de OSM almacenados en la base de datos PostGIS. Presenta una ventaja comparativa muy grande en relación a las herramientas de tematización y diseño que ofrecen en general los paquetes SIG, al ser mucho más ágil y permitir un amplio abanico de posibilidades. Los mapas generados pueden llegar a presentar un nivel de calidad muy elevado. Además, con TileMill pueden desarrollarse estilos e irlos reaprovechando.

El principal inconveniente de TileMill está en la elaboración de los estilos. Estos deben crearse para cada una de las entidades que configuran la cartografía, y para cada uno de los niveles de zoom con los que se quiera representar. Todo ello implica un trabajo laborioso, al que habrán de destinarse algunas horas de trabajo si quiere conseguirse un mapa original y estético.

El lenguaje con el que se configuran los estilos en TileMill es CartoCSS, muy similar al CSS.

Las fuentes de datos que admite TileMill son las siguientes: CSV, Shapefile, GeoJSON, KML, GeoTIFF, SQLite y PostGIS. El abanico es muy amplio, por lo que no debería haber problemas para crear mapas con los datos generados desde un Sistema de Información Geográfica (SIG).

Hay que tener en consideración que los mapas generados con TielMill se proyectan siempre a ‘Web Mercator‘, y en caso que las fuentes de datos utilizadas no estén en este sistema de referencia, TileMill las reproyectará automáticamente.

 Finalmente, una vez desarrollado el mapa desde TileMill, este puede exportarse a MBTiles, PNG, PDF y SVG. De todos ellos, el formato más eficiente para publicar el mapa en entornos web o móviles es MBTiles. También para poder servir el mapa generado a través de un WMS.

Toda la información acerca del proyecto TielMill, así como el archivo para su instalación (tanto en entornos Windows, Linux y Mac OS X), se encuentra en http://mapbox.com/tilemill/

Aplicar el estilo de OSM Bright

OSM Bright (https://github.com/mapbox/osm-bright) es una plantilla de estilos predefinida para TileMill diseñada para la tematización de datos de OSM. El uso de OSM Bright es de gran utilidad, ya que evita el proceso de creación de estilos para cada una de las entidades de la cartografía, y para cada uno de los niveles de zoom. Asimismo, y en caso de querer diseñar un estilo único y personalizado, el uso de esta plantilla resulta un buen punto de partida a partir del cual ir haciendo modificaciones.

 En la página web del proyecto TileMill se detalla todo el proceso a seguir para descargar y configurar OSM Bright, y poder utilizarlo en la tematización de nuestros datos de Open Street Map almacenados en una base de datos PostGis: http://mapbox.com/tilemill/docs/guides/osm-bright-ubuntu-quickstart/

Apuntar que el proceso de carga en TileMill de los datos de OpenStreetMap tematizados con los estilos de OSM Bright se demora bastante tiempo. Esto ocurre la primera vez, y dependiendo del volumen de datos con los que se trabaje. Luego el proceso es mucho más rápido.

osm_bright

Fig 1. Mapa con estilo de OSM Bright

Servir el mapa generado como WMS

Para servir el mapa generado con TileMill a través de un servicio Web Map Service (WMS), una buena opción es utilizar MapProxy (http://mapproxy.org/). MapProxy es un proxy de código abierto que ofrece soluciones de cacheado, aceleración y transformación de datos geoespaciales tanto para entornos web como de escritorio. De este modo, los tiles generados con TileMill y guardados en el formato mbtiles pueden servirse como un WMS.

MapProxy es multiplataforma, y su proceso de instalación y configuración está muy bien documentado en la misma página web del proyecto: http://mapproxy.org/docs/1.5.0/

Los parámetros de configuración para servir mbtiles también están especificados: http://mapproxy.org/docs/1.5.0/caches.html#mbtiles

Conclusión

Siguiendo este proceso, se consigue disponer de un servicio WMS con datos de OpenStreetMap y con un estilo personalizado. A partir de ahí, puede aprovecharse este WMS como base cartográfica para la generación de mapas desde un Sistema de Información Geográfica.

esquema

Fig 2. Esquema del proceso

Anuncios

Cosas que hacer en compañía de OSM (III)

Importación a bases de datos

Una de las operaciones que nos abre más posibilidades en el manejo de datos OSM es la importación a bases de datos. A través de la importación podemos acceder a las entrañas de los datos e ir más allá de la simple visualización gráfica.

Existen varias herramientas que podemos utilizar para la importación de datos OSM a bases de datos relacionales. Cada una de estas herramientas produce una base de datos con unas características diseñadas para ser el máximo de eficientes para unos usos concretos. Unas bases de datos serán muy eficientes, por ejemplo, para generar imágenes (renderización) mientras que otras serán más eficientes para otros usos como análisis espacial con SQL, geocoding, etc.

Las distintas maneras de organizar los datos, dentro de una base de datos, se conocen como esquemas. Estos esquemas definen la organización y relaciones entre los datos dentro de la base de datos. Cada esquema, por lo tanto, se traduce en unas tablas, columnas y relaciones entre tablas que nos permitiran de manera, más o menos eficiente, dar unos usos concretos a nuestros datos.

Estos esquemas tienen tres características principales. Estas características son:

– Compatibilidad con  ficheros .diff . De este modo se da soporte para la actualización con los últimos datos provenientes de OSM. Encontraréis más detalles sobre los ficheros .diff en el primer POST de esta colección Cosas que hacer en compañía de OpenStreetMap.

Pregeneración de geometrías. Una base de datos con las geometrías predefinidas será mucho más eficiente para la renderización de imágenes que una base de datos que deba generar esas geometrías para cada petición.

Totalidad de los datos. Algunos esquemas reproducen con total precisión la base de datos OSM. Otros esquemas eliminan parte de esa información durante el proceso de importación.

Dos de las herramienas más utilizadas son Oms2pgsql y Imposm. Ambas herramientas importan datos OSM a bases de datos PostgreSQL / PostGIS con geometrías predefinidas por lo que se suelen utilizar tanto para el renderizado de imágenes como para su posterior análisis espacial.

Herramienta Usos Schemas Ficheros
diff
Geometrías Totalidad
de datos
osm2pgsql Renderizar –
Análisis
osm2pgsql No
osmosis Mirroring apidb No
osmosis Análisis pgsnapshot No
imposm Renderizar –
Análisis
imposm No No
osm2pgsql Geocoding nominatim

Heramientas más utilizadas


– Osm2pgsql
Se caracteriza por agrupar en una misma tabla  las entidades que tienen el mismo tipo de geometría (puntos, lineas o polígonos). Las cuatro tablas generadas tienen el mismo número de columnas. Estas tablas son:

planet_osm_point: Entitades de tipo punto
planet_osm_line: Entidades de tipo linea (excluyendo las carreteras)
planet_osm_polygon: Entidades de tipo polígono
planet_osm_roads: Carreteras

Con osm2pgsql disponemos de un fichero ‘default.style‘ que permite personalizar ligeramente el proceso de importación. Este fichero nos permite definir qué datos (atributos con volares concretos) queremos importar.


– Imposm
Esta herramienta genera una tabla para cada entidad e incluso algunas tablas con geometrías simplificadas optimizadas para niveles de zoom concretos. Algunos ejemplos de tablas són amenities, places, transport_points, admin, building, etc. Algunas tablas con geometrías simplificadas son  motorways_gen0, mainroads_gen0, railways_gen0, etc.

Imposm también dispone de un fichero de configuración ‘defaultmapping.py‘ que permite definir que tablas crear durante la importación y qual debe ser el contenido de esas tablas.

Veamos un fragmento del fichero defaultmapping.py.

towers = Points(
   name = ‘towers’,
   mapping = {‘man_made’: (‘tower’, ‘water_tower’)
   }
   fields = (
     (‘height’, Integer()),
   )
)

Este fragmento  indica que se va a crear una tabla ‘towers’ con los elementos que en  su  etiqueta ‘man_made’ tengan los valores ‘tower’ o  ‘water_tower’. Además la tabla Tower dispondrá  de una columna (de tipo entero) para almacenar el atributo ‘height’.

Bases de datos, SQL y análisis espacial

Una de las características más importantes de las bases de datos relacionales es el lenguaje SQL.  Con SQL podemos llevar a cabo cualquier tipo de operación sobre nuestras bases de datos (crear tablas, modificarlas, intertar datos, etc) siendo las operaciones más habituales las de consulta o análisis.

Con las funciones espaciales que PostGIS otorga al lenguaje SQL, podemos llevar a cabo las operaciones más habituales de un SIG de escritorio. Operaciones como dissolve, difference, merge, intersection, etc tienen sus equivalencias en las funciones espaciales de PostGIS.

La siguiente imágen muestra gráficamente el resutlado de sencilas consulas SQL. Concretamente  una zona de buffer de 350metros realizada sobre los rios de la ciudad de Girona. En rojo aparecen las guardarías de la ciudad fruto de otra consulta a la base de datos.

imatge_buffer_rius_guarderies2

A continuación se muestran las sentencias SQL utilizadas para generar la imagen anterior.

Guarderías:

Select * from planet_osm_point where amenity=’kindergarten’;

Crear Buffer:

Select st_buffer(way,350) from planet_osm_line where waterway=’river’;

Encontraréis un ejemplo más avanzado de análisis espacial con SQL en el post Análisis espacial con PostGIS de este mismo blog.

Si deseáis introduciros en el lenguaje SQL espacial sobre PostGIS podéis acceder a la plataforma de http://siglibre www.sigte.udg.edu/formasig

Cosas que hacer en compañía de OpenStreetMap (II)

En este segundo post hablaremos de la edición de los datos OSM: qué pasos hay que seguir para editar el mapa OSM y cuáles son las características de los principales editores OSM.

OpenStreetMap (o su acrónimo 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 nosotros mismos a través de dispositivos GPS como utilizando fuentes de datos abiertas o compatibles con la licencia OSM. Actualmente, los datos OpenStreetMap están bajo licencia Open Database Licence (ODbL). Esto significa que cualquier usuario puede copiar, distribuir y adaptar los datos del mapa OSM libremente, siempre que se mantenga la misma licencia abierta.

Editar el mapa de OpenStreetMap es el proceso de realizar cambios en los datos geográficos 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 en el mapa, siempre que se respeten una serie de normalizaciones consensuadas por la comunidad OSM.

Cada elemento del mapa tiene asociada una o varias etiquetas (tags) que nos dan las características espaciales del objeto concreto. 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.

 Image

 Fuente: Map Compare. Geofabrik tools

Para empezar a colaborar en el proyecto OpenStreetMap es necesario registrarse a la página principal (http://www.openstreetmap.org). El flujo de trabajo para generar datos OpenStreetMap es el siguiente:

Image

  1. Captura y adquisición de datos: Es posible utilizar fuentes datos abiertas o generar nosotros mismos los datos geoespaciales partir de dispositivos GPS. Algunas imágenes aéreas disponibles para el mapeo son Bing Map y PNOA en el caso de España
  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.

Seguidamente se analizan las características de los principales editores OpenStreetMap:

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.

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.

Es un editor de OSM para Unix, Windows y Mac. Tiene algunas funcionalidades que otros editores no tienen como la transparencia de los elementos.

 tabla

Existen otros editores de uso minoritario o especializado, así como se han implementado editores para teléfonos móviles. En la página wiki puede verse una tabla comparativa de los editores disponibles.