Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porCarmelo Araya Valverde Modificado hace 8 años
1
OpenStreetMap: Taller de desarrollo y administración
2
Esquema general y fundamentos
4
Sistema de coordenadas y proyección ● WGS 84 ● SRS 900913 (Spherical Mercator) ● En el zoom 0 sólo hay una “tile” de 256x256 http://tile.openstreetmap.org/0/0/0.png
5
En el siguiente zoom... ● Cada “tile” se divide en 4 (/zoom/x/y.png)/zoom/x/y.png http://b.tile.openstreetmap.org/1/0/0.pnghttp://b.tile.openstreetmap.org/1/1/0.png http://c.tile.openstreetmap.org/1/0/1.pnghttp://c.tile.openstreetmap.org/1/1/1.png
6
Ejercicio 0 ● ¿Cuantas “tiles” tendría, teóricamente, el zoom 18, que es el máximo de la capa “Mapnik”?
7
¿Cómo añadir un mapa de OSM a una página web?
8
Mapa estático ● Función “exportar” de la página principalexportar ● APIs externas: ● Static Maps API Static Maps API ● MapOf MapOf ● StaticMap StaticMap ● MapQuest MapQuest
9
Ejercicio 1 ● Crea una página web que contenga un mapa estático aproximadamente de la zona de Bilbao de un tamaño de 400 x 400 px
10
iframe ● Accesible también desde la opción de “exportar” (HTML para pegar) ● Permite añadir un marcador (opciones mlon y mlat)
11
Usando la API de Google Maps var osmMapType = new google.maps.ImageMapType({ getTileUrl: function(coord, zoom) { return "http://tile.openstreetmap.or g/" + zoom + "/" + coord.x + "/" + coord.y + ".png"; }, tileSize: new google.maps.Size(256, 256), isPng: true, alt: "OpenStreetMap layer", name: "OpenStreetMap" });
12
Ejercicio 2 ● Crea una página web que contenga un mapa deslizante de la zona de Bilbao usando la API de Google Maps
14
OpenLayers ● Libre y gratuita incluso para uso comercial (licencia BSD) ● Permite mostrar mapas y otros elementos superpuestos ● API profesional y altamente personalizable ● Descargable desde http://openlayers.org/http://openlayers.org/
15
Código básico function initializeMap() { map = new OpenLayers.Map("map"); map.addLayer( new OpenLayers.Layer.OSM()); map.zoomToMaxExtent(); } […]
16
Ejercicio 3 ● Mostrar una página web con un mapa deslizante (400 x 300 px) usando OpenLayers
17
Afinando un poco más (I) // configuramos mapa map = new OpenLayers.Map("map", { controls: [ new OpenLayers.Control.Navigation(), new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.LayerSwitcher({'ascending':false}), new OpenLayers.Control.Attribution() ], numZoomLevels: 19 }); //anyadimos capas base var mapnik = new OpenLayers.Layer.OSM("Mapnik"); var tilesAtHome = new OpenLayers.Layer.OSM("tiles@home", "http://tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png"); map.addLayers([mapnik, tilesAtHome]);tiles@homehttp://tah.openstreetmap.org/Tiles/tile/$
18
Afinando un poco más (II) // calculamos coordenada var lonLat = new OpenLayers.LonLat(-2.939605, 43.271131).transform( new OpenLayers.Projection("EPSG:4326"), // de WGS84 map.getProjectionObject() // a Mercator Esferico ); var zoom = 16; // anyadimos marcador var markers = new OpenLayers.Layer.Markers("Marcadores"); map.addLayer(markers); markers.addMarker(new OpenLayers.Marker(lonLat)); //centramos mapa map.setCenter(lonLat, zoom);
19
Ejercicio 4 ● Crear, con OpenLayers, una página web con un marcador en el Guggenheim, de forma que se pueda hacer zoom y arrastrar la imagen, y elegir entre la capa Mapnik y Cycle Map
20
OSM API / XML
22
Protocolo ● Está documentado en: http://wiki.openstreetmap.org/wiki/API_v0.6 http://wiki.openstreetmap.org/wiki/API_v0.6 ● Cambia según necesidades (el actual data de abril del 2009, y solo añadió características nuevas) ● Es una API REST ● Es una API de edición, no de consulta
23
Esquema de datos […]
24
Comunicación con el servidor ● Obtener datos de un área: ● GET /api/0.6/map?bbox=left,bottom,right,top ● Crear un elemento: ● PUT /api/0.6/[node|way|relation]/create ● Leer un elemento: ● GET /api/0.6/[node|way|relation]/#id ● Actualizar un elemento: ● PUT /api/0.6/[node|way|relation]/#id ● Borrar un elemento: ● DELETE /api/0.6/[node|way|relation]/#id
25
Ejercicio 5 ● Ejecuta JOSM en consola y observa como muestra todas las comunicaciones con el servidor de OSM ● Descarga una región del mapa ● Copia el comando (URL) ejecutado por JOSM y pégalo en un navegador ● Guarda el resultado en disco y ábrelo con un editor de texto
26
Nominatim
28
Nominatim ● Es un indexador de nombres, teniendo en cuenta su localización geográfica y administrativa ● Se usa para búsquedas rápidas en la página principal ● Puede testearse en: http://nominatim.openstreetmap.org/ http://nominatim.openstreetmap.org/ ● Documentación en:http://wiki.openstreetmap.org/wiki/Nomi natimhttp://wiki.openstreetmap.org/wiki/Nomi natim
29
Búsqueda de nombres ● Interfaz REST en formato JSON (o html, o xml) ● Ejemplo: ● http://nominatim.openstreetmap.org/search? q=Bilbao&format=json http://nominatim.openstreetmap.org/search? q=Bilbao&format=json [{"place_id":"151062",[…], "lat":"43.262966", "lon":"-2.9349516", "display_name":"Bilbao, Vizcaya, España, Europa", "class":"place", "type":"city", […]}, […]]
30
Búsqueda inversa ● Como la búsqueda normal, pero te devuelve la dirección de un par de coordenadas latitud / longitud ● Ejemplo: ● http://nominatim.openstreetmap.org/reverse? lat=43.262966&lon=-2.9349516&format=json http://nominatim.openstreetmap.org/reverse? lat=43.262966&lon=-2.9349516&format=json {[…], "display_name":"On Federico Moyuaren plaza, Zurbaranbarri, Bilbao, Vizcaya, 48011, España", […]}
31
Ejercicio 6 ● Crear un mapa desplazable con OpenLayers que incluya un cuadro de diálogo que permita la búsqueda de nombres y los muestre en el mapa
32
Overpass API / XAPI
34
Uso ● Es una API de consulta (sólo lectura) ● Esta desfasada unos días respecto a la base de datos principal ● Tiene más opciones y permite consultas más potentes que la API de edición ● Permite filtrar por bbox y/o por etiquetas
35
Ejemplos ● Todas los generadores nucleares del mundo: http://open.mapquestapi.com/xapi/api/0.6/* [power=generator][generator:source=nuclear] http://open.mapquestapi.com/xapi/api/0.6/* [power=generator][generator:source=nuclear] ● Escuelas de (aproximadamente) Madrid: http://open.mapquestapi.com/xapi/api/0.6/* [bbox=-3.845,40.321,-3.584,40.526][amenity=school] http://open.mapquestapi.com/xapi/api/0.6/* [bbox=-3.845,40.321,-3.584,40.526][amenity=school]
36
Ejercicio 7 ● Descárgate un mapa OSM de los parques de Donostia ● Encuentra una manera de obtener todos los molinos de viento del mundo
37
PostGIS
39
Instalación y uso básico $ sudo aptitude install postgresql-9.1 postgresql-9.1- postgis $ sudo -u postgres sh > createuser -DRS jynus > createdb -O jynus openstreetmap $ psql openstreetmap
40
Dumps ● Descargables desde planet.osm.org, o cualquiera de sus mirrors (incluyen extractos o conversiones) ● Geofabrik Geofabrik ● Cloudmade Cloudmade ● Se generan semanalmente, pero existen diffs semanales, diarios y de minutos ● Actualmente ocupa 18 GB comprimido con bzip2
41
osmosis ● Es la herramienta “oficial” para serializar y deserializar la base de datos en y desde XML ● Es un programa de línea de comandos java ● Mantiene la estructura tal y como en la original BBDD, con la posibilidad de importar/exportar o no el histórico
42
Instalación y uso ● Descarga de: http://dev.openstreetmap.org/~bretth/osmosis- build/osmosis-latest.zip http://dev.openstreetmap.org/~bretth/osmosis- build/osmosis-latest.zip ● Ejemplo de uso (importación a una base de datos para la API): $ osmosis --read-xml file="planet.osm" --write-apidb host="x" database="openstreetmap" user="x" password="x" ● Más detalles: http://wiki.openstreetmap.org/wiki/Osmosis http://wiki.openstreetmap.org/wiki/Osmosis
43
osm2pgsql ● Permite generar una estructura optimizada para el renderizado ● Es “con pérdida” (no apta para routing u otras aplicaciones) ● Instalación $ sudo aptitude -t unstable install osm2pgsql
44
Ejercicio 8 ● Descarga un mapa de la zona de Bilbao ● Impórtalo a una base de datos PostgreSQL, manteniendo el esquema original de la base de datos ● Obtén cuantas calles comienzan por la letra “Z” y lístalas ordenadas alfabéticamente
45
“The Rails port” ● Es el software que da soporte a la interfaz web en openstreetmap.org (gestión de usuario, trazas, diarios, slippy map, visualización de los datos y conjuntos de cambios, etc.) ● Está programada en Ruby on Rails y se apoya en la base de datos Postgres
46
Renderizadores
48
Osmarender (I)
49
Osmarender (II) ● Fue el primer renderizador que se usó ● Permite el rendering mediante tiles@home (distribuido en red) ● Inicialmente era un conversor a SVG que se renderizaba con Inkscape ● Suele dibujar más características que Mapnik
50
Mapnik (I)
51
● Era (y sigue siendo) un proyecto aparte de renderizado de mapas de alta calidad con software libre ● El renderizado se hace en OSM a partir de la base de datos completa, aunque permite hacerlo directamente desde un.osm ● El aspecto es configurable mediante hojas de estilo
52
Preparación para el renderizado $ wget http://trac.openstreetmap.org/browser/applications/utils /export/osm2pgsql/900913.sql?format=raw -O 900913.sql $ psql -d gis -f./900913.sql $ sudo /etc/init.d/postgresql restart $ wget http://planet.openstreetmap.org/planet- latest.osm.bz2 $ mkdir world_boundaries && cd world_boundaries $ wget htt://tile.openstreetmap.org/world_boundaries- spherical.tgz $ wget http://tile.openstreetmap.org/processed_p.tar.bz2 $ wget htt://tile.openstreetmap.org/shoreline_300.tar.bz2 $ wget http://www.naturalearthdata.com/http//www.naturalearthda ta.com/download/10m/cultural/10m-populated-places.zip $ wget http://www.naturalearthdata.com/http//www.naturalearthda ta.com/download/110m/cultural/110m-admin-0-boundary- lines.zip $ osm2pgsql -m -d gis planet-latest.osm.bz2
53
Renderizado con Mapnik $./generate_xml.py --host localhost --user jynus --dbname openstreetmap --symbols./symbols/ --world_boundaries./world_boundaries/ --port 5432 --password '' $ MAPNIK_MAP_FILE="osm.xml" MAPNIK_TILE_DIR="tiles/"./generate_tiles.py
54
mod_tile ● Es un módulo de Apache que permite renderizar “al vuelo” las teselas ● Sólo están pre-renderizados los zooms más bajos, los otros se crean o actualizan bajo demanda
55
Ejercicio 9 ● Descarga un archivo.osm de la zona de Bilbao ● Descarga e instala el software Mapnik y todas sus dependencias ● Renderiza los datos descargados, pero cambia las autopistas para que aparezcan de color rojo con los bordes verdes ● Muéstralo las teselas generadas en un mapa deslizante
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.