La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

OpenStreetMap: Taller de desarrollo y administración.

Presentaciones similares


Presentación del tema: "OpenStreetMap: Taller de desarrollo y administración."— Transcripción de la presentación:

1 OpenStreetMap: Taller de desarrollo y administración

2 Esquema general y fundamentos

3

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

13

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

21

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

27

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

33

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

38

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

47

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


Descargar ppt "OpenStreetMap: Taller de desarrollo y administración."

Presentaciones similares


Anuncios Google