SIG para dispositivos móviles de la Junta de Extremadura Alumno: ALBERTO ROMEU Director empresa: MIGUEL MONTESINOS

1 SIG para dispositivos móviles de la Junta de Extremadur...
Author: Gabriel Moreno Giménez
0 downloads 2 Views

1 SIG para dispositivos móviles de la Junta de Extremadura Alumno: ALBERTO ROMEU ([email protected]) Director empresa: MIGUEL MONTESINOS ([email protected])[email protected] Tutor UPV: VICENTE PELECHANO ([email protected])

2 Índice  Introducción  Contexto  Análisis requisitos  Arquitectura  J2ME (Java para dispositivos móviles)  LWUIT (Light Weight User Interface Toolkit)

3 Índice (II)  Desarrollo de la aplicación Casos de uso de cartografía Casos de uso de rutas Casos de uso de puntos de interés Casos de uso de GPS  Despliegue  Conclusiones  Demo

4 Introducción GISDispositivos móviles

5 Introducción - Objetivo  Visor cartografía Extremadura  + Rutas  + POI  + GPS

6 Introducción - Objetivo  Que funcione en muchos dispositivos (teléfonos, smartphone, blackberry, etc.)

7 Introducción - Retos  Conocer tecnología: J2ME, CLDC, LWUIT, índices espaciales, GIS, GPS, WMS, GeoJSON...  Desarrollar para dispositivos móviles Poca memoria Poca capacidad de procesamiento  Desarrollar a tiempo: Fecha límite

8 Contexto  Adaptación del SIG de la Junta de Extremadura: Consejería de Cultura y Turismo Difundir conocimiento sobre recursos turísticos y culturales a través del Software Libre  Prodevelop + Igo software + GeoDatum + Software Colaborativo  Financiado con fondos FEDER

9 Contexto

10 Análisis de requisitos  Un único actor: TURISTA  4 bloques: Casos de uso de Cartografía Casos de uso de Rutas Casos de uso de puntos de interés (POI) Casos de uso de GPS

11 Análisis de requisitos - Casos de uso de Cartografía  Navegar mapa Desplazar (4 direcciones) Zoom más Zoom menos  Centrar mapa GPS Cualquier punto (Geometría)

12 Análisis de requisitos - Casos de uso de Rutas  Establecer inicio  Establecer fin  Establecer paso  Eliminar punto paso  Calcular  Anular  Selección tipo ruta: a pie o en coche  Obtener indicaciones  Selección puntos ruta

13 Análisis de requisitos - Casos de uso de Puntos de interés  Mostrar POI  Buscar POI  Consultar información

14 Análisis de requisitos - Casos de uso de GPS  Obtener localización  Detener GPS

15 Arquitectura

16 J2ME – Java para móviles  Configuración CLDC 1.1 Coma flotante  Perfil MIDP 2.0  Paquetes opcionales JSR-75 (Ficheros) JSR-172 (Web services) JSR-179 (Location API)

17 J2ME – Java para móviles  Fragmentación de dispositivo  ¿Cómo evitar la fragmentación? J2ME Polish (Framework Open source) Sun LWUIT Open source (Objetivo: 1 solo jar) Compatibilidad vs Complejidad: Buenas prácticas  No se puede soportar TODOS los dispositivos

18 LWUIT – Light Weight User Interface Toolkit

19 LWUIT  Swing para dispositivos móviles  Light Weight  Superar la fragmentación IU  1 JAR para todos los dispositivos  MVC, Container + Layouts, List...

20 Desarrollo de la aplicación  Casos de uso de cartografía  Casos de uso de rutas  Casos de uso de puntos de interés  Casos de uso de GPS

21 Casos de uso de cartografía

22  Desarrollo de un cliente WMS-c: Web Map Service – caché  Cartografía cacheada: tiles  Niveles de zoom predeterminados  Sólo implementamos operación GetMap

23 CU Cartografía - Arquitectura cliente WMS-c  Map: tamaño + Eventos  Layer: Capa base + vectorial  Grid: Gestión de tiles  Tile: Imagen + posición en píxels  ViewPort: píxel coordenadas  Extent == BoundingBox

24 CU Cartografía - ¿Qué es un Tile/Tesela?  Lado: 256px  BoundingBox  Resolución

25 CU Cartografía - Grid – Gestión de tiles  Cálculo de tamaño máximo en tiempo de ejecución  Liberar recursos  Gestión de peticiones

26 CU Cartografía - Caché de teselas  Acelerar carga de teselas  Disminuir acceso a Internet  3 niveles Memoria: Pequeña – 2 niveles de zoom Disco: Todo lo que se pueda Internet: Lo que no está en memoria ni en disco

27 CU Cartografía - Caché en disco Acceso a disco es lento ¿Cómo acelerar el acceso a caché? Extrapolar Quadkeys al sistema de ficheros

28 CU Cartografía - El proceso de pintado  Se inicia en Form  El mapa recorre sus capas: 1. Para la capa base: el grid recorre los tiles y pinta la imagen 2. Para la vectorial: Se recorren las geometrías y se pintan  Se pinta un acetato

29 CU Cartografía - Navegar por el mapa

30 CU Cartografía - Navegar por el mapa (II)

31 CU Cartografía - Centrar el mapa

32 CU Cartografía - Centrar el mapa (II)

33 Multi-threading

34 Multi-Threading  J2ME no gestiona bien hilos  Patrón ThreadPool  Evitar bloquear IU  Cancelación de tareas  Mejor gestión de hilos  1 tarea por cada operación bloqueante

35 Casos de uso de Rutas

36  Definir un modelo de geometrías  Establecer una máquina de estados  Comunicación con el servidor vía servicios web SOAP  Seleccionar un formato de intercambio de geometrías

37 Casos de uso de rutas -Modelo de geometrías  Colecciones de Features  Feature = Geometría + metadatos  Geometría = Coordenadas + pintado

38 Casos de uso de rutas - DTE de una ruta  Ruta con 2 puntos: inicio + [paso | fin]  Ruta con N puntos: inicio + n ptos paso

39 Casos de uso de rutas - Servicio web SOAP  Interoperabilidad: Comunicación con visor web y visor móvil  Buena práctica: Dispositivos móviles como clientes de servicios pesados  Cliente SOAP: Se configura en tiempo de compilación

40 Casos de uso de rutas - GeoJSON  JSON: JavaScript Object Notation.  GeoJSON: Especificación JSON para codificar geometrías.  Más sencillo que XML.  Formato ligero: requiere poca codificación y procesamiento  Fácil de parsear y hay muchas implementaciones.

41 Casos de uso de rutas - Cálculo de rutas  Entrada: Geometría MultiPoint se convierte a GeoJSON MultiPoint  Salida: GeoJSON MultiLineString se convierte a Geometría MultiLineString

42 Casos de uso de rutas - Cálculo de rutas

43 Casos de uso de rutas - Obtener indicaciones de ruta Las propiedades de la ruta se guardan en memoria Cálculo de indicaciones y giros en local Más rápido que acceder al servicio web Peor en dispositivos con poca memoria

44 Casos de uso de Puntos de interés

45  20.000 puntos de interés turístico: Categoría + Descripción + Localización  Cambio en los requisitos: los POI se gestionarán en local  Fuente: Fichero de texto  Diseño de una estructura de datos eficiente: Quadtree  Pre-procesar el fichero fuente para optimizar recursos

46 Casos de uso POI - Bucket PR-Quadtree  Quadtree: Cada cuadrante se subdivide en 4  Criterio de división: Número de elementos > 100

47 Casos de uso POI - Pre-procesado 1. Recorrer el fichero fuente y llenar el Quadtree (J2SE). 2. Persistir cada hoja en un fichero 3. Persistir descripciones en ficheros diferentes: Acceso aleatorio. 4. Persistir la información del Quadtree en un árbol

48 Casos de uso POI - Pre-procesado (II)  Recorrer el fichero fuente y llenar el Quadtree (J2SE).

49 Casos de uso POI - Pre-procesado (III)  Persistir cada hoja en un fichero  Cada fichero pocos KB  Mejor leer ficheros pequeños que uno grande

50 Casos de uso POI - Pre-procesado (IV)  Persistir descripciones en ficheros diferentes: (Pseudo)Acceso aleatorio  offset / tamFichero 80.000/1024 = Fichero número 78  offset % tamFichero 80.000 % 1024 = byte 128

51 Casos de uso POI - Pre- procesado (V)  Persistir la información del Quadtree en un árbol  Para una búsqueda devuelve una colección de ficheros  Deserializar ficheros en background

52 Casos de uso POI - POI

53 Casos de uso POI - Tareas BackGround POI  Cada tarea resuelve un caso de uso  Quicksort para ordenar resultados  50 primeros resultados

54 Casos de uso POI - Visualizar POI

55 Casos de uso de GPS

56  Centrar el mapa en la posición del GPS  JSR-179: Location API

57 Casos de uso de GPS – Clases  Un hilo dedicado para GPS  Conversión de EPSG:4326 a EPSG:23030  Com.henson.midp.Float1 1

58 Casos de uso de GPS – DTE

59 Despliegue  Compilación + Preverificación  Emulación + Profiler: Detectar cuellos de botella Es importante probar sobre dispositivos  Ofuscación + Firma (¿Opcional?)  Empaquetado (JAD + JAR)

60 Conclusiones  ‘write once, run everywhere’ == FALSE Fragmentación de dispositivo == TRUE (aunque cada vez menos)  Inconvenientes de J2ME: Modelo de seguridad: certificados + permisos Paquetes opcionales Operadoras: Tráfico Internet caro Impotencia del desarrollador

61 Conclusiones (II)  Éxito en el desarrollo La aplicación cumple los requisitos (de manera eficiente) Funciona en muchos (no en todos) los dispositivos ○ BlackBerry, Windows Mobile (JVM - J9), Nokia S60, Sony Ericsson, etc. III Jornadas SIG Libre - Girona

62 Siguientes pasos  gvSIG Mini Visor WMS, WMS-c, OSM Cliente YOURS Cliente NameFinder GPL Más eficiente y más compatible

63 Siguientes pasos (II)  gvSIG Mini Android SO Libre de Google Teléfonos (HTC, Motorola, Samsung...), PDA, Tablet PC,... Basado en Java 1.4 Más recursos Mas capacidad de procesamiento GPL

64 GRACIAS