OSM no es un mapa, es una base de datos

El Hackatón - Almería

http://bit.ly/elhackaton-osm

Jorge Sanz

·

Antes de empezar....

A year of edits

OSM 2008: A Year of Edits from ItoWorld

Primera parte

Qué es OpenStreetMap

Qué es OpenStreetMap

  • Comunidad de entusiastas del
    software y los datos libres
  • Proyecto para crear la mejor
    base de datos geográfica mundial
  • ¿Un mapa en la red?
  • ¡No! ¡Son muchos!
  • Pero no solo mapas, también
    un enorme ecosistema
    de productos y servicios
Ver

Ver

Consultar

Consultar

Editar

Editar

Mejorar

¡Mejorar!

Pero Google Maps...

chris' mouth is just the right size
  • API: restricciones de uso, publicidad, ...
  • MapMaker: «vuestro trabajo es nuestro»

Open Database License

  • Licencia de OSM desde septiembre 2012,
    antes CC-BY-SA
  • Desarrollada por la OKFN
  • En resumen:
    • Puedes: compartir, crear, adaptar
    • Siempre que: atribución, compartir-igual, siempre abierto

Hitos

  • 2004 Steve Coast vs. Ordnance Survey.
  • 2006 Fundación sin ánimo de lucro, Yahoo autoriza uso imágenes.
  • 2007 Automotive Navigation Data (AND) dona Países Bajos, India y China. TIGER (Censo de EEUU).
  • 2008 CloudMade. GeoBase.ca dona Canadá.
  • 2009 API 0.6. 200.000 usuarios.
  • 2010 SotM en Girona. Bing Maps (Microsoft) permite uso imágenes.
  • 2011 + 500.000 usuarios, + 1.000.000.000 nodos
  • 2012 Cambio a ODbL, #switch2osm
  • 2013 + 1.000.000 usuarios, Tifón Yolanda
  • 2014 + 1.500.000 usuarios, ???

Números

  • A 19 de marzo de 2014
  • 1.554.973 usuarios
  • 3.850.724.816 puntos GPS
  • 2.249.508.428 nodos
  • 222.362.704 líneas
  • 2.440.593 relaciones
  • Fuente

Comparemos...

Almería

Almería

Burgos

Burgos

Kibera

Kibera · mapkibera.org

Haiti

Puerto Príncipe · wiki

HOT

Humanitarian OpenStreetMap Team

  • Se organiza a partir del terremoto de Haití
  • Se realizan trabajos de formación en zonas necesitadas
  • La mayor parte del trabajo es remoto
  • Actualmente trabajando en Haití, Indonesia, Somalia, Costa de Marfil...

HOT

Filipinas

Tacloban · wiki · mapa de cambios
¡4.8M de cambios en la base de datos en 2/3 semanas!

Segunda parte

Cómo contribuir a OSM

Working

Flujo de trabajo

  1. Recoger datos
  2. Subirlos a OSM

Tomando datos con GPS

Mapping party en Hanoi

Field Papers

2011-05-10 (0010)

Mapping party

Parc Agrari mappers

Preparando los equipos

Mapping party

Treballant al parc agrari

De vuelta a editar

Editores de datos OSM

  • iD
    • JavaScript (d3js)
    • directamente en la web de OSM
    • para editores casuales
  • JOSM
    • escritorio, Java
    • mucha funcionalidad, plugins, etc
    • para editores avanzados
  • ... hay muchos más (incluso para teléfonos y tabletas)
JOSM

Escuela de Bellas Artes en JOSM

Tercera parte

OSM para desarrolladores

Happy
Mapping Software

El modelo de datos de OSM

  • Topológico, diferente del modelo features
  • Primitivas gráficas
    • Nodos
    • Vías (si se cierran pueden ser un área)
  • Atributos alfanuméricos
    • Relaciones
    • Etiquetas

Etiquetas

  • Dan semántica a las primitivas gráficas
    y relaciones
  • Definidas por la comunidad en el wiki

MapFeatures

Nodos

  • Atributos importantes: identificador, latitud y longitud, usuario que creó el nodo y versión
  • Contenido: etiquetas

Un nodo


<node id="1035862914" visible="true" version="1"
        changeset="6637923" timestamp="2010-12-12T16:07:17Z"
        user="Schumi4ever" uid="83942"
        lat="36.8371080" lon="-2.4644590">
    <tag k="natural" v="tree"/>
</node>
            

https://www.openstreetmap.org/api/0.6/node/1035862914

Vías

  • Atributos: identificador, usuario, versión
  • Contenido: lista de nodos y etiquetas

Una vía


<way id="159010347" visible="true" version="2"
        changeset="21196864" timestamp="2014-03-19T18:09:16Z"
        user="XuRxO" uid="13409">
    <nd ref="1711177810"/> <nd ref="1711177809"/>
     <-- más nodos... -->
    <nd ref="1711177808"/> <nd ref="1711177812"/>
    <nd ref="1711177810"/>
    <tag k="addr:city" v="Almería"/>
    <tag k="addr:postcode" v="04001"/>
    <tag k="addr:street" v="Plaza Pablo Cazard"/>
    <tag k="amenity" v="college"/>
    <tag k="building" v="school"/>
    <tag k="name" v="Escuela de Bellas Artes"/>
    <tag k="phone" v="+34950156158"/>
    <tag k="website" v="http://www.andalucia.org/...."/>
</way>
            

https://www.openstreetmap.org/api/0.6/way/159010347

Relaciones

  • Atributos: id, visible, usuario y timestamp
  • Contenido
    • Miembros: id, tipo y rol en la relación
    • Etiquetas

Una relación


<relation id="2545358" visible="true" version="9" ...>
    <member type="node" ref="2306864392" role="stop"/>
    <member type="node" ref="2306864403" role="stop"/>
    <!-- más paradas ... -->
    <member type="way" ref="204274848" role="forward"/>
    <member type="way" ref="23290865" role="forward"/>
    <!-- más vías ... -->
    <tag k="colour" v="black"/>
    <tag k="name" v="Casco Histórico"/>
    <tag k="operator" v="SURBUS"/>
    <tag k="ref" v="1"/>
    <tag k="route" v="bus"/>
    <tag k="type" v="route"/>
    <tag k="wheelchair" v="yes"/>
</relation>
            

https://www.openstreetmap.org/api/0.6/relation/2545358

La API de OSM

  • Único medio de modificar datos
  • v0.6 desde 2009
  • RESTful
  • Consultas anónimas,
    actualizaciones por OAuth
  • Soporte de versionado
  • Descargas limitadas
    a cuadrados de 15'
  • No está enfocada a consulta, sino a edición

<osm version="0.6" generator="OpenStreetMap server">
<api>
<version minimum="0.6" maximum="0.6"/>
<area maximum="0.25"/>
<tracepoints per_page="5000"/>
<waynodes maximum="2000"/>
<changesets maximum_elements="50000"/>
<timeout seconds="300"/>
</api>
</osm>
            

http://api.openstreetmap.org/api/capabilities


<osm version="0.6" generator="OpenStreetMap server">
<node id="933346497" lat="41.5827283" lon="2.013415"
version="3" changeset="8211372" user="Jaume Figueras"
uid="55987" visible="true" timestamp="2011-05-21T22:26:13Z">
<tag k="ref" v="FIXME"/>
<tag k="network" v="Xarxa d'autobusos Urbans de Terrassa"/>
<tag k="covered" v="no"/>
<tag k="tactile_paving" v="yes"/>
<tag k="bench" v="yes"/>
<tag k="public_transport" v="platform"/>
<tag k="highway" v="bus_stop"/>
<tag k="uic_ref" v="FIXME"/>
<tag k="uic_name" v="FIXME"/>
<tag k="name" v="Arenys de Mar"/>
<tag k="shelter" v="yes"/>
<tag k="operator" v="TMESA"/>
<tag k="layer" v="0"/>
</node>
</osm>
            

http://api.openstreetmap.org/api/0.6/node/933346497


<osm version="0.6" generator="OpenStreetMap server">
<node id="933346497" lat="41.5827339" lon="2.0134288" changeset="5928981"
user="Jaume Figueras" uid="55987" visible="true" timestamp="2010-10-01T15:46:00Z" version="1">
<tag k="highway" v="bus_stop"/>
<tag k="shelter" v="yes"/>
<tag k="name" v="Arenys de Mar"/>
<tag k="tactile_paving" v="yes"/>
<tag k="bench" v="yes"/>
</node>
<node id="933346497" lat="41.5827339" lon="2.0134288" changeset="8167041"
user="Jaume Figueras" uid="55987" visible="true" timestamp="2011-05-16T21:38:38Z" version="2">
<tag k="highway" v="bus_stop"/>
<tag k="shelter" v="yes"/>
<tag k="network" v="Xarxa d'autobusos Urbans de Terrassa"/>
<tag k="name" v="Arenys de Mar"/>
<tag k="ref" v="FIXME"/>
<tag k="uic_name" v="FIXME"/>
<tag k="tactile_paving" v="yes"/>
<tag k="layer" v="0"/>
<tag k="covered" v="no"/>
<tag k="public_transport" v="platform"/>
<tag k="uic_ref" v="FIXME"/>
<tag k="bench" v="yes"/>
<tag k="operator" v="TMESA"/>
</node>
<node id="933346497" lat="41.5827283" lon="2.013415" changeset="8211372"
user="Jaume Figueras" uid="55987" visible="true" timestamp="2011-05-21T22:26:13Z" version="3">
<tag k="highway" v="bus_stop"/>
<tag k="shelter" v="yes"/>
<tag k="network" v="Xarxa d'autobusos Urbans de Terrassa"/>
<tag k="name" v="Arenys de Mar"/>
<tag k="ref" v="FIXME"/>
<tag k="uic_name" v="FIXME"/>
<tag k="tactile_paving" v="yes"/>
<tag k="layer" v="0"/>
<tag k="covered" v="no"/>
<tag k="public_transport" v="platform"/>
<tag k="uic_ref" v="FIXME"/>
<tag k="bench" v="yes"/>
<tag k="operator" v="TMESA"/>
</node>
</osm>
            

http://api.openstreetmap.org/api/0.6/node/933346497/history


<osm version="0.6" generator="OpenStreetMap server">
<changeset id="8211372" user="Jaume Figueras"
uid="55987" created_at="2011-05-21T22:26:04Z"
closed_at="2011-05-21T22:26:17Z" open="false"
min_lat="41.5617613" min_lon="2.0082875"
max_lat="41.5859881" max_lon="2.0241229">
<tag k="comment" v="Bus de Terrassa - Línia 7 adaptada al nou esquema i arranjaments varis"/>
<tag k="created_by" v="JOSM/1.5 (4064 en)"/>
</changeset>
</osm>
            

http://api.openstreetmap.org/api/0.6/changeset/8211372


<?xml version="1.0" encoding="UTF-8"?>
<osm version="0.6" generator="CGImap 0.0.2">
        <bounds minlat="41.5617613" minlon="2.0082875"
                maxlat="41.5859881" maxlon="2.0241229"/>
        <node id="282873786" lat="41.5803041" lon="2.0268698"
                user="Jaume Figueras" uid="55987" visible="true"
                version="5" changeset="1576508" timestamp="2009-06-20T17:59:37Z">
                        <tag k="highway" v="traffic_signals"/>
        </node>
        <node id="282873797" lat="41.5805069" lon="2.0266905"
                user="Jaume Figueras" uid="55987" visible="true"
                version="6" changeset="5858775" timestamp="2010-09-23T23:30:09Z">
                        <tag k="highway" v="traffic_signals"/>
        </node>
....
            

http://api.openstreetmap.org/api/0.6/map?bbox=2.0082875,41.5617613,2.0241229,41.5859881
1.6MB de descarga

Actualización de datos

  • PUT /api/0.6/changeset/create
  • PUT /api/0.6/changeset/#id/close
  • PUT /api/0.6/[N|W|R]/create
  • DELETE /api/0.6/[N|W|R]/#id

Otras consultas

  • GET /api/0.6/[N|W|R]/#id/relations
  • GET /api/0.6/node/#id/ways
  • GET /api/0.6/[W|R]/#id/full
API

Cómo añadir las teselas de OSM a nuestros proyectos

OpenLayers 2

  • http://openlayers.org/
  • Librería madura y amplia
  • Gran soporte de protocoles y formatos
  • No muy buena para móviles
    (build personalizado)
  • Ejemplo

OpenLayers 3

  • http://ol3js.org/
  • Profundo refactoring, en pre-release
  • Optimizada para móviles
  • Uso de Canvas, WebGL
  • Más fácil de personalizar la GUI
  • Ejemplo

Leaflet

Tiles

Servicios derivados de la base de datos

  • El principal producto derivado es el planet
    • Toda la base de datos: 33GB en un XML comprimido
    • Incrementales por semana, día, hora y minuto
  • Overpass API está indicada para consultas
  • taginfo: API de estadísticas de uso de etiquetas
  • Nominatim: geocodificador
  • No oficial pero destacable es OSRM (demo)
Derivados

Renderizados

  • Del planet se vuelca a una base de datos PostGIS
  • Se utiliza la librería Mapnik
    junto con un módulo de Apache: mod_tile
Todo
¿A quién no le gustan son los mapas?

Oficial

Oficial

Ciclismo

Ciclismo

Transporte

Transporte

HOT

HOT

Pero esto solo es el principio

Algunos estilos ofrecidos por Cloudmade

Midnight Commander

MC

Pale down

Pale

Free line

Freeline

City living

City living

Stamen

Watercolor

Watercolor

Toner

Toner

Mapbox

Estilo para Pinterest

Pinterest

Estilo para Foursquare

Foursquare

Random

Random

¡Gracias!

Jorge Sanz · @xurxosanz
Enlaces y referencias
http://bit.ly/elhackaton-osm

Thanks!

Licencia

Creative Commons License
OSM no es un mapa, es una base de datos by Jorge Sanz is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.