2
3 Agradecimientos: Quiero agradecer a mis profesores, compañeros, amigos y familia todo el apoyo y paciencia que han tenido conmigo durante el desarrollo de este proyecto. También quiero expresar mi agradecimiento al personal del IAAA y GeospatiumLab, en especial a Iván y Juan que me han guiado y apoyado a lo largo de todo este proyecto.
4
5 Análisis de servicios de Web Mapping y su integración en componentes de visualización de mapas genéricos Resumen Este PFC ha sido desarrollado por Carlos Rabaza Bergua en colaboración con el IAAA y GeosLab como un proyecto de investigación y desarrollo con una duración de más de 1561 horas. El proyecto ha estado motivado por el crecimiento en el uso de información cartográfica por parte de los usuarios así como en el incremento de la oferta de diferentes proveedores cada uno con características que lo hacen único dentro de del panorama mundial. El PFC se ha divido en dos bloques: parte web y parte móvil. Para la parte web se han analizado diversos proveedores de mapas online, así como sus posibilidades de integración en la librería de referencia en cuanto a visores de mapas, OpenLayers (en concreto su versión 2.12 que era la última disponible en el momento de inicio de este PFC). Tras el análisis de proveedores realizado, se seleccionaron dos (Yandex y Baidu) por presentar cualidades interesantes y que los hacían diferentes del resto. Durante la integración surgieron múltiples dificultades, siendo el caso de Baidu el más problemático y que dio lugar a la creación y presentación de un paper al respecto en las Jornadas Ibéricas de Infraestructuras de Datos Espaciales del 2013 celebradas en Toledo. Una vez finalizada la integración, se añadió al trabajo realizado un control de GeosLab para la generación de rutas y se creó otro control para la exportación de la ruta en formato JSON a otro dispositivo permitiendo así la interoperabilidad entre las dos partes de este sistema que se ha creado. En cuanto a la parte móvil, se realizó el análisis de varias librerías y aplicaciones de mapas de tipo Open Source. En concreto el análisis se centró en el análisis de características que permitiesen el uso offline de mapas así como la permisividad de la licencia a la hora del uso dentro de otra aplicación. La licencia era también un factor importante ya que el objetivo de este bloque consiste en la integración de mapas offline en una librería de GeosLab S.L. para Android. Tras el análisis realizado, se escogió la librería Mapsforge que ofrecía una licencia de tipo LGPLv3 lo que posibilitaría su uso dentro de aplicaciones privativas. Además de esto, la librería de Mapsforge cuenta con mapas para todo el mundo en un formato propio usando la información de OpenStreetMap y que tienen un tamaño reducido al usar información vectorial. Utilizando la información recogida, se realizó la integración de la funcionalidad offline de Mapsforge en la librería de GeosLab para Android, así como también se le añadió soporte para teselas online de servicios como OpenStreetMap. Por último, la aplicación creada para el caso de uso cuenta con soporte para localización vía GPS y redes. Además puede cargar un fichero de tipo JSON con una ruta que se ha podido generar con la parte Web del proyecto de modo que utilizando el GPS, un mapa de Mapsforge offline y la ruta, el usuario pueda desplazarse si necesidad de usar ningún tipo de conectividad a Internet.
6 Índice 1. Introducción .............................................................................................................. 9 1.1. Contexto profesional .................................................................................... 9 1.2. Contexto tecnológico .................................................................................... 9 1.2.1. Sistemas de información geográfica ................................................... 9 1.2.2. Contexto tecnológico de la parte web .............................................. 10 1.2.3. Contexto tecnológico de la parte móvil............................................ 11 1.3. Motivación y objetivos del proyecto ................................................. 11 1.4. Estructura de la memoria ........................................................................ 12 2. Trabajo realizado .................................................................................................. 13 2.1. Parte web .......................................................................................................... 13 2.1.1. Estudio de proveedores de mapas online ....................................... 13 2.1.2. Análisis de OpenLayers 2.12 ................................................................ 14 2.1.3. Arquitectura de la integración ............................................................. 14 2.1.4. Caso de uso ................................................................................................ 18 2.2. Parte móvil ....................................................................................................... 20 2.2.1. Estudio de librerías de mapas offline para Android ..................... 20 2.2.2. Análisis de Mapsforge ............................................................................. 20 2.2.3. Arquitectura de la integración ............................................................. 22 2.2.4. Caso de uso ................................................................................................ 25 3. Conclusiones ........................................................................................................... 27 3.1. Cumplimiento de objetivos ..................................................................... 27 3.2. Líneas futuras ................................................................................................. 27 3.3. Valoración personal .................................................................................... 28 4. Anexos ........................................................................................................................ 29 Anexo A. Introducción a los sistemas de información geográfica 29 Anexo B. Análisis de proveedores de mapas ............................................ 32 Bing Maps ........................................................................................................................ 32 Google Maps ................................................................................................................... 34 Mappy ................................................................................................................................ 37 MapQuest ......................................................................................................................... 39 NearMap ........................................................................................................................... 44 Here Maps (Nokia Maps) ............................................................................................ 46
7 OpenStreetMap .............................................................................................................. 49 ViaMichelin ...................................................................................................................... 51 WikiMapia......................................................................................................................... 52 Yahoo! Maps ................................................................................................................... 53 Yandex Maps .................................................................................................................. 54 Baidu Maps ...................................................................................................................... 57 Anexo C. Análisis de OpenLayers 2.12 ......................................................... 59 1. ¿Qué es OpenLayers?...................................................................................... 59 2. ¿Cómo funciona OpenLayers?...................................................................... 60 3. Vías para la integración de proveedores ................................................. 68 4. Diseño escogido para la integración ......................................................... 70 5. Diagrama de clases de la integración ....................................................... 72 Anexo D. Problemática integración Yandex ........................................... 75 1. Introducción ........................................................................................................ 75 2. Problemática para la integración de Yandex .......................................... 75 3. Integración de Yandex en OpenLayers .................................................... 77 Anexo E. Problemática integración Baidu .................................................. 83 1. Introducción ........................................................................................................ 83 2. Problemática para la integración de Baidu ............................................. 84 3. Integración de Baidu en OpenLayers ........................................................ 88 Anexo F. Restricciones al trabajo con información geográfica online en China (Paper JIIDE 2013) ................................................................. 95 1. Introducción .................................................................................................... 95 2. Restricciones legales en China ............................................................. 96 3. Restricciones de los mapas en China ............................................... 96 4. Conclusiones ................................................................................................. 106 5. Agradecimientos ......................................................................................... 107 6. Referencias .................................................................................................... 107 Anexo G. Baidu Maps API interfaz conversión coordenadas ..... 108 Anexo H. Análisis de librerías de mapas offline ................................ 111 Big Planet Tracks............................................................................................................ 111 AndNav2 .......................................................................................................................... 111 Osmdroid ......................................................................................................................... 112 Mapsforge ........................................................................................................................ 112
8 OsmAnd (OSM Automated Navigation Directions) ................................................... 113 Conclusiones ................................................................................................................. 114 Anexo I. Análisis de Mapsforge ...................................................................... 115 1. ¿Qué es Mapsforge? ...................................................................................... 115 2. ¿Cómo funciona Mapsforge? ...................................................................... 115 3. Vías para la integración en la librería Android de GeosLab............ 121 4. Diseño escogido para la integración .................................................................. 122 Anexo J. Casos de uso .......................................................................................... 130 1. Parte Web .......................................................................................................... 130 2. Parte Móvil ......................................................................................................... 138 Anexo K. Resumen de horas del PFC ........................................................... 145 5. Bibliografía ............................................................................................................. 150 6. Glosario .................................................................................................................... 151
9 1. Introducción El presente documento recopila toda la información de interés del proyecto final de carrera (PFC) con título “Análisis de servicios de Web Mapping y su integración en componentes de visualización de mapas genéricos” desarrollado por Carlos Rabaza Bergua. Esta introducción se divide en varias secciones. En primer lugar se va a ver el contexto profesional y tecnológico del proyecto así como la motivación y sus objetivos para finalmente acabar revisando la estructura que va a tener este documento. El proyecto ha tenido una duración de más de 1563 horas debido a las dificultades y problemas que se han ido encontrando durante el desarrollo. 1.1. Contexto profesional El presente proyecto fin de carrera ha sido desarrollado en colaboración con el Grupo de Sistemas de Información Avanzados (IAAA) del Departamento de Informática e Ingeniería de Sistemas (DIIS) perteneciente a la Universidad de Zaragoza y también en colaboración con GeoSpatiumLab S.L. (GeosLab). El IAAA es un grupo con 20 años de experiencia en I + D, adscrito al Instituto de Investigación en Ingeniería de Aragón de la Universidad de Zaragoza. Una de sus áreas de trabajo son las llamadas Infraestructuras de Datos Espaciales (IDEs). En cuanto a GeosLab es una empresa que nace en el 2.007 con el objetivo de dar uso a la tecnología desarrollada por parte del IAAA. Se trata de una empresa especializada en el tratamiento digital de la información geoespacial y georreferenciada y sus ámbitos de aplicación. Cuenta con una amplia experiencia en el ámbito de las Infraestructuras de Datos Espaciales (IDE), siendo éstas, sistemas de información integrados por un conjunto de recursos que permite el acceso y la gestión de datos y servicios geográficos disponibles en Internet y que cumplen una serie normas, estándares y especificaciones que regulan y garantizan la interoperabilidad de la información geográfica. Posee como una de sus líneas de negocio el desarrollo de soluciones que facilitan el tratamiento y la visualización de datos de base geográfica tanto en entorno Web como móvil, los denominados sistemas de información geográfica (SIG), así como servicios basados en localización. 1.2. Contexto tecnológico El proyecto se ha dividido en dos partes diferenciadas, cada una con su propio contexto tecnológico, pero ambas se encuentran basadas en los Sistemas de Información Geográfica. Esta diferenciación se debe al diferente ámbito de uso. La primera parte del proyecto se centra en el uso de tecnologías Web relacionadas con los Sistemas de Información Geográfica, mientras que para la segunda se ha pasado a un contexto de tecnologías móviles, más concretamente Android. 1.2.1. Sistemas de información geográfica Los Sistemas de Información Geográfica (SIG) permiten mantener y usar datos relacionados con localizaciones geográficas. El tipo de datos que manejan estos sistemas puedes ser imágenes aéreas o de satélite siempre y
16 Figura 5Gráficas de los desplazamientos de cuatro ubicaciones diferentes en China respecto a la capa de satélite de Google. Gcalles = Google Streets; GSat =Google Satélite; GCnCalle = Google China Calles; GCnSat = Google China Satélite; BingC = Bing Calles; BingS = Bing Satélite; OSM = OpenStreetMap; BaiduCalSat = Baidu Calles y Satélite Para la integración de Baidu, ha sido necesario en primer lugar realizar ingeniería inversa a su librería para obtener las fórmulas que usan para convertir coordenadas del mapa a coordenadas del mundo, así como para obtener los valores de la extensión máxima y de la resolución del mapa. Con esta información se pudo construir un prototipo y dado que no se podía comparar con capas de otros servicios para validar la integración se procedió a realizar la integración de la API de Baidu, para de esta manera poder comparar la capa de Baidu, con la capa de la API de Baidu. De esta manera se pudo comprobar que ambas capas coincidían perfectamente, por lo que se pudo dar por válida la integración. Además de las capas básicas de ambos servicios (Yandex y Baidu), se integró también el servicio de tráfico de Yandex y el servicio de Alertas de Baidu. El servicio de tráfico de Yandex dispone de información del nivel de congestión del tráfico en ciudades de Rusia y algunos países de sus alrededores. La información general de la congestión del tráfico se muestra en niveles lejanos de zoom, mientras que para niveles más cercanos dispone de teselas con transparencias que muestran la congestión por calles dentro de la ciudad. Además, el servicio de Yandex cuenta con una capa que muestra información de las velocidades en las calles, pensada para funcionar en conjunto con la capa de teselas de tráfico, de modo que al pasar el ratón sobre una calle aparezca la velocidad en ese tramo, esto requirió bastantes optimizaciones para hacerlo usable, debido a la diferente forma de trabajar de OpenLayers y la API de Yandex (Anexo D. ). En cuanto al servicio de Baidu, muestra un icono en el que al hacer clic sobre él muestra información adicional sobre el suceso ocurrido. En caso de que no haya ningún suceso, no se muestra nada, y de haberlo puede tener también una imagen para ilustrarlo (Anexo E. ).
17 Figura 6 - Diagrama de clases de la integración en OpenLayers
18 2.1.4. Caso de uso Como ya se ha comentado se ha creado un sistema compuesto por dos casos de uso que pueden trabajar en conjunto. En concreto, la funcionalidad offline ha sido uno de los puntos en qué más se ha centrado este PFC. Por ello este caso de uso de la parte Web está pensado para que utilizando las funcionalidades de tráfico de Yandex o las alertas de Baidu se puedan crear rutas online que puedan ser usadas posteriormente en el dispositivo móvil sin ningún tipo de conectividad. Para ello se ha realizado la integración en OpenLayers 2.12 de un componente de creación de rutas de GeosLab que utilizan en su librería de producción. Este componente permite la creación de una ruta utilizando la API de Google Maps para ello. Una vez realizado esto, se creó un control para permitir la exportación de esa ruta en un fichero de modo que pueda ser usada en la segunda parte (parte móvil del proyecto). Para este fichero se eligió usar el formato de archivo JSON, ya que es un formato habitual en tecnologías web y permite el intercambio de información entre diferentes plataformas por tratarse de un fichero en texto plano que puede ser procesado por la plataforma de destino. En la siguiente imagen (Figura 7) se puede ver una muestra del uso de las capas de Yandex integradas en la librería. En este caso se muestran capas combinadas de diferentes servicios. Además en la parte superior izquierda de la imagen se pueden ver los controles que permiten la creación de las rutas tal y como se ha mencionado. En la Figura 8 se puede ver la información mostrada en ciudades que disponen de un semáforo con niveles de congestión y las que no. Todas las ciudades que tienen un icono de semáforo sobre ellas disponen del servicio de tráfico de Yandex. Figura 7 - Captura de pantalla de la aplicación web mostrando como capa base la capa de satélite de Google en conjunción con la capa overlay de nombres de Yandex y la capa de tráfico de Yandex. Figura 8 - La imagen de la izquierda muestra la información disponible al hacer clic sobre una ciudad con semáforo con código de colores. La imagen de la derecha
19 muestra la información disponible al hacer clic sobre una ciudad que no dispone de información sobre el nivel del tráfico. Figura 9–La imagen de la izquierda muestra de la capa de tráfico de Yandex en niveles de zoom cercanos mostrando el tráfico por calles y la velocidad en el tramo. Teniendo esta información en cuenta se puede crear una ruta considerando el tráfico para exportarla (imagen de la derecha). Respecto a la integración de Baidu la Figura 10 muestra la combinación de capa de satélite de Baidu y su capa de nombres así como la capa normal del mapa de Baidu. Como ya se ha mencionado debido a la problemática de los mapas en China, no se compara la capa de Baidu con la de otros servicios. La Figura 11 muestra la integración del servicio de alertas de Baidu y la información obtenida de las incidencias. Figura 10 - La imagen de la izquierda muestra como capa base la capa de satélite de Baidu en combinación con la capa de overlay de nombres de Baidu. La imagen de la derecha muestra la capa del mapa de Baidu. Figura 11 - La imagen de la izquierda muestra en el mapa dos incidencias de Baidu. La de la derecha muestra un popup con información de una incidencia de Baidu con imagen.
20 2.2. Parte móvil La segunda parte del proyecto consistió en añadir soporte para mapas sin conexión en una librería de GeosLab que han desarrollado para Android y que usan en fase de producción. Para realizar esta parte del proyecto se comenzó con un análisis de diferentes librerías que puedan hacer uso de mapas sin conexión. Tras el análisis se consideró que Mapsforge era la que mejor respondía a las necesidades por lo que se evaluaron posibles vías de integración de Mapsforge en la librería de GeosLab. Por último se creó un caso de uso que utilizara el trabajo realizado. 2.2.1. Estudio de librerías de mapas offline para Android Se realizó un estudio de diferentes librerías existentes que permiten el uso de mapas sin conexión. El estudio completo, se encuentra en el Anexo H. . Para realizar el estudio se buscaron librerías o aplicaciones de código abierto que tuvieran funcionalidad para la visualización de mapas sin conexión a Internet. Uno de los aspectos a valorar fue también la licencia. Se analizaron las siguientes librerías o aplicaciones de código abierto: Big Planet Tracks, AndNav2, Osmdroid, Mapsforge y OsmAnd. Tras el análisis la opción escogida fue Mapsforge ya que dispone de sus propios mapas vectoriales basados en la información de OpenStreetMap y alojados en sus servidores y además cuenta con una licencia que permitiría que la aplicación que la utilice use el tipo de licencia que desee ya sea Open Source o cerrada. 2.2.2. Análisis de Mapsforge Mapsforge es una librería para Android de código abierto (usa GNU Lesser GPL v3). Una de las principales ventajas de Mapsforge es que usa mapas vectoriales que ocupan relativamente poco, como ejemplo el mapa para toda España ocupa 208 MB. La librería tiene soporte para visualización de un archivo que contiene el mapa sin conexión y que está en un formato propio de Mapsforge o bien visualización de mapas de OpenStreetMap online. La actividad del renderizado de tiles se encuentra centralizada en la clase “DatabaseRenderer” a la que es necesario pasarle la ruta del fichero del mapa sin conexión. La librería crea las tareas de renderizado de teselas según sean necesarias. Esas tareas se colocan en una cola de trabajo gestionada por la clase MapWorker que se ejecuta en un hilo aparte. De esta manera el renderizado se lleva a cabo por un único hilo aparte del hilo principal. Esta estructura impide el uso del renderizador por múltiples hilos de forma que se pudiese separar el dibujado de múltiples teselas en varios hilos. Además, tampoco es posible ir mostrando al usuario la tesela conforme se va dibujando, ya que hasta que no se ha terminado de pintar no se devuelve la imagen por parte de la librería. Los colores que usa la librería para el dibujado de las teselas se pueden modificar variando el tema que usa (el tema por defecto se encuentra en un archivo XML dentro de la librería de Mapsforge). En la imagen de la Figura 12 se puede ver la estructura básica de Mapsforge.
21 Figura 12 - Diagrama básico de la estructura de Mapsforge La clase “MainActivity” que se muestra en la Figura 12 corresponde a la clase principal de una aplicación Android cualquiera que quiera utilizar la librería de Mapsforge. De acuerdo con el análisis realizado de Mapsforge, existen principalmente dos vías de integración en la librería. Una posible vía sería tratar de integrar directamente la clase “MapActivity” que usan las aplicaciones que utilizan la librería. La otra posibilidad sería integrar directamente el renderizador de teselas sin conexión “DatabaseRenderer” de modo que se realice el acceso a las clases necesarias dentro de la librería. Ambas opciones tienen sus ventajas e inconvenientes, ya que cuando más profundo es el acceso dentro de la librería más difícil puede ser por ejemplo realizar actualizaciones de versión de la librería, pero también permite una mayor flexibilidad en la integración.
22 2.2.3. Arquitectura de la integración Como ya se ha mencionado, el objetivo de esta parte es integrar los mapas offline de Mapsforge en la librería de GeosLab. A continuación se muestra la arquitectura de la librería de GeosLab para Android (Figura 13). Figura 13 - Diagrama de clases de la librería de Android de GeosLab Se valoraron varias opciones para la integración dentro de la librería de GeosLab. Una de las posibilidades sería el uso como base de la clase Layer o la otra opción sería extender directamente la clase Grid. Finalmente la integración se realizó creando la clase XYZ que extiende de Grid de GeosLab ya que incluía la funcionalidad necesaria para procesar teselas en una matriz formando una cuadrícula. También fue necesario crear la clase XYZTile que extendiese de la clase ImageTile de GeosLab. Con estas clases como base, se implementó una solución que puede hacer uso de las teselas sin conexión de Mapsforge y también puede descargar las teselas online del servicio de mapas de Mapquest basado en OpenStreetMap o de cualquier otro servicio compatible. A continuación se muestra la arquitectura del desarrollo a partir de estas clases mencionadas (Figura 14).
23 Figura 14 - Diagrama de clases de la arquitectura de las clases creadas en la librería de Android de GeosLab
24 El siguiente diagrama muestra las clases que se han implementado para hacer uso de la arquitectura creada en la librería. Las clases que se han implementado en este PFC son todas las que pertenecen al paquete “com.android.gsl_mobilemap” (Figura 15). Figura 15 - Diagrama de clases de la aplicación creada en Android
25 2.2.4. Caso de uso Para el caso de uso de la parte móvil de Android se ha creado una aplicación capaz de usar tanto capas de mapas de OpenStreetMap Online como mapas de Mapsforge. Además la aplicación creada para el caso de uso permite el uso de mapas del proveedor Mapquest que ofrece teselas de mapas de OpenStreetMap así como también teselas de vistas aéreas de licencia abierta (tienen cobertura mundial en los niveles de zoom del 0 al 11 y en EEUU también a mayores niveles de zoom). Además de la integración de las capas, se ha añadido soporte para mostrar una ruta sobre el mapa y que se carga desde un archivo en formato JSON que tenga el usuario en el teléfono y que haya sido generada por la primera parte del proyecto. Para la aplicación del caso de uso también se han implementado clases para gestionar la ubicación del usuario, tanto utilizando GPS como localización basada en redes (Figura 16). Como ya se ha mencionado, las rutas se puede generar con la primera parte del proyecto (parte Web) para luego ser cargadas en el dispositivo. Una vez que la ruta está en el dispositivo se puede usar como referencia aunque no se disponga de conexión a internet. Figura 16 - Ejemplos de rutas cargadas en el teléfono sin conexión a Internet usando mapas sin conexión. La imagen de la izquierda muestra la posición actual del usuario utilizando el GPS del teléfono con el marcador negro sobre el mapa. Ambas imágenes corresponden a capturas de pantalla de la aplicación funcionando sobre un Samsung Galaxy S2 con Android Jelly Bean. La aplicación permite elegir la capa a visualizar mediante un mensaje de selección. En ese mensaje el usuario puede elegir entre mostrar la capa de OSM oficial, la de Mapquest Streets o Mapquest Aerial. Además de estas capas, el usuario tendrá más opciones para elegir según los mapas de Mapsforge que tenga cargados en el teléfono. La aplicación busca mapas en varias ubicaciones fijas del teléfono, algunas en la propia memoria del teléfono
32 Anexo B. Análisis de proveedores de mapas En este anexo se realiza un análisis de diferentes servicios de mapas, haciendo hincapié en la API y licencias que tengan para conocer las posibilidades de integración con otros servicios. La información de este documento ha sido recopilada de las páginas oficiales de cada proveedor de búsquedas. En algunos casos la información que ofrecen los proveedores sobre algún aspecto en particular puede ser escasa, por lo que si se desea ampliar la información sería necesario entrar en contacto con los respectivos proveedores para solicitar más información al respecto. Alguno de los proveedores (principalmente Baidu) ha sido analizado usando herramientas de traducción automática por lo que la información recopilada de ellos, puede contener algún error. Este documento ha recibido un proceso de actualización continua por lo que cada dos meses se revisaban los proveedores para comprobar cambios en sus características. Por comodidad de lectura no se ha incluido el histórico y únicamente se incluye a continuación el documento en su versión final. Bing Maps ( http://www.bing.com/maps/ ) Comentario general Mapas desarrollados por Microsoft Fecha última revisión 28/01/2014 URL zona desarrolladores http://www.microsoft.com/maps/ Licencia URL licencia http://www.microsoft.com/maps/Licensing/licensing.aspx Licencia de uso Los desarrolladores de todo tipo de organizaciones pueden usar la plataforma de mapas de Bing gratuitamente siempre que cumplan unas condiciones Limitaciones de uso El uso será gratuito para sitios web públicos que utilicen el servicio para fines comerciales, no comercial, o gubernamentales (siempre que su uso no sea educacional o que no sea usado por parte de organizaciones sin ánimo de lucro) siempre y cuando no excedan de 125.000 transacciones en un período de 12 meses.
33 Posibilidades de integración API de acceso Sí Información API Microsoft ofrece un SDK para las plataformas Windows Phone 7, Android, iOS y también una API REST. Para aplicaciones web y para crear aplicaciones de mapas Microsoft remite al SDK. La API de Bing Maps incluye: (Fuente: http://msdn.microsoft.com/enus/library/dd877180.aspx) Bing Maps para aplicaciones de Windows Store Bing Maps AJAX Control Versión 7.0 Bing Maps AJAX Control Versión 6.3 Bing Maps iOS Control Bing Maps Silverlight Control Bing Maps Silverlight Control para Windows Phone Bing Maps SOAP Services Bing Spatial Data Services Bing Map app SDK Beta Bing Maps WPF Control Cartografía Extensión Mundial. Excepto algunas zonas con cartografía limitada. Calidad Alta. Teselado Sí Datos Extensión Mundiales, aunque servicios como StreetSide tienen una cobertura limitada. Ya que no está presente a nivel mundial.
34 Google Maps ( http://maps.google.com/ ) Comentario general Mapas desarrollados por Google. Fecha última revisión 29/01/2014 URL zona desarrolladores https://developers.google.com/maps/?hl=es Licencia URL licencia https://developers.google.com/maps/licensing Licencia de uso La API de Google Maps es un servicio gratuito que permite integrar Mapas de Google en una página que sea accesible gratuitamente y pública. No se pueden usar mapas para uso en una red interna, excepto durante el desarrollo. Ni tampoco se puede usar en una comunidad cerrada que requiera de invitaciones para acceder. Nota: En aplicaciones móviles no se aplica el acceso gratuito cuando la aplicación sea vendida por un importe a través de una tienda online y es descargable a un móvil que puede acceder a esa tienda (ejemplo: aplicación vendida a través de la Play Store) En el caso de “Google Maps API for Business” también está permitido su uso para despliegues internos, integración en software y aplicaciones de pago, reventa de servicios con Google Maps, seguimiento de elementos privados (private asset tracking). Limitaciones de uso Google dispone de una API gratuita y una API de pago destinada a empresas. Limitaciones de Maps API (gratuita): Geocoding Web Service 2.500 solicitudes por día Directions Web Service 2.500 solicitudes por día 10 Waypoints por solicitud Distance Matrix Web Service 100 elementos por solicitud 100 elementos cada 10 segundos 2.500 elementos por día Elevation Web Service 2.500 solicitudes por día 25.000 muestras por día
35 Static Maps API maximum resolution 640x480 Static Maps API maximum scale 2x Street View Image API maximum resolution 640x480 Limitaciones de Maps API Business: Geocoding Web Service 100.000 solicitudes por día Directions Web Service 100.000 solicitudes por día 23 Waypoints por solicitud Distance Matrix Web Service 625 elementos por solicitud 1.000 elementos cada 10 segundos 100.000 elementos por día Elevation Web Service 100.000 solicitudes por día 1.000.000 muestras por día Static Maps API maximum resolution 2048x2048 Static Maps API maximum scale 4x Street View Image API maximum resolution 2048x2048 Posibilidades de integración API de acceso Sí Información API Google ofrece diferentes API de acceso a su servicio: Maps JavaScript versión 3 Maps API for Flash (permite usar mapas de Google dentro de aplicaciones en Flash) Google Earth API (permite insertar un globo digital en 3D para moverse por el mundo) Static Maps API (permite insertar una imagen rápida y sencilla) Servicios web (solicitudes de URL para acceder a información, el resultado se devuelve en JSON o en XML), algunos como el servicio de Geocoding disponen de interfaz REST Maps Data API (permite visualizar, almacenar y actualizar)
36 Cartografía Extensión Mundial. Excepto algunas zonas con cartografía limitada. Calidad Alta. Teselado Sí Datos Extensión Mundiales, aunque servicios como StreetView tienen una cobertura más limitada.
37 Mappy (http://es.mappy.com/) Comentario general Mappy es subsidiaria del grupo de Páginas amarillas de Francia (PagesJaunes). En la última revisión realizada el 28/01/2014 Mappy ha retirado la disponibilidad de APIs en sus Web para el uso de sus mapas. Según el mensaje que aparece en su zona de desarrolladores, los desarrolladores que se registrasen en el servicio antes de Mayo del 2013 recibirán un correo electrónico informándoles de que en un plazo de dos meses tendrán que dejar de usar su servicio tanto de APIs, como SDKs para móviles como el Widget que ofrecían. Actualmente para el uso del servicio de Mappy es necesario contactar con ellos en el correo
[email protected] facilitando un correo y un teléfono además de una presentación clara del proyecto del desarrollador (descripción y características del mapa deseadas) y ellos se pondrán en contacto con el desarrollador para hablar de su proyecto. Fecha última revisión 28/01/2014 URL zona desarrolladores http://corporate.mappy.com/faq/integrez-mappy/ Licencia URL licencia N/A Licencia de uso N/A Limitaciones de uso N/A Posibilidades de integración API de acceso No pública. Información API Mappy ya no ofrece acceso a APIs de forma pública. Cartografía Extensión Mundial. Excepto algunas zonas con cartografía limitada.
38 Calidad Alta. Teselado Sí Datos Extensión Mundiales, aunque la calidad de las imágenes de satélite está limitada. El último nivel de zoom en el que se dispone de imágenes de satélite es para una escala del mapa de 6 Km.
39 MapQuest ( http://www.mapquest.es/ ) Comentario general Es un servicio de mapas propiedad de America Online desde el año 2.000. La página dispone también de un editor de mapas para los mapas de OpenStreetMap. (http://open.mapquest.com/) Fecha última revisión 28/01/2014 URL zona desarrolladores http://developer.mapquest.com/ Licencia URL licencia http://developer.mapquest.com/web/tools/gettingstarted/terms-overview Licencia de uso Mapquest ofrece dos tipos de licencia de uso en función de los intereses del desarrollador. Para la versión Community se pueden usar datos libre provenientes de OpenStreetMaps (Open Data) o bien datos de fuentes comerciales (licensed data). Enterprise Edition (Licensed Data) (comenzando con 2.500 $ anuales) Community Edition (Licensed Data) Community Edition (Open Data) Limitaciones de uso ENTERPRISE Mapas Sin límite preestablecido Direcciones Sin límite preestablecido Geocodificación Sin límite preestablecido Búsqueda Sin límite preestablecido Matriz de rutas Sin límite preestablecido Tráfico Sí Aplicaciones para móvil no comerciales o públicas Sí Aplicaciones web privadas y/o comerciales Sí Aplicaciones móviles de pago Sí
40 SSL Sí Foro de soporte Sí Soporte Premium (soporte 24/7 teléfono y email) Sí Niveles de rendimiento del sistema Sí Gestión de cuentas Sí COMMUNITY Licensed Data Mapas Sin límite preestablecido Direcciones 5.000 solicitudes/día Geocodificación 5.000 solicitudes/día Búsqueda 5.000 solicitudes/día Matriz de rutas 5.000 pares de ruta/día Tráfico Sí Aplicaciones para móvil no comerciales o públicas Sí Aplicaciones web privadas y/o comerciales No Aplicaciones móviles de pago Sí SSL Sí Foro de soporte Sí Soporte Premium (soporte 24/7 teléfono y email) No Niveles de rendimiento del sistema No Gestión de cuentas No Open Data Mapas Sin límite preestablecido Direcciones Sin límite preestablecido Geocodificación Sin límite preestablecido Búsqueda Sin límite preestablecido Matriz de rutas
41 No Tráfico No Aplicaciones para móvil no comerciales o públicas Sí Aplicaciones web privadas y/o comerciales Sí Aplicaciones móviles de pago Sí SSL No Foro de soporte Sí Soporte Premium (soporte 24/7 teléfono y email) No Niveles de rendimiento del sistema No Gestión de cuentas No Nota: La API de tráfico no se puede usar para navegación en tiempo real ni tampoco como objetivo principal de la página web o de la aplicación. MapQuest se reserva el derecho a limitar el acceso para evitar la degradación del servicio. Posibilidades de integración API de acceso Sí. Información API Licensed Data Map APIs and Web Services Web Services Data Manager API Web Service Directions API Web Service Geocoding API Web Service Search API Web Service Static Maps API Web Service Traffic API Web Service Long URL API Web Service JavaScript Maps API v7 Flash Maps API Android Maps API iOS Maps API Open Data Map APIs and Web Services Open JavaScript Maps API Open Flash Maps API Open Web Services Open Directions API Web Service Open Guidance API Web Service
48 Se puede usar el servicio para mostrar una localización dada, puntos de interés, rutas, puntos de giro y unión de vistas. Los datos necesarios como la posición, el radio, el nivel de zoom, el tipo de mapa, etc. se especifican por parámetros en la solicitud URL. Mobile HTML5 Framework: Información de uso en: http://developer.here.net/faqs#mobile_html5 Cartografía Extensión Mundial. Excepto algunas zonas con cartografía limitada. Calidad Alta Teselado Sí Datos Extensión Mundiales. Aunque algunas zonas con cartografía limitada. Además algunos servicios por ejemplo Nokia Map Creator no está disponible para algunos países como es el caso de España.
49 OpenStreetMap (http://www.openstreetmap.es/ ) Comentario general OpenStreetMap (OSM) es un proyecto colaborativo para crear un mapa del mundo editable gratuitamente. Fecha última revisión 28/01/2014 URL zona desarrolladores http://wiki.openstreetmap.org/wiki/Main_Page Licencia URL licencia http://opendatacommons.org/licenses/odbl/summary/ Licencia de uso OpenStreetMap es básicamente una base de datos, por lo que usan una licencia tipo Open Database License (oDbL) para ella. OpenStreetMap establece restricciones en el uso de teselas (Tiles) desde sus servidores. Los datos son gratuitos, pero el acceso a los servidores de teselas no lo es según se puede leer en la página: http://wiki.openstreetmap.org/wiki/Tile_usage_policy Limitaciones de uso Prohibido el uso intensivo (ejemplo: distribuir una aplicación que use teselas desde openstreetmap.org) sin autorización previa de los administradores. Las llamadas a /cgi-bin/export sólo pueden ser desencadenadas por el usuario, ya que resultan costosas en recursos de CPU y RAM. No se deben descargar tiles innecesarios. En concreto descargar áreas significativas de teselas a niveles de zoom de 7 o más altos para uso offline o uso posterior está prohibido por la carga que eso supone a los servidores ya que esas imágenes normalmente no están en la cache del servidor por lo que se tienen que renderizar. Nota: Existen otros proveedores de teselas para los mapas de OpenStreetMap, algunos de ellos gratuitos: Servidores alternativos de teselas de OpenStreetMap Posibilidades de integración API de acceso Sí. Información API Dispone de una API basada en las ideas de una API
50 RESTful. El interfaz de la API es de tipo XYZ. Si lo que se quiere es simplemente añadir un mapa a una página web se puede recurrir a las librerías que figuran aquí. En esa página se listan varias librerías, en JavaScript y en flash y con diferentes tipos de licencias. Cartografía Extensión Mundial. Aunque pueden existir zonas con cartografía limitada o nula. Calidad Alta Teselado Sí Datos Extensión Mundial. Sobre todo en grandes ciudades abunda información sobre comercios, hoteles, restaurantes… aunque en cambio en pequeñas poblaciones puede haber una carencia importante de información.
51 ViaMichelin ( http://www.viamichelin.es/ ) Comentario general ViaMichelin es una subsidiaria de la compañía Michelin Group. Fecha última revisión 28/01/2014 URL zona desarrolladores http://dev.viamichelin.com/ Licencia URL licencia N/A Licencia de uso N/A Limitaciones de uso N/A Posibilidades de integración API de acceso Sí Información API ViaMichelin ofrece diferentes API de acceso, se puede pedir una cuenta de evaluación de 45 días para probar los servicios, pero para su uso, es necesario contactar con su equipo de ventas y solicitar un presupuesto. ViaMichelin REST API ViaMichelin JavaScript API V2 ViaMichelin SOAP API Cartografía Extensión Mundial. Aunque pueden existir zonas con cartografía limitada o nula. Calidad Alta Teselado Sí Datos Extensión Mundial. Aunque pueden existir zonas con datos limitados o inexistentes.
52 WikiMapia (http://wikimapia.org) Comentario general No es un proveedor de mapas como tal, sino que se trata de una iniciativa para la creación de contenido descriptivo de cualquier lugar del mundo. Fecha última revisión 28/01/2014 URL zona desarrolladores http://wikimapia.org/forum Licencia URL licencia http://wikimapia.org/api/ Licencia de uso La licencia de uso es de tipo Creative Commons. Limitaciones de uso Los datos de Wikimapia se pueden usar gratuitamente para uso no comercial. Posibilidades de integración API de acceso Dispone de una API en la que especificando determinados parámetros en la URL de la petición se pueden obtener los datos deseados. Información API http://wikimapia.org/api/ Cartografía Extensión Mundial. Aunque pueden existir zonas con cartografía limitada o nula. Calidad Media Teselado Sí Datos Extensión Mundial. Aunque pueden existir zonas con datos limitados o inexistentes.
53 Yahoo! Maps ( http://espanol.maps.yahoo.com/ ) Comentario general Actualmente los mapas de Yahoo han desaparecido. El servicio de mapas de Yahoo muestra directamente los mapas de Nokia. Por esto no se va a evaluar este servicio, ya que sería volver a evaluar el servicio de Nokia Maps. Fecha última revisión 28/01/2014 URL zona desarrolladores http://developer.yahoo.com/maps/ (En cierre) http://developer.here.com/javascript-apis Licencia URL licencia N/A Licencia de uso N/A Limitaciones de uso N/A Posibilidades de integración API de acceso N/A Información API N/A Cartografía Extensión N/A Calidad N/A Teselado N/A Datos Extensión N/A
54 Yandex Maps ( http://maps.yandex.ru/ ) Comentario general Yandex es una compañía de Internet rusa que gestiona el mayor motor de búsqueda en Rusia. En junio del 2.008 adquirió SMI, una agencia de monitorización de tráfico para unirla a su servicio de Maps. Nota: La información de este proveedor se ha obtenido usando un traductor automático de ruso al inglés, por lo que puede no ser del todo exacta. Fecha última revisión 28/01/2014 URL zona desarrolladores http://api.yandex.ru/maps/ http://api.yandex.com/maps/ Licencia URL licencia http://legal.yandex.ru/maps_api/ http://legal.yandex.com/maps_api/ (En su sitio informan de que la versión es inglés es sólo una traducción de la versión en ruso y que en caso de conflicto entre ambas, la que prevalecerá legalmente será lo que conste en la versión en ruso). Licencia de uso El servicio sólo puede ser usado en sitios con acceso público. No se puede usar para proyectos que requiera pago o que restrinjan el acceso a terceras partes. El usuario puede usar los datos y funciones obtenidos sólo en la funcionalidad ofrecida por el servicio. Yandex se reserva el derecho de fijar límites o restricciones en el tamaño, volumen, esquemas de color y el número de imágenes de mapas o de imágenes de satélites ofrecidas por el servicio. Estas modificaciones las pueden hacer sin previo aviso escrito a los usuarios. Yandex se reserva el derecho de incluir material promocional a su discreción. Además la licencia obliga al cumplimiento de la legislación de la Federación Rusa. Limitaciones de uso La función de Geocoding sólo puede ser usada por sitios que usen el servicio. El número de llamadas a esta función está limitado a 25.000 solicitudes al día. El usuario no puede usar el servicio para monitorización de vehículos que muestre información
55 en tiempo real o cualquier otro servicio relacionado con la gestión o planificación de vehículos. Yandex no establece ninguna limitación especial durante la fase de desarrollo. Únicamente existe algún problema en cuanto al uso de la clave de la API en un máquina de desarrollo (127.0.0.1 o localhost). Para ello Yandex, recomienda que si se quiere usar la clave de la API (no es obligatorio) se puede crear un dominio de segundo nivel del tipo http://dev.maps y pedir la clave de API para él. Posibilidades de integración API de acceso Sí Información API Dispone de la librería JavaScript API 2.x preparada para su uso también desde navegadores en dispositivos móviles táctiles. La API es compatible con los siguientes navegadores: Microsoft Internet Explorer 7.x o superior Mozilla Firefox 2.x o superior Opera 9.x o superior Apple Safari 3.1 o superior Google Chrome Яндекс.Браузер 1.0 Dispone de interfaz tipo REST para el acceso a algunos servicios como por ejemplo “metrika”. Cartografía Extensión Hasta hace unos meses la cartografía del servicio de Yandex estaba claramente dividida y diferenciada en dos según el idioma. Así se tenía el caso del sitio en su versión en ruso (http://maps.yandex.ru) en el que se centraba en la cartografía de Rusia y sus países próximos. Contando con una cartografía muy limitada para el resto del mundo. En cuanto al sitio en inglés (http://maps.yandex.com) su cartografía tenía más limitaciones en zonas de Rusia, pero sí que contaba con amplia cartografía del resto del mundo. Sin embargo, recientemente el servicio de Yandex ha experimentado algunos cambios, entre los que cabe destacar que actualmente tanto el servicio en la versión en ruso como el servicio en la versión en inglés cuentan con una cartografía completa que abarca una gran cantidad de países del mundo en los diferentes continentes. Respecto a las imágenes de satélite sigue siendo un tema pendiente, ya que sólo se encuentran en calidad
56 suficiente para los niveles más cercanos de zoom en áreas de Rusia. Calidad Calidad alta de la cartografía con información de gran parte del mundo. Respecto a la cobertura de satélite es alta en Rusia y países próximos, pero para el resto del mundo no están disponibles en todos los niveles de zoom. Teselado Sí Datos Extensión Dispone de cartografía extensa para casi todo el mundo exceptuando algunos países que disponen de una cartografía más limitada como puede ser el caso de Japón, Corea del Sur y por supuesto Corea del Norte para el que ningún servicio dispone de información completa. El servicio de Yandex cuenta además con datos adiciones como el estado del tráfico, que sólo está disponible en el territorio de Rusia o de algunos países cercanos.
57 Baidu Maps (http://map.baidu.com/) Comentario general Baidu es una compañía china que ofrece servicios web como por ejemplo un buscador o un servicio de mapas. Nota: La información de este proveedor se ha obtenido usando un traductor automático de chino al inglés, por lo que puede no ser del todo exacta. Fecha última revisión 28/01/2014 URL zona desarrolladores http://developer.baidu.com/map/ Licencia URL licencia http://developer.baidu.com/map/law.htm Licencia de uso Si se usa Baidu Maps para una aplicación comercial (como navegadores GPS, etc.) que directa o indirectamente se benefician, se necesita un acuerdo aparte con Baidu Maps. Para usar el servicio, tu sitio debe estar accesible para el público general y se debe ofrecer sin cargo. Se exige el compromiso de cumplir con las leyes, normas y regulaciones de la República Popular de China. Limitaciones de uso No hay limitación de solicitudes por día para cada mapa. Sin embargo, si una aplicación genera una carga excesiva en sus servidores por exceso de peticiones, Baidu map se reserva el derecho de limitar el número de peticiones según su propio criterio. No parece haber ningún tipo de limitación especial para el periodo de desarrollo de una aplicación que use la API. Posibilidades de integración API de acceso Sí. Información API Baidu Maps dispone de múltiples API JavaScript API Flash API Static graph API JavaScript open source library Android SDK iOS SDK
64 Petición de teselas de Bing: Figura C - 7 Diagrama de secuencia de petición de teselas de Bing. Petición de teselas de OSM: Figura C - 8 Diagrama de secuencia de petición de teselas de OSM.
65 Petición de teselas de WMS: Figura C - 9 Diagrama de secuencia de petición de teselas de WMS. El caso de Google Maps, funciona de manera diferente al resto de proveedores. Como se puede ver en el siguiente fragmento del diagrama de clases, la clase Google desciende EventPane en lugar de descender de la clase Grid como el resto de proveedores que se han mostrado en el fragmento del diagrama del comienzo de este apartado. Esto se debe a que no es posible pedir directamente las teselas a Google, por lo que es necesario delegar en su API. Figura C - 10 Diagrama de clases de la integración de Google en OpenLayers extendiendo de la clase EventPane. Esto se debe, a que OpenLayers está encapsulando la librería de Google. Para conseguir hacer funcionar esto, lo que se hace es interceptar los eventos que se producen sobre el mapa y pasar la información necesaria a los métodos correspondientes de la API de la librería de Google. Cuando se captura un evento, este se pasa a la clase de Google o a la v3 según la versión de los mapas de Google que se quiera usar (la v3 es la recomendada ya que la versión 2 se encuentra “deprecated”). Para ilustrar el funcionamiento de este sistema, se muestran a continuación
66 los diagramas de secuencia para los eventos de cambiar la capa visible actual por otra, arrastrar el mapa y para el zoom sobre el mapa. Google Maps – Cambio de capa visible: Figura C - 11 Diagrama de secuencia de cambio de capa visible con una capa de Google Maps de OpenLayers. Google Maps – Arrastrar mapa: Figura C - 12 Diagrama de secuencia de arrastrar mapa con capa de Google Maps de OpenLayers.
67 Google Maps – Zoom del mapa: Figura C - 13 Diagrama de secuencia de zoom del mapa con una capa de Google Maps de OpenLayers.
68 3. Vías para la integración de proveedores Para los proveedores de mapas que se van a usar como caso de uso, existen principalmente dos vías posibles a usar para la integración. Una es al estilo de las capas para Bing, OSM (extendiendo de XYZ) y la otra vía es usando la misma estructura que usa la librería de Google (extendiendo de EventPane). La integración al estilo Google se basa en encapsular la librería del proveedor de modo que las llamadas de la librería de OpenLayers desencadenen llamadas a la librería propietaria al interceptar los eventos que se produzcan sobre el mapa. La integración usando la clase XYZ como punto de partida se basa en la carga directa de las teselas desde el proveedor de mapas, de este modo la integración en la librería es completa y no requiere de librerías externas. Los siguientes diagramas de clase ilustran ambas posibilidades. Integración partiendo de la clase XYZ (Bing, OSM)
69 Integración partiendo de la clase EventPane (Google) Ambas vías tienen ventajas e inconvenientes, por lo que se trata de escoger aquella que pueda ser más adecuada para el uso que se le va a dar. Integración a través de XYZ Integración a través de EventPane Ventajas Ventajas - Integración completa en la librería. - No requiere de código externo. - Mayor control sobre la forma en que se muestran las teselas. - Posibilidad de uso de las capas para escribir información sobre otra capa (si permite transparencia). - Los cambios en la forma de hacer las peticiones de las teselas no afectan al funcionamiento del código de OpenLayers. - Permitiría hacer uso de las funciones avanzadas que pueda tener la API del proveedor. Desventajas Desventajas - Si el proveedor cambia la URL dónde se encuentran las teselas o su formato, podría dejar de funcionar y ser necesario modificarla con la nueva información. - Es necesario que el proveedor no tenga prohibido este uso de las teselas en sus condiciones de servicio. - Requiere de una librería externa (API del proveedor) para funcionar. - La encapsulación de la librería puede ir en contra de las condiciones de servicio del proveedor (Google no permite la encapsulación de su librería, aunque ha dado su consentimiento por escrito a OpenLayers para su uso de esta forma).
70 En conclusión, con la información obtenida, será recomendable siempre que sea posible una implementación extendiendo de la clase XYZ ya que permite una integración más completa en la librería. Sólo en los casos en que la integración a través de la clase XYZ no sea posible, se debería realizar la integración a través de la clase EventPane, o bien en aquellos casos en que se quieran usar funciones especiales de la librería del proveedor. 4. Diseño escogido para la integración Tomando en consideración la información del punto anterior, se usará la clase XYZ como base para la realización de los casos de uso de Yandex y Baidu para así conseguir una integración más completa en la librería. Los prototipos para ambos proveedores han mostrado que la integración usando esta vía es posible por lo que en principio, se descartaría la integración usando la clase EventPane por el coste adicional de esfuerzo que supondría su uso y la poca ventaja que ofrecería el mismo. Figura C - 14 Diseño base escogido para la integración de Yandex y Baidu. La clase XYZ permite cargar teselas desde una URL especificando un posición X e Y además un valor Z de zoom. Habitualmente los servicios de mapas como OpenStreetMap, Bing, Yandex… estructuran las teselas de modo que la tesela con X=0 e Y=0 quede en la esquina superior izquierda del mapa tal y como se ve en la siguiente imagen.
71 Figura C - 15 Distribución de teselas de servicios de mapas. La imagen corresponde concretamente a la distribución de teselas de Bing, pero Yandex utiliza la misma distribución al igual que OpenStreetMap. Sin embargo, en el caso de Baidu, las teselas están organizadas de diferente manera. Baidu toma como origen de coordenadas para las teselas la intersección entre la línea del ecuador y el meridiano de Greenwich. Esto implica que las teselas quedan organizadas en 4 cuadrantes, el primer cuadrante con signos positivos y el resto tendrá X o Y negativos según corresponda. Sin embargo, en la URL Baidu no admite las coordenadas de X o Y como número negativos, por lo que en lugar de un signo ‘-‘, utilizan la letra M. Esto supone que sea necesario comprobar si los valores X o Y de la tile son negativos y si lo son, obtener el valor absoluto y formar una cadena que contenga una letra M seguida de la coordenada de la tesela. La siguiente imagen muestra el mapa del mundo de Baidu y los diferentes cuadrantes. Figura C - 16 Distribución de teselas de Baidu para el nivel de zoom 0.
72 Figura C - 17 Distribución de teselas de Baidu para el nivel de zoom 3. En el caso de Yandex las URL son similares a otros servicios, y para la organización de las teselas se usa un sistema muy similar al usado por OpenStreetMap u otros servicios de mapas. 5. Diagrama de clases de la integración A continuación se va a ver el diagrama de clases de todas las clases que han sido añadidas a OpenLayers 2.12 para realizar la integración de Yandex y Baidu en la librería. El diagrama incluye las clases involucradas en las capas de tráfico de Yandex así como la capa de alertas de Baidu. También se puede ver la integración por dos vías de Baidu (Baidu que extiende XYZ y BaiduEvtPane que extiende de EventPane al igual que Google) usada para validar la integración.
73 Figura C - 18 Diagrama de clases de la integración de Yandex y Baidu.
80 perfectamente con las calculadas usando la librería proj4js especificando la proyección EPSG:3395. Por lo que en el proyecto finalmente se dejó integrada la librería proj4js para su uso. Además las funciones extraídas del libro de USGS se dejaron en el código para que sólo sean usadas en caso de que la librería de proj4js no estuviese disponible, así el código seguiría funcionando aunque no estuviese. Como ya se ha mencionado antes, Yandex dispone de teselas que contienen únicamente nombres y carreteras siendo el resto transparente. Estas teselas permiten superponer la información de las ubicaciones sobre imágenes de satélite. En el análisis inicial que se hizo del servicio, se pudo comprobar que esas teselas están disponibles para el parámetro lang con valor “ru_RU” y “en_US”. Ahora bien, como ya se ha comentado las teselas en ambos lenguaje contaban con limitaciones. La versión para inglés no disponía de teselas para niveles de zoom entre 0 y 4, además esta versión sólo disponía de información geográfica de países en el hemisferio norte y al oeste de Rusia. Las teselas se cargaban en “ru_RU” en el servicio en ruso de Yandex mientras que las de “en_US” en el servicio “.com”. Dado que ninguno de los servicios ofrecía una solución completa, se realizó un intento de unificar teselas de ambos servicios en la integración de Yandex en la librería. Para ello, se realizaron las modificaciones necesarias en la tesela de OpenLayers que usa la capa de Yandex de modo que en caso de que se produjese error al cargar una tesela se intentase cargar en el otro idioma. Esta solución funcionaba razonablemente bien por ejemplo al hacer zoom sobre Zaragoza desde el mapa en ruso de modo que cambiaba automáticamente a cargar las teselas de la versión en inglés. Sin embargo, esta solución no era suficientemente buena en las zonas colindantes entre ambos servicios. La siguiente imagen ilustra el problema que ocurría en zonas entre Europa y Rusia.
81 Figura D - 3 Problemática de combinación de teselas de Yandex en ruso e inglés para la capa de overlay. El problema mostrado en la imagen anterior consistía en que las teselas del servicio en inglés no contenían la misma información que las del servicio en ruso. El servicio en inglés tenía omitida parte de la información dejando un hueco vacío. Dado que la tesela si existía, pero estaba parcialmente vacía no existía una forma limpia de realizar este ajuste. Como se puede ver en la imagen anterior, por ejemplo Moscú no aparecía dibujado en las teselas en inglés por lo que al juntar las teselas de la capa de inglés y la de ruso quedaba la zona vacía que se comentaba. Desde la actualización que hizo Yandex de su servicio y que ya se ha comentado, esto dejó de ser necesario ya que ambos servicios compartían su cartografía. En cuanto a las teselas de nombres en ruso cabe señalar que tampoco tenían información completa, ya que no disponían de información detallada para algunos niveles de zoom en ciertas zonas. Por ejemplo, en el caso de Zaragoza, estas teselas sólo estaban disponibles para los niveles de zoom 0 al 13. A partir de este punto era necesario cambiar a la capa de nombres en inglés que si disponía de esa información. Dada esta situación se realizó una capa híbrida que intentaba unir ambos grupos de teselas. El funcionamiento de esta capa se detalla a continuación. En primer lugar es necesario especificar el idioma de preferencia para la capa (inglés o ruso). Este idioma de preferencia será el que se use para cargar las teselas, sin embargo, si al intentar cargar la tesela en ese idioma, se encuentra que no está disponible, se intenta cargar en el otro idioma. Esto ofrece una solución, funcional
82 aunque con algunos problemas en la zona limítrofe con Rusia por el motivo ya mencionado. Como ya se ha comentado esta solución era funcional, aunque presentaba ciertas deficiencias por las características del servicio de Yandex en ambos idiomas, sin embargo desde la actualización del servicio de Yandex mencionada, ha dejado esas capas híbridas sin ningún sentido ya que ahora es el servicio de Yandex el que está realizando esa funcionalidad al haber unificado la cartografía.
83 Anexo E. Problemática integración Baidu 1. Introducción Baidu es una compañía de servicios de China, entre ellos, ofrece un servicio de búsquedas y uno de mapas. Esta compañía ocupa el quinto lugar en tráfico a nivel mundial y el primero en China. El siguiente gráfico compara Baidu.com con el servicio de Google en China (Google.cn) entre enero y junio del 2013. Como se puede ver, Baidu tiene mucho más tráfico dentro de China que el servicio equivalente de Google (Fuente: http://www.alexa.com/siteinfo/). Figura E - 1 Comparativa de tráfico de Baidu y Google China. Si se realiza la comparación entre Baidu con Google a nivel mundial, Google si tiene mucho más tráfico. Sin embargo, en el ranking de tráfico a nivel mundial, Baidu se encuentra en el 5º puesto. Figura E - 2 Comparativa de tráfico de Baidu y Google.com. Esto convierte a Baidu en un objetivo interesante para su integración en la librería, debido al potencial de mercado que tiene y el público potencial al que puede llegar. Sin embargo existe una problemática asociada a su integración que se analizará en el siguiente punto.
84 2. Problemática para la integración de Baidu Baidu es uno de los mayores proveedores de mapas de China, y como ya se ha mencionado se encuentra relativamente próximo a los niveles de tráfico de Google a nivel mundial. Sin embargo, Baidu está ubicado en China y por tanto cumple con las normativas del gobierno chino al igual que cualquier otro proveedor que quiera operar en China. Esto tiene una consecuencia importante de cara a la integración de Baidu en la librería OpenLayers. El problema consiste en que el gobierno chino obliga a todos los proveedores de mapas a añadir un desplazamiento no lineal y no constante (GCJ-02 Fuente: http://developer.baidu.com/map/question.htm#qa004) en los mapas de forma que la ubicación real de las cosas queda enmascarada. Este proceso se conoce como encriptación geográfica. Además, para que funcionen correctamente las aplicaciones de hoy en día que usan mapas para posicionamiento y navegación, en China los dispositivos móviles añaden este desplazamiento, de esta manera sus usuarios pueden hacer uso de los mapas, sin embargo las coordenadas de las ubicaciones no coinciden con las coordenadas del sistema internacional usado por los GPS. Esta situación genera algunos casos particulares que se exploran más a fondo en el paper “Restricciones al trabajo con información geográfica online en China “redactado para las JIIDE 2013 que se incluye en el Anexo F. así como la normativa que afecta principalmente al proceso de creación de mapas. En el caso de Baidu el desplazamiento es todavía más notable, ya que además del desplazamiento obligado por el gobierno, añaden un segundo desplazamiento propio llamado BD-09 (Fuente: http://developer.baidu.com/map/question.htm#qa004) que altera todavía más las coordenadas del mapa. En China el ejército dispone de mapas que siguen las coordenadas internacionales, pero para que cualquier otro use el sistema de coordenadas internacionales en mapas, es necesario que se solicite una autorización al gobierno Chino justificando la necesidad de su uso. En la información de su API indican que disponen de una API especial de conversión de coordenadas. Se consultó con ellos y facilitaron el documento que se puede ver en el 0 Se realizaron pruebas sobre ese interfaz que se van a mostrar a continuación. Para probar el interfaz se realizó la conversión de coordenadas desde Google con su capa de satélite, OpenStreetMap y Bing. Para los tres servicios se cogió la misma ubicación geográfica que se trata de una esquina de la zona de la Ciudad Prohibida en Pekín.
85 Coordenadas en Google satélite Figura E - 3Coordenadas en el servicio de Google 116.39561 | 39.912331 URL Solicitud: http://api.map.baidu.com/ag/coord/convert?from=2&to=4&x=116.39561&y =39.912331 Respuesta: {"error":0,"x":"MTE2LjQwODIyNzM1MzQ=","y":"MzkuOTIwMDgzNzgzMjA1"} El interfaz devuelve las coordenadas codificadas en Base 64, por lo que al decodificar se obtiene: "x":"MTE2LjQwODIyNzM1MzQ” → 116.4082273534 "y":"MzkuOTIwMDgzNzgzMjA1" →39.920083783205 Si pasamos esas coordenadas al servicio de Baidu coincide la posición en ambas ubicaciones http://map.baidu.com/?latlng=39.920083783205,116.4082273534&title=A& content=A&autoOpen=false&l= Figura E - 4 Posición de las coordenadas en el servicio de Baidu.
86 Coordenadas en Bing satélite Figura E - 5Coordenadas en el servicio de Bing 116.395675 | 39.912335 URL Solicitud: http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.39562&y =39.91232 Respuesta: {"error":0,"x":"MTE2LjQwODIzNzQwNDU0","y":"MzkuOTIwMDcyOTE3NDMy" } Al decodificar se obtiene: "x":"MTE2LjQwODIzNzQwNDU0” →116.40829249488 "y":"MzkuOTIwMDcyOTE3NDMy" →39.920087733668 Si pasamos esas coordenadas al servicio de Baidu coincide la posición en ambas ubicaciones http://map.baidu.com/?latlng=39.920087733668,116.40829249488&title=A &content=A&autoOpen=false&l=
87 Figura E - 6 Posición de las coordenadas en el servicio de Baidu. Coordenadas en OpenStreetMap Figura E - 7Coordenadas en el servicio de OpenStreetMap116.39562 |39.91232 URL Solicitud: http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=116.39562&y =39.91232 Respuesta: {"error":0,"x":"MTE2LjQwODIzNzQwNDU0","y":"MzkuOTIwMDcyOTE3NDMy" } Al decodificar se obtiene: "x":"MTE2LjQwODIzNzQwNDU0” →116.40823740454 "y":"MzkuOTIwMDcyOTE3NDMy" →39.920072917432 Si pasamos esas coordenadas al servicio de Baidu coincide la posición en ambas ubicaciones
88 http://map.baidu.com/?latlng=39.920072917432,116.40823740454&title=A &content=A&autoOpen=false&l= Figura E - 8Posición de las coordenadas en el servicio de Baidu. Sin embargo, aunque la conversión de coordenadas EPSG:4326 (GPS) a coordenadas de Baidu funciona en su API de conversión, no se hace mención alguna a la conversión de coordenadas de Baidu a EPSG:4326, se consultó nuevamente con Baidu al respecto, pero su respuesta fue que lamentablemente no disponían de la función inversa de conversión de coordenadas, por lo que no es posible la conversión de coordenadas de Baidu a EPSG:4326.Dada esta información no se pudo implementar el uso de esta interfaz para el cálculo del centro del mapa al cambiar la capa de un servicio a otro, ya que el paso sólo podría ser unidireccional. Además, aunque se decidiese integrar esta conversión de coordenadas en sentido unidireccional, el número de peticiones que se le pueden hacer a esa API está limitado, por lo que tampoco podría ser una solución para el uso planteado por el número de peticiones que podrían llegar a hacerse. 3. Integración de Baidu en OpenLayers A la hora de integrar Baidu en OpenLayers, el primer paso es echar un vistazo al servicio de Baidu. Usando el plugin Tamper Data para Firefox al igual que en el caso de Yandex, examinaron las peticiones que hace su API para poder obtener las URLs de las teselas. Baidu dispone en su API, de tres grupos de teselas: Las teselas de la capa que contienen la información de calles sin transparencia, las de la capa de satélite que contiene fotografías aéreas y por último una capa que se superpone a la vista de satélite para aportar información de las calles sobre esa vista. Las URLs que han sido recogidas mediante el análisis del tráfico se detallan en la tabla que se muestra a continuación: Lista de URLs obtenidas de diferentes servicios que han sido integrados: Teselas del mapa: http://shangetu0.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu1.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu2.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44
89 http://shangetu3.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu4.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu5.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu6.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu7.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu8.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 http://shangetu9.map.bdimg.com/it/u=x=5;y=2;z=5;v=016;type=web&fm=44 Teselas capa satélite: http://shangetu0.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu1.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu2.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu3.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu4.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu5.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu6.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu7.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu8.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 http://shangetu9.map.bdimg.com/it/u=x=1;y=0;z=3;v=009;type=sate&fm=46 Teselas capa nombres chino (existen dos juegos de URLs funcionales): http://shangetu0.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu1.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu2.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu3.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu4.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu5.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu6.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu7.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu8.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://shangetu9.map.bdimg.com/it/u=x=1;y=0;z=3;v=015;type=trans&fm=47 http://online0.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online1.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online2.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online3.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online4.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online5.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online6.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online7.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online8.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 http://online9.map.bdimg.com/tile/?qt=tile&x=1&y=0&z=3&styles=sl&v=015 Una vez obtenidas las URLs, el siguiente paso sería ajustar las coordenadas para que un punto del mapa correspondiese con sus coordenadas reales en el mundo, sin embargo, dado que en China se aplica encriptación geográfica a los mapas, no es posible cumplir esto. En lugar de tratar de ajustar a las coordenadas reales, se ha realizado el ajuste con respecto a las coordenadas que proporciona la API de Baidu. OpenLayers necesita que una capa especifique el valor de su máxima extensión y la máxima resolución para poder mostrarse correctamente sus coordenadas. Además es necesario que la capa especifique la proyección en la que está para poder convertir coordenadas de un sistema a otro. A continuación se van a explicar cada uno de esos valores y como se han calculado.
96 Este documento presenta un breve análisis de las limitaciones técnicas impuestas por el gobierno chino a los servicios de mapas por Internet al amparo de su legislación altamente restrictiva. 2. Restricciones legales en China En esta sección se presenta un análisis de las leyes chinas [2] que puedan afectar directamente a la creación de información topográfica o cartográfica. Toda actividad relacionada con la topografía o cartografía en China entra en el ámbito de un organismo especial llamado National Administration of Surveying, Mapping and Geoinformation también conocido como State Bureau of Survey and Mapping (SBSM) [3]. Además existen ciertos aspectos especificados en la legislación China que implican también la participación del Ejército Popular de Liberación (también conocido como People’s Liberation Army o PLA [4]), ya que los mapas son considerados un asunto de seguridad nacional, dado que la divulgación secretos en los mapas de cualquier clase que pongan en peligro la soberanía o la seguridad del estado puede constituir un crimen y derivarse responsabilidades criminales dependiendo de la gravedad de la información. Si las circunstancias no son serias podría quedar en un multa entre 10.000 y 100.000 yuanes (entre 1.239,38309 y 12.393,8309 €), de lo contrario la multa podría ser de 100.000 a 500.000 yuanes (entre 12.393,8309 y 61.969,1546€) y además la expulsión del país. Toda organización, o persona de origen extranjero, que desee llevar cabo análisis geológicos o actividades relacionadas con los mapas en cualquier parte del territorio chino bajo la jurisdicción de la República Popular de China, debe en primer lugar solicitar una autorización al SBSM además de al departamento correspondiente del PLA. Además una vez obtenida la autorización, se debe realizar el proyecto en conjunto con los departamentos relevantes o unidades de la República Popular de China trabajando en conjunto con igualdad de condiciones o bien se les puede subcontratar el trabajo. La legislación China establece la restricción de que la información topográfica o cartográfica no puede contener secretos de estado o comprometer la seguridad del mismo. El gobierno chino define un sistema de referencia geodésico propio para todo su territorio que cuenta con la aprobación de seguridad del PLA. En caso de que sea realmente necesario usar un sistema de coordenadas no definido por las autoridades Chinas se debe autorizar su uso por parte del SBSM y por parte del departamento competente de topografía y cartografía del PLA. Una vez se ha completado un proyecto de topografía y cartografía se debe remitir la información recogida al SBSM. Este organismo en conjunto con el departamento correspondiente del PLA procederá a examinar la información referente a posiciones, elevaciones, profundidades, áreas y longitudes. Una vez se le dé el visto bueno a la información esta pasa al SBSM para su aprobación final. Adoptar un sistema de coordenadas sin autorización cuando se realizan las actividades de topografía y cartografía así como publicar información geográfica y datos relacionados con cualquier área bajo la jurisdicción de la República Popular de China puede suponer una multa de 100.000 yuan (12.393’8309 €). 3. Restricciones de los mapas en China Como ya se ha mencionado, el gobierno chino obliga a los proveedores de mapas a que apliquen una transformación a la información cartográfica de modo que no coincidan las coordenadas de sus mapas con los sistemas de coordenadas usados
97 por otros servicios. Esta transformación o encriptación geográfica que están obligados a aplicar los proveedores de mapas recibe el nombre de GCJ-02. Se da el caso también de que algunos proveedores de mapas aplican un segundo desplazamiento como el de Baidu que, según informa en su página web [5], aplica otro nivel más de desplazamiento llamado BD-09 para incrementar la privacidad de sus usuarios. Esta encriptación geográfica, no es reversible, es decir, existen por ejemplo formas para transformar coordenadas desde EPSG:4326 a BD-09 o a GCJ02 pero no existe función inversa que permita recuperar las coordenadas originales. A este respecto se preguntó directamente via correo electrónico al servicio de atención al cliente de Baidu y su respuesta fue que no es posible aplicar una transformación inversa. Esta situación en China genera problemas a los usuarios de servicios online que desean usar las coordenadas de un punto en un servicio e intentan pasarlas a otro servicio o en general al intentar combinar información de diferentes servicios. Aunque este problema existe también en proveedores de mapas online internacionales por el uso de diferentes sistemas coordenadas, en el caso de China, la situación se agraba debido a que como ya se ha mencionado en el apartado “RESTRICCIONES LEGALES EN CHINA” el gobierno chino tiene su propio sistema de referencio geodésico que cuenta con la aprobación del PLA. Ese sistema de referencia propio, es el que se tiene que usar allí a menos que se justifique la necesidad de usar un sistema de coordenadas distinto a los habitualmente autorizados y se apruebe su uso, tal y como consta en la legislación china. A continuación, para ilustrar la problemática de uso de información entre diferentes proveedores de mapas por Internet, se van a analizar varios de ellos y las diferentes coordenadas que se muestran en cada uno de ellos para una misma posición geográfica. Los servicios que se van a comparar se listan a continuación, así como el sistema de coordenadas usado en las coordenadas obtenidas en cada uno: Proveedor: Sistema de referencia: Unidad de medida: Google Maps EPSG:4326 Grados Bing Maps EPSG:4326 Grados OpenStreetMap EPSG:4326 Grados Baidu Maps GCJ-02 y BD-09 Grados Tabla 1: Resumen de proveedores analizados En primer lugar se van a mostrar las diferentes coordenadas obtenidas para un mismo punto geográfico ubicado en China para los servicios de la Tabla 1. Para comparar la información mostrada se va a usar como punto geográfico de referencia la esquina inferior derecha de la ciudad prohibida ya que resulta fácil de localizar visualmente en un mapa (Ver Figura 1). Figura 1: El punto rojo muestra la esquina usada como referencia geográfica.
98 Comenzamos el análisis con Google Maps (https://maps.google.es/), que habitualmente es considerado como un referente en información cartográfica en Internet. La figura 2 muestra las coordenadas que tiene el punto usado como referencia en la capa satélite de Google, sus coordenadas son (39.912331º, 116.395608º) y la figura 3 muestra esas coordenadas sobre la capa del mapa. Como se puede ver el punto no está en la misma zona en ambas imágenes. Figura 2: Punto de referencia marcado en la capa de satélite de Google. Figura 3: Coordenadas del punto de referencia en la capa de satélite sobre la capa del mapa de Google. Cómo se puede ver en las figuras 2 y 3 aunque las coordenadas son las mismas en ambas imágenes, el marcador no está situado en la misma posición visual en ambas capas. En la figura 4 se muestra la posición del punto de referencia en la capa mapa de Google, las coordenadas son: (39.913767º, 116.401876º). La diferencia entre las coordenadas de la capa satélite y la capa mapa es de: (Δ0.001436º, Δ0.006268º) Figura 4: Coordenadas del punto de referencia en la capa de mapa de Google. Sin embargo, Google ha resuelto esta diferencia para su servicio de mapas en China (http://ditu.google.cn/). Al contrario de lo que ocurre en los servicios de mapas de Google usados en el resto del mundo, la versión de mapas de Google en China hace coincidir el desplazamiento de la capa del mapa con la capa de satélite, haciendo que ambas capas trabajen en el mismo sistema de coordenadas. Este
99 comportamiento se puede ver en las figuras 5 y 6 (las coordenadas usadas en ambas son 39.913767º, 116.401876º) en las que el error entre la posición en la capa mapa y la satélite es mucho menor al error presente en el servicio normal de Google, aunque sigue existiendo una desviación entre ambas capas. Figura 5: Coordenadas del punto de referencia en la capa de mapa de Google China. Figura 6: Coordenadas del punto de referencia en la capa de mapa de Google China sobre la capa de Satélite de Google China. A continuación se va a ver el caso de Bing Maps. Bing Maps no dibuja en la capa mapa la ciudad prohibida, por lo que no se puede usar para comparar con el punto de referencia que estábamos usando. Por ello, se muestran a continuación las coordenadas del punto de referencia de la ciudad prohibida en la capa satélite de Bing(figura 7) para seguidamente realizar la comparación en Bing con otro punto de referencia geográfico. Figura 7: Coordenadas del punto de referencia (39.912331º, 116.395680º) en la capa de satélite de Bing. El nuevo punto de referencia elegido para Bing se encuentra en la avenida justo delante de la ciudad prohibida. La figura 8 muestra el nuevo punto de referencia abajo a la izquierda en color verde y el punto de referencia del resto de proveedores en rojo en la parte superior derecha.
100 Figura 8: Nuevo punto de referencia para Bing Maps. Figura 9: Coordenadas del punto de referencia de Bing (39.908413º, 116.392248º) en la capa de calles de Bing. Figura 10: Coordenadas del punto de referencia de Bing (39.906124º, 116.389478º) en la capa de satélite de Bing.
101 Figura 11: Desplazamiento entre capa de calles y satélite de Bing marcado con las flechas rojas. El siguiente proveedor a valorar es OpenStreetMap. OSM es diferente de otros proveedores dado que son los usuarios los que construyen el mapa de forma colaborativa. Esta forma de proceder les da cierto grado de independencia, en este caso, del gobierno chino, por lo que sus mapas no contienen el desplazamiento obligado por la legislación de China. La figura 12 muestra la posición del punto de referencia en los mapas de OpenStreetMap. Las coordenadas de ese punto en OpenStreetMap son (39.912331º, 116.395608º). Figura 12: El marcador muestra la posición de 39.912331º, 116.395608º en OSM (http://www.openstreetmap.org/?mlat=39.912331&mlon=116.395608&zoom=18). Por último se va a analizar la posición del punto de referencia en Baidu. Este caso tiene el añadido de que además de la encriptación geográfica GCJ-02 se aplica un segundo nivel propio de Baidu llamado BD-09 por lo que los desplazamientos pueden variar más. En este caso sólo se van a mostrar las coordenadas en la capa de satélite de Baidu (Figura 10) ya que coincide perfectamente con la capa de calles de Baidu. Figura 10: El marcador 1 muestra la posición del punto en Baidu 39.92015º, 116.408269º.
102 A modo de resumen, se incluyen a continuación tres tablas que recogen la información mostrada hasta este punto. La Tabla 2 contiene un resumen de las coordenadas correspondientes a la posición usada como referencia para cada uno de los proveedores y capas analizadas. Con la información de la Tabla 2 se han construido las Tablas 3 y 4 que muestran las desviaciones existentes entre cada uno de los casos analizados medidas en grados y expresadas en valores absolutos. La Tabla 3 muestra las desviaciones para los valores de latitud, y la Tabla 4 para longitud. Todos los datos recogidos a continuación son datos obtenidos en los interfaces web de cada proveedor, de forma manual, de modo que se puede dar un pequeño margen de error por error humano al hacer los clics en cada uno de ellos (margen de pocos pixels). Proveedor Capa Abreviació n Latitud Longitud Sistema ref: Google Calles GCal 39.913767 º 116.401876 º EPSG:4326 Google Satélite GSat 39.912331 º 116.395608 º EPSG:4326 Google China Calles GCnC 39.913767 º 116.401876 º EPSG:4326 Google China Satélite GCnS 39.913738 º 116.401855 º EPSG:4326 Bing Satélite BingS 39.912331 º 116.395680 º EPSG:4326 Bing Calles punto ref2 BingC2 39.908413 º 116.392248º EPSG:4326 Bing Satélite punto ref2 BingS2 39.906124 º 116.389478º EPSG:4326 OSM Calles OSM 39.912331 º 116.395608 º EPSG:4326 Baidu Calles y Satélite BaiH 39.92015º 116.408269 º GCJ-02 y BD09 Tabla 2: Resumen de coordenadas del punto de referencia para los diferentes proveedores analizados. GCa l GSat GCnC GCnS BingS BingC 2 BingS2 OSM BaiH GCal 0 0,00143 6 0 0,00002 9 0,00143 6 - - 0,00143 6 0,00638 3 GSat 0 0,00143 6 0,00140 7 0 - - 0 0,00781 9 GCnC 0 0,00002 9 0,00143 6 - - 0,00143 6 0,00638 3 GCnS 0 0,00140 7 - - 0,00140 7 0,00641 2 BingS 0 - - 0 0,00781 9 BingC 0 0,00228 - -
103 2 9 BingS2 0 - - OSM 0 0,00781 9 BaiH 0 Tabla 3: Diferencias de latitud entre los diferentes servicios (valores absolutos y expresados en grados), las celdas marcadas con “-“ no se comparan por haberse usado otro punto de referencia para las coordenadas. GCa l GSat GCnC GCnS BingS BingC 2 BingS2 OSM BaiH GCal 0 0,00626 8 0 0,00002 1 0,00619 6 - - 0,00626 8 0,00639 3 GSat 0 0,00626 8 0,00624 7 0,00007 2 - - 0 0,01266 1 GCnC 0 0,00002 1 0,00619 6 - - 0,00626 8 0,00639 3 GCnS 0 0,00617 5 - - 0,00624 7 0,00641 4 BingS 0 - - 0,00007 2 0,01258 9 BingC 2 0 0,00277 0 - - BingS2 0 - - OSM 0 0,01266 1 BaiH 0 Tabla 4: Diferencias de longitud entre los diferentes servicios (valores absolutos y expresados en grados), las celdas marcadas con “-“ no se comparan por haberse usado otro punto de referencia para las coordenadas. Para concluir, se van a analizar los desplazamientos que ocurren en los diferentes proveedores para 4 ubicaciones diferentes de China: Beiging, Lhasa, Xi’an y Guangzhou ubicadas donde se puede ver en la Figura 11.
104 Figura 11: Muestra las ubicaciones de las ciudades analizadas. La tabla 5 muestra la información recogida para la 4 ubicaciones. Para cada una de ellas se han tomado las coordenadas de una misma posición geográfica tomada como referencia en los diferentes servicios(columna proveedor) y sus respectivas capas (columna capa). Las columnas “Latitud”, “Longitud” muestran las coordenadas obtenidas para esa ubicación utilizando la API del proveedor indicado. La columna “Sistema ref” Indicia el sistema de referencia en el que están las coordenadas de latitud y longitud. Para realizar la valoración de los posibles desplazamientos, se comparan las coordenadas de cada capa de cada proveedor con la capa satélite de Google. Esta comparación se realiza obteniendo el valor absoluto de la diferencia entre las coordenadas de ambas capas y se muestra en las columnas “OffsetLat” (diferencia de latitud) y “OffsetLong” (diferencia de longitud). Proveedor Capa Latitud Longitud Sistema ref OffsetLat OffsetLong B Google Calles 39,90759 116,395728 EPSG:4326 0,001506 0,006281 e Google Satélite 39,906084 116,389447 EPSG:4326 0,000000 0,000000 i Google China Calles 39,907586 116,395726 EPSG:4326 0,001502 0,006279 g Google China Satélite 39,907586 116,395726 EPSG:4326 0,001502 0,006279 i Bing Calles 39,908412 116,392246 EPSG:4326 0,002328 0,002799 n Bing Satélite 39,906102 116,389536 EPSG:4326 0,000018 0,000089 g OSM Calles 39,906084 116,389447 EPSG:4326 0,000000 0,000000 Baidu Calles y Satélite 39,913809 116,402091 GCJ-02 y BD09 0,007725 0,012644 Google Calles 29,652491 91,121445 EPSG:4326 0,002657 0,001588 L Google Satélite 29,655148 91,119857 EPSG:4326 0,000000 0,000000 h Google China Calles 29,652447 91,121445 EPSG:4326 0,002701 0,001588 a Google China Satélite 29,652447 91,121445 EPSG:4326 0,002701 0,001588 s Bing Calles 29,65249 91,121445 EPSG:4326 0,002658 0,001588 a Bing Satélite 29,655158 91,119862 EPSG:4326 0,000010 0,000005 OSM Calles 29,655148 91,119857 EPSG:4326 0,000000 0,000000 Baidu Calles y Satélite 29,65832 91,128054 GCJ-02 y BD09 0,003172 0,008197 Google Calles 34,259427 108,947033 EPSG:4326 0,001529 0,004651
105 X Google Satélite 34,260956 108,942382 EPSG:4326 0,000000 0,000000 i Google China Calles 34,259418 108,94703 EPSG:4326 0,001538 0,004648 ' Google China Satélite 34,259418 108,94703 EPSG:4326 0,001538 0,004648 a Bing Calles 34,259459 108,94703 EPSG:4326 0,001497 0,004648 n Bing Satélite 34,260945 108,942434 EPSG:4326 0,000011 0,000052 OSM Calles 34,260956 108,942382 EPSG:4326 0,000000 0,000000 Baidu Calles y Satélite 34,265687 108,953517 GCJ-02 y BD09 0,004731 0,011135 G u a n g z h o u Google Calles 23,098866 113,252909 EPSG:4326 0,002692 0,005348 Google Satélite 23,101558 113,247561 EPSG:4326 0,000000 0,000000 Google China Calles 23,098851 113,252914 EPSG:4326 0,002707 0,005353 Google China Satélite 23,098851 113,252914 EPSG:4326 0,002707 0,005353 Bing Calles 23,09885 113,252911 EPSG:4326 0,002708 0,005350 Bing Satélite 23,101609 113,24758 EPSG:4326 0,000051 0,000019 OSM Calles 23,101558 113,247561 EPSG:4326 0,000000 0,000000 Baidu Calles y Satélite 23,104904 113,25941 GCJ-02 y BD09 0,003346 0,011849 Tabla 5: Coordenadas y desplazamientos respecto a la capa de satélite de Google para las 4 ubicaciones analizadas.
112 Uso offline Sí. Pero no ofrece navegación offline a menos que se prepare previamente la ruta cuando se disponga de conexión a Internet. Al crear la ruta se puede seleccionar que esté disponible de forma desconectada, haciendo que se descarguen las teselas correspondientes para su uso en la ruta cuando se esté en modo offline. Fecha análisis 27/06/2013 Osmdroid Descripción Osmdroid proporciona herramientas y vistas para interactuar con los datos de OpenStreetMap. URL https://code.google.com/p/osmdroid/ Licencia del código Apache License 2.0 Cartografía Usa la información de OpenStreetMap. Uso offline Sí. Permite el uso de mapas offline habiendo descargado previamente las teselas de algún servicio de mapas como OpenStreetMap usando algún programa como el Mobile Atlas Creator. Los archivos creados con este programa se han de copiar al teléfono para ser usados por la aplicación. No permite el uso de información vectorial descargada que pueda ser renderizada en tiempo real. Fecha análisis 27/06/2013 Mapsforge Descripción El proyecto de Mapsforge proporciona software gratuito y abierto para aplicaciones basadas en OpenStreetMap. En la página de OpenStreetMap se detalles los pros y contras del uso de esta librería, se reproducen a continuación : + Fast on-device rendering of OpenStreetMap data + Powerful and flexible overlay API + Compact file format for map data storage + Support for multi-touch gestures (e.g. pinch-to-zoom) + Very high details (support for ~ 200 OSM tags) + Runs on all devices with Android 1.5 and
113 higher + Small library (~ 400 KB, including sources and images) + Easy to use API (similar to Google Maps for Mobile API) + 100% free and open source (LGPL license) - Sub-optimal rendering of water areas URL https://code.google.com/p/mapsforge/ http://wiki.openstreetmap.org/wiki/Mapsforge Licencia del código GNU Lesser GPL Cartografía Usa la información de OpenStreetMap. Permite usar información vectorial para renderizarla en el dispositivo móvil en la visualización. Uso offline Sí. Mapsforge dispone de mapas descargables para todo el mundo en la URL http://download.mapsforge.org/maps/ . En el caso del mapa para España su última actualización es del 9 de mayo del 2013. Si se quiere, es posible crear mapas para Mapsforge usando un plugin especial para la aplicación Osmosis que permita generar un archivo con información vectorial compatible. Estos mapas, son mapas vectoriales, y ocupan relativamente poco espacio, el fichero con la información para el mapa de España tiene un tamaño de 205 MB. Fecha análisis 27/06/2013 OsmAnd (OSM Automated Navigation Directions) Descripción Este proyecto está destinado a ofrecer visionado de mapas y navegación en dispositivos móviles. URL https://code.google.com/p/osmand/ Licencia del código GNU GPL v3 Cartografía Usa la información de OpenStreetMap. Uso offline Sí. OsmAnd es una aplicación de código abierto (GPLv3) que permite el uso de mapas de OpenStreetMap tanto de forma online como de forma offline descargando los mapas desde la propia aplicación. Los mapas offline pueden ser descargados desde la propia aplicación por países. Los mapas de esta aplicación son mapas vectoriales, ya que son de tamaño reducido y se puede apreciar cómo se
114 renderizan en la visualización. Fecha análisis 27/06/2013 Conclusiones Después del análisis realizado, se ha escogido la librería de Mapsforge por ser la que se adapta mejor a las necesidades y al tipo de licencia. Una de las razones por las que también se ha escogido Mapsforge es porque disponen de un servidor con mapas de OpenStreetMap para las diferentes regiones del mundo, por lo que simplifica mucho el uso de diferentes mapas. Además tampoco se está limitado al uso de sus mapas, si no que existen las herramientas necesarias para crear mapas para cualquier región de la que OpenStreetMap disponga de información.
115 Anexo I. Análisis de Mapsforge En este anexo se realiza un análisis de la librería escogida para la integración en la librería de GeosLab para Android. 1. ¿Qué es Mapsforge? Mapsforge es una librería para Android de código abierto (bajo licencia GNU Lesser GPL). Se trata de una librería que permite el uso de mapas vectoriales de OpenStreetMap. Los mapas vectoriales tienen la ventaja de que ocupan muy poco espacio en el dispositivo, ya que la información se renderiza en el propio dispositivo. La desventaja que tienen este tipo de mapas, es que son más costosos de visualizar al tener que dibujar la tesela para mostrarla en pantalla, en Mapsforge, este problema se intenta aliviar usando una cache en la que se guardan las teselas ya pintadas mientras sea posible (existen restricciones de tamaño máximo ocupado).El proyecto de Mapsforge se inició en el año 2008 por el “Computer science institute of Freie Universität Berlin”. Mapsforge soporta el renderizado de mapas offline y online de OSM, overlays, planificación de rutas. Soporta también gestos multi-touch como el uso de “pinch” para hacer zoom. La API sigue una estructura similar a la API de Google Maps para móviles y su tamaño es bastante reducido unos 300 KB. 2. ¿Cómo funciona Mapsforge? Mapsforge tiene dos modos de funcionamiento, el modo online y el offline. El modo online muestra las teselas descargándolas del servicio de mapas de Mapnik conforme son necesarias. Este modo evidentemente requiere de conexión a internet para poder llevar a cabo la descarga. El modo offline en cambio, no requiere de conexión a internet, ya que en lugar de descargar teselas, lo que hace es acceder a un archivo que tiene que estar en el almacenamiento del teléfono. Ese archivo contiene la información de la región que se quiere visualizar en formato vectorial. Al ser información vectorial lo que se almacena en el archivo ocupa mucho menos espacio que si se estuvieran almacenando las teselas directamente, pero tiene la desventaja de que visualizar una tesela en el mapa a partir de la información vectorial del archivo es más costoso en tiempo ya que tiene que accederse a la información y renderizarla antes de poder mostrarla. La alternativa offline, es una buena opción para dispositivos que por la razón que sea no disponen o no desean estar conectados a internet, permitiendo almacenar en el dispositivo el archivo para la región que se va a usar (para el mapa de España de fecha 25 de julio de 2013 ocupa 208 MB). De cara a agilizar el dibujado de las teselas en modo offline, Mapsforge utiliza una cache tanto en memoria como en el almacenamiento del dispositivo móvil para guardar las que han sido generadas y así ahorrar tiempo en los dibujados. Ahora bien, esta caché no es infinita y por tanto tiene un tamaño limitado en el que ir almacenándolas. En la siguiente página se muestra la estructura general de Mapsforge de las clases más básicas. La clase ubicada en “test.example.offlineosm.MainActivity”
116 sería un ejemplo de uso tanto para el caso online como el offline. Es una clase que tiene que tiene que extender de la clase “org.mapsforge.android.maps.MapActivity” y tiene que implementar el método onCreate. En ese método es donde va el código necesario para inicializar la librería bien en el modo online u offline según se requiera el desarrollador. Figura I - 1Diagrama de clases con las relaciones entre las clases básicas de Mapsforge.
117 A continuación se muestran dos diagramas para el uso de la librería en modo online y offline. Figura I - 2 Diagrama de secuencia del uso de Mapsforge en modo online.
118 Figura I - 3 Diagrama de secuencia del uso de Mapsforge en modo offline.
119 Durante la creación de MapView se inicializan todos los elementos necesarios para el funcionamiento de la librería. En el siguiente diagrama de secuencia, se muestra la creación de los elementos que se consideran más importantes durante la creación de MapView. Figura I - 4 Diagrama de secuencia de la inicialización de los elementos de Mapsforge necesarios por parte de su clase MapView.
120 Finalmente, el dibujado del mapa en la pantalla del dispositivo se muestra en el siguiente diagrama. En la parte inferior del diagrama se puede ver que al poner el contenido de la vista, se dispara el evento de cambio de tamaño. Cuando esto ocurre, se llama al método “redraw”, que en este acaba añadiendo trabajos para el dibujado de las teselas correspondientes a la zona visible en la pantalla. Figura I - 5 Diagrama de secuencia de la inicialización de los elementos de Mapsforge necesarios por parte de su clase MapView además del inicio del dibujado de las teselas.
121 3. Vías para la integración en la librería Android de GeosLab La siguiente imagen, muestra la estructura de la librería de GeosLab en la que se va a integrar Mapsforge. Figura I - 6 Diagrama de clases de la librería de GeosLab para Android. Teniendo en cuenta esta estructura, y después de la información obtenida en el análisis, se han encontrado dos posibles vías de integración. La opción 1 sería crear una clase que extienda de la clase Layer o Grid de la librería de GeosLab y que haga las llamadas necesarias a la clase “MapView” de Mapsforge. La opción 2 sería crear una clase que extienda de Layer o Grid de GeosLab y que esa clase
128 Figura I - 10Diagrama de secuencia de la carga de teselas de las capas basadas en teselas de OpenStreetMap como OSM o Mapquest.
129 Figura I - 11Diagrama de secuencia de la carga de teselas utilizando las clases de la librería de Mapsforge y la información del archivo del mapa en el dispositivo.
130 Anexo J. Casos de uso En este anexo se van a mostrar los casos de uso creados para ambas partes y la funcionalidad en conjunto de ambos. 1. Parte Web El caso de uso de la parte Web se ha configurado para que muestre todas las capas que se han creado en OpenLayers así como otras capas de referencia como las de Google, u OpenStreetMap. La siguiente imagen muestra todas las capas seleccionables. Como capas base se pueden elegir las capas de Yandex del mapa en ruso y en inglés, Yandex satélite, Google Streets, Google Satélite, OpenStreetMap, mapa de Baidu, satélite de Baidu, y la capa del mapa integrada mediante la API de Baidu. Como capas de overlay están disponibles la siguiente capas: la capa que muestra los nombres del mapa de Baidu para usar con otras capas base como la de satélite y las alertas de Baidu (ambas sólo son seleccionables cuando se tiene como capa base una capa de Baidu), la capa de tráfico de Yandex que muestra los semáforos con la congestión del tráfico y en niveles más cercanos de zoom muestra las teselas que muestran visualmente la congestión del tráfico por calles, la capa de información del tráfico de Yandex que permite mostrar la velocidad en cada calle mediante un popup, las capas de nombres de Yandex que contienen la información del mapa usando transparencias de modo que se pueda superponer a otra capa base como por ejemplo una capa de satélite. Por último, está disponible también la capa de nombres de Baidu para usarla sobre una capa de satélite por ejemplo. Figura J - 1 Imagen que muestra todas las capas disponibles. El desplegable superior permite seleccionar la capa base, y el desplegable de la parte inferior permite seleccionar la capa de overlay.
131 A continuación se muestra una imagen de cada una de las capas de Yandex y Baidu que se han integrado en OpenLayers por el trabajo realizado en este PFC. Capas base: a) Yandex mapa en Ruso Figura J - 2Mapa mostrando la capa del mapa de Yandex en ruso. b) Yandex mapa en inglés Figura J - 3Mapa mostrando la capa del mapa de Yandex en inglés.
132 c) Yandex satélite Figura J - 4 Mapa mostrando la capa de satélite de Yandex. d) Baidu mapa Figura J - 5 Mapa mostrando la capa de mapa de Baidu.
133 e) Baidu satélite Figura J - 6 Mapa mostrando la capa de satélite de Baidu f) Baidu mapa usando la API Figura J - 7 Mapa mostrando la capa de mapa de Baidu de su API.
134 Overlays: a) Baidu alertas Figura J - 8 Mapa mostrando la capa de alertas de Baidu Figura J - 9 Ejemplo de una incidencia ocurrida en China mostrada sobre el mapa tomando la información de una incidencia del servicio de Baidu. Si el usuario lo desea, es posible usar herramientas de traducción automática como la incluida en el navegador Google Chrome para traducir la información de la incidencia de forma automática.
135 b) Yandex tráfico Figura J - 10Mapa mostrando la capa de tráfico de Yandex. En la imagen se muestran semáforos de varios tipos. Los semáforos con código de colores indican el nivel de congestión del tráfico, mientras que los semáforos de menor tamaño que tienen los 3 colores sólo indican la presencia del servicio de tráfico en esa ciudad, aunque no dispone de información global del tráfico. Figura J - 11La imagen de la izquierda corresponde al aviso mostrado al hacer clic sobre un semáforo con código de colores. En esta información se incluye la ciudad sobre la que se ha realizado el clic, la última actualización de la información de tráfico, el nivel de carga del tráfico (sólo disponible en ciudades con semáforo de código de colores) así como una tendencia del tráfico. Además en el popup se incluye un enlace que permite acceder directamente al nivel de zoom en el que se muestra el tráfico por calles en esa zona. La imagen de la derecha corresponde a la información mostrada por los semáforos de menor tamaño que tienen los 3 colores.
136 Figura J - 12 Mapa mostrando la capa de tráfico con la información de la congestión del tráfico a nivel de calles. c) Yandex información del tráfico Figura J - 13 Mapa mostrando la capa de tráfico de Yandex además de la capa de información de tráfico de Yandex que muestra la velocidad en los diferentes tramos al pasar el ratón sobre ese punto.
137 d) Yandex nombres del mapa en ruso Figura J - 14Mapa mostrando la capa de nombres en ruso de Yandex usando como capa base la capa de satélite de Yandex. e) Yandex nombres del mapa en inglés Figura J - 15Mapa mostrando la capa de nombres en inglés de Yandex usando como capa base la capa de satélite de Yandex.
144 La Figura J - 28 muestra dos rutas de ejemplo utilizando los respectivos mapas de Mapsforge como capas base. Figura J - 28 La imagen de la izquierda muestra una ruta de ejemplo en Moscú cargada sobre el mapa offline de Mapsforge de Rusia. La imagen de la derecha muestra una ruta de ejemplo en Beijing (Pekín) sobre el mapa offline de Mapsforge de China.
145 Anexo K. Resumen de horas del PFC En este anexo se incluye un resumen de las horas que se han dedicado al desarrollo de este PFC. En total se han dedicado más de 1563 horas a todo el PFC. Todas las tareas del proyecto se han clasificado en varias categorías (Documentación, implementación, configuración y puesta en marcha, análisis y formación). La siguiente tabla muestra las horas realizadas de cada una de las categorías mencionadas. Categorías: Horas totales: Análisis y diseño 446,833333333333 Configuración y puesta en marcha 39,5833333333333 Documentación 244,433333333333 Formación 48,1 Implementación 784,333333333333 Total: 1563,28333333333 Distribución de horas de la parte Web Categorías: Horas totales: Análisis y diseño 243,666666666667 Configuración y puesta en marcha 36,6666666666667 Documentación 88,75 Formación 29,6833333333333 Implementación 590 Total: 988,766666666667
146 Distribución de horas de la parte Android Categorías: Horas totales: Análisis y diseño 193,166666666667 Configuración y puesta en marcha 2,91666666666667 Documentación 60,75 Formación 3 Implementación 194,333333333333 Total: 454,166666666667
147 Distribución de horas en tareas no exclusivas de Web o Android. Categorías: Horas totales: Análisis y diseño 10 Documentación 94,9333333333333 Formación 15,4166666666667 Total: 120,35 Por último se incluye la lista de todas las tareas realizadas a lo largo del PFC además de un gráfico de barras dónde se puede ver una comparación del tiempo dedicado a cada una de esas tareas Tarea Horas totales Puesta en marcha inicial 2,75 Lectura de OpenGIS WMS 1.3.0 Implementation Specification 6,25 Curso WMS_JIDEE 9,16666666666667 Formación Open Layers 15,2166666666667 Análisis de proveedores de mapas 26,4166666666667 Lectura RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1) 3,21666666666667 Instalación y puesta en marcha de tomcat-maven 3 Maven 10,1666666666667 Interfaz REST 4 Estudiar cómo integra OpenLayers los proveedores 11,9166666666667 Revisión documento análisis proveedores (Nokia - Here) 3 Propuesta PFC 10 Android 10,25 Análisis de OpenLayers 107,75 Análisis integración Yandex y Baidu 91 Implementación prototipo Yandex y Baidu 355 Organización y limpieza código OpenLayers 15 Análisis proveedores mapas offline 4 Implementación capas de tráfico de Yandex 155 Creación de video demostrativo integración Yandex 11 Documentación de la problemática encontrada con la capa de 18
148 tráfico de Yandex Problemática mapas China 17 Problemática mapa Yandex 9 Integración Baidu y Yandex con lib IAAA 54,5 Problemática mapa Baidu 18 Análisis proveedores mapas offline 38 Revisión errores documento problemática mapa Baidu 1,5 Preparación paper JIDEE mapas China 2,5 Análisis Mapsforge (Diagramas UML) 53 Valoración opciones de integración Mapsforge 20 Análisis Mapsforge 115,5 Corrección en iaaaLib de cambios en URLs por parte de Baidu 1 Instalación y puesta en marcha de URL Relay 11,0833333333333 Análisis Mapsforge (Diagramas UML) 0,916666666666667 Modificaciones al paper mapas en China 9,66666666666667 Análisis y documentación del nuevo servicio Baidu de incidencias. 1,08333333333333 Configuración de eclipse para integración de Mapsforge 0,916666666666667 Ajustes a la máquina virtual del Tomcat para dejarla ya lista definitivamente 2,91666666666667 Diagramas UML resultado final OpenLayers. 3,58333333333333 Unificación de información 6,25 Puesta en marcha de la máquina virtual de OL y detección problema en capa de Yandex 2,5 Ajustes en Yandex por cambio en las URLs de las imágenes de los semáforos 1 Integración de Mapsforge en librería de GeosLab 136,333333333333 Caso de uso Android 36,5 Integración alertas Baidu 8,5 Correcciones caso de uso Android 6,5 Documentación código Android y backups completo PFC 5 Modificaciones en guardado ruta para que use JSON 1,5 Modificaciones en caso de uso Android (rutas JSON y GPS) 8,5 Creación de SplashScreen en Android 2 Documentación Android 21,5 Memoria 94,9333333333333 Total: 1563,28333333333
149
150 5. Bibliografía [1] Curso WMS JIDEE Jorge Álvarez Poza y Javier Eced Cerdán (iaaa - Universidad de Zaragoza) [2] Guía de OpenLayers 1.2 Jorge Álvarez Poza (iaaa - Universidad de Zaragoza) [3] OpenGIS WMS 1.3.0 Implementation Specification Open Geospatial Consortium Inc. [4] RFC2616 (Hypertext Transfer Protocol -- HTTP/1.1) Internet Engineering Task Force (IETF) [5] Wikipedia Fundación Wikimedia [6] REST vs WebServices Rafael Navarro Marset - Universidad Politécnica de Valencia http://users.dsic.upv.es/~rnavarro/NewWeb/docs/RestVsWebService s.pdf [7] WGS84 [8] http://wiki.openstreetmap.org/wiki/ OpenStreetMap [9] The Mercator projections Peter Osborne [10] Map Projections - A working manual US Geological Survey Professional paper 1395 by John P. Snyder http://pubs.er.usgs.gov/publication/pp1395 [11] Guía y referencias de desarrollo Android Google http://developer.android.com/
151 6. Glosario EPSG Corresponde a las siglas de European Petroleum Survey Group (1986-2005). En el 2005 este grupo fue absorbido por la International Association of Oil & Gas Producers (OGP). El grupo estaba formado por especialistas en geodesia, topografía y la catografía aplicadas en relación a la explotación petrolífera. Este grupo compiló y difundió el conjunto de parámetros geodésicos EPSG, una base de datos ampliamente usada que contiene elipsoides, datums, sistemas de coordenadas, proyecciones cartográficas, etc. Dialog Elemento que permite la interacción entre el usuario y un programa informático. Habitualmente se trata de elementos que tienen características bloqueantes y que no permiten realizar otras acciones con la aplicación hasta que se han cerrado. Un ejemplo de esto puede ser los avisos de error que utilizan muchas aplicaciones, o por ejemplo el selector de ficheros en aplicaciones en Java llamado “JFileChooserDialog”. Encriptación geográfica Método que consiste en la aplicación de una fórmula no lineal a unas coordenadas, de modo que estas queden desplazadas respecto a su posición original. En el caso de China, se aplica este método a toda su cartografía pública de modo que las coordenadas de sus mapas no coinciden con las coordenadas usadas por el sistema GPS internacionalmente. Geodesia Ciencia que estudia la forma y dimensiones de la Tierra. Esto incluye la determinación del campo gravitatorio externo de la Tierra y la superficie del fondo oceánico. También incluye la orientación y posición de la tierra en el espacio. GPS Sistema de posicionamiento global que utiliza diferentes satélites en órbita sobre la Tierra para averiguar la posición del usuario sobre la superficie del planeta. El sistema fue desarrollado por el Departamento de Defensa de EEUU aunque actualmente es usado en gran parte de los dispositivos móviles y de navegación en todo el mundo. JSON Corresponde a las siglas de JavaScript Object Notation. Es un formato ligero para el intercambio de datos usando texto plano. Es un subconjunto de la notación literal de objetos de JavaScript y que no requiere el uso de XML. Licencia BSD Se trata de una licencia de software permisiva como puede ser el caso de la OpenSSL o bien la MIT License. Esta licencia permite el uso del código fuente en software no libre.
152 Licencia LGPLv3 Se trata de una licencia creada por la Free Software Foundation que pretende garantizar la libertad de compartir y modificar el software cubierto por ella. Esta licencia permite el uso del código fuente en software no libre. Multi-thread Corresponde a la posibilidad de ejecución de múltiples tareas separadas en diferentes hilos de ejecución. De esta manera es posible llegar a ejecutar código simultáneamente si lo permite la arquitectura que ejecuta el código. OSM Abreviatura utilizada comúnmente para referirse a OpenStreetMap. Proyección Técnica usada para construir la representación bidimensional de la Tierra. Dado que la Tierra es un elipsoide no existe una forma perfecta de representar la Tierra sobre un plano en dos dimensiones, por lo que existen multitud de proyecciones cada una con sus características. Proyección Mercator Proyección creada por Gerardus Mercator en 1569 y que actualmente es usada por multitud de servicios de mapas online en alguna de sus variantes. Google por ejemplo utiliza la proyección llamada Web Mercator, y Yandex utiliza la proyección Mercator elíptica. OGC Corresponde a las siglas de Open Geospatial Consortium que es grupo de organizaciones públicas y privadas y que ha creado varias especificaciones usadas ampliamente en servicios de mapas como pueden ser: GML, KML, WFS, WMS, WCS, CSW. Tesela Porción de un mapa correspondiente a un fragmento de él. Habitualmente en los servicios web de mapas, toda la cartografía se divide en una cuadrícula. Cada elemento de esa cuadrícula es una tesela y suelen tener un tamaño de 256x256 pixels. La finalidad de esta fragmentación en el mapa es optimizar recursos ya que al estar el mapa dividido en fragmentos, sólo es necesario enviar al usuario aquellos que requiera según el área del mapa que esté visualizando y el nivel de zoom que use. Thread Corresponde a la secuencia más pequeña de instrucciones que pueden ser manejadas de forma independiente por el sistema operativo. Se pueden separar ciertos comportamientos de la aplicación en diferentes hilos (Multithreading) para así no dejar el interfaz gráfico del usuario congelado mientras se hacen operaciones. Tile Palabra usada en inglés para denominar una tesela. Web Mapping Corresponde al proceso de diseñar, aplicar, generar y visualizar mapas ofrecidos por Sistemas de Información Geográfica (GIS o SIG) a través de Internet.
153 WMS Estándar definido por el OGC que produce mapas de datos referenciados especialmente, de forma dinámica a partir de información geográfica. A partir de la información de la solicitud se genera una imagen habitualmente en PNG, GIF, o JPG, aunque también podría ser posible usar en algunos servicios gráficos vectoriales en formato SVG o WebCGM. XML Siglas de eXtensible Markup Language. Se trata de un lenguaje de marcas desarrollados por el World Wide Web Consortium (W3C) y que se utiliza para almacenar o intercambiar datos en un formato legible. XYZ Arquitectura usada por multitud de servicios de Webmapping en la que el mundo se divide mediante una cuadrícula. A cada elemento de la cuadrícula se le asigna unas coordenadas con números enteros X e Y que indican la tesela dentro de la matriz. Estas coordenadas X, Y son propias de cada nivel de zoom, ya que habitualmente con cada nivel zoom se incrementa el número de teselas que representan el mundo. El número de teselas para la X o la Y del mundo para un nivel dado se suele calcular como 2zoom de modo que para nivel de zoom 0 se tendría que habría 20=1 tesela, para 21=2 y así sucesivamente.