SIGATEX Móvil

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

description

Presentación del PFC - SIGATEX Móvil en la Facultad de Informática de Valencia

Transcript of SIGATEX Móvil

Page 1: SIGATEX Móvil

SIG para dispositivos móviles de la Junta de Extremadura

Alumno: ALBERTO ROMEU ([email protected])Director empresa: MIGUEL MONTESINOS ([email protected])Tutor UPV: VICENTE PELECHANO ([email protected])

Page 2: SIGATEX Móvil

Índice

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

Toolkit)

Page 3: SIGATEX Móvil

Índice (II)

Desarrollo de la aplicaciónCasos de uso de cartografíaCasos de uso de rutasCasos de uso de puntos de interésCasos de uso de GPS

Despliegue Conclusiones Demo

Page 4: SIGATEX Móvil

Introducción

GIS Dispositivos móviles

Page 5: SIGATEX Móvil

Introducción - Objetivo Visor

cartografía Extremadura

+ Rutas + POI + GPS

Page 6: SIGATEX Móvil

Introducción - Objetivo

Que funcione en muchos dispositivos (teléfonos, smartphone, blackberry, etc.)

Page 7: SIGATEX Móvil

Introducción - Retos

Conocer tecnología: J2ME, CLDC, LWUIT, índices espaciales, GIS, GPS, WMS, GeoJSON...

Desarrollar para dispositivos móvilesPoca memoriaPoca capacidad de procesamiento

Desarrollar a tiempo: Fecha límite

Page 8: SIGATEX Móvil

Contexto

Adaptación del SIG de la Junta de Extremadura: Consejería de Cultura y TurismoDifundir conocimiento sobre recursos

turísticos y culturales a través del Software Libre

Prodevelop + Igo software + GeoDatum + Software Colaborativo

Financiado con fondos FEDER

Page 9: SIGATEX Móvil

Contexto

Page 10: SIGATEX Móvil

Análisis de requisitos

Un único actor: TURISTA 4 bloques:

Casos de uso de CartografíaCasos de uso de RutasCasos de uso de puntos de interés (POI)Casos de uso de GPS

Page 11: SIGATEX Móvil

Análisis de requisitos - Casos de uso de Cartografía

Navegar mapaDesplazar (4

direcciones)Zoom másZoom menos

Centrar mapaGPSCualquier punto

(Geometría)

Page 12: SIGATEX Móvil

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

Page 13: SIGATEX Móvil

Análisis de requisitos - Casos de uso de Puntos de interés

Mostrar POI Buscar POI Consultar

información

Page 14: SIGATEX Móvil

Análisis de requisitos - Casos de uso de GPS

Obtener localización Detener GPS

Page 15: SIGATEX Móvil

Arquitectura

Page 16: SIGATEX Móvil

J2ME – Java para móviles Configuración

CLDC 1.1Coma flotante

PerfilMIDP 2.0

Paquetes opcionalesJSR-75 (Ficheros)JSR-172 (Web

services)JSR-179 (Location

API)

Page 17: SIGATEX Móvil

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

Page 18: SIGATEX Móvil

LWUIT – Light Weight User Interface Toolkit

Page 19: SIGATEX Móvil

LWUIT Swing para

dispositivos móviles Light Weight Superar la

fragmentación IU 1 JAR para todos

los dispositivos MVC, Container +

Layouts, List...

Page 20: SIGATEX Móvil

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

Page 21: SIGATEX Móvil

Casos de uso de cartografía

Page 22: SIGATEX Móvil

Casos de uso de cartografía Cliente WMS-c Arquitectura tiles Caché tiles El proceso de pintado Diseño de casos de uso Multi-Threading

Page 23: SIGATEX Móvil

Casos de uso de cartografía Desarrollo de un

cliente WMS-c: Web Map Service – caché

Cartografía cacheada: tiles

Niveles de zoom predeterminados

Sólo implementamos operación GetMap

Page 24: SIGATEX Móvil

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

Page 25: SIGATEX Móvil

CU Cartografía - ¿Qué es un Tile/Tesela?

Lado: 256px BoundingBox Resolución

Page 26: SIGATEX Móvil

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

Page 27: SIGATEX Móvil

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

Page 28: SIGATEX Móvil

CU Cartografía - Caché en disco

Acceso a disco es lento¿Cómo acelerar el acceso a caché?Extrapolar Quadkeys al sistema de ficheros

Page 29: SIGATEX Móvil

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

Page 30: SIGATEX Móvil

CU Cartografía - Navegar por el mapa

Page 31: SIGATEX Móvil

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

Page 32: SIGATEX Móvil

CU Cartografía - Centrar el mapa

Page 33: SIGATEX Móvil

CU Cartografía - Centrar el mapa (II)

Page 34: SIGATEX Móvil

Multi-threading

Page 35: SIGATEX Móvil

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

Page 36: SIGATEX Móvil

Casos de uso de Rutas

Page 37: SIGATEX Móvil

Casos de uso de Rutas

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

Page 38: SIGATEX Móvil

Casos de uso de rutas -Modelo de geometrías

Colecciones de Features

Feature = Geometría + metadatos

Geometría = Coordenadas + pintado

Page 39: SIGATEX Móvil

Casos de uso de rutas - DTE de una ruta

Ruta con 2 puntos: inicio + [paso | fin]

Ruta con N puntos: inicio + n ptos paso

Page 40: SIGATEX Móvil

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

Page 41: SIGATEX Móvil

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.

Page 42: SIGATEX Móvil

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

Page 43: SIGATEX Móvil

Casos de uso de rutas - Cálculo de rutas

Page 44: SIGATEX Móvil

Casos de uso de rutas - Obtener indicaciones de ruta

Las propiedades de la ruta se guardan en memoriaCálculo de indicaciones y giros en localMás rápido que acceder al servicio webPeor en dispositivos con poca memoria

Page 45: SIGATEX Móvil

Casos de uso de Puntos de interés

Page 46: SIGATEX Móvil

Casos de uso de Puntos de interés 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

Page 47: SIGATEX Móvil

Casos de uso POI - Bucket PR-Quadtree

Quadtree: Cada cuadrante se subdivide en 4

Criterio de división: Número de elementos > 100

Page 48: SIGATEX Móvil

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

Page 49: SIGATEX Móvil

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

(J2SE).

Page 50: SIGATEX Móvil

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

Page 51: SIGATEX Móvil

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

CoordenadaX CoordenadaY Categoría OffSetDescripción double (8 bytes) double (8 bytes) short (2 bytes) short (2 bytes)

Page 52: SIGATEX Móvil

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

Page 53: SIGATEX Móvil

Casos de uso POI - POI

Page 54: SIGATEX Móvil

Casos de uso POI - Tareas BackGround POI

Cada tarea resuelve un caso de uso

Quicksort para ordenar resultados

50 primeros resultados

Page 55: SIGATEX Móvil

Casos de uso POI - Visualizar POI

Page 56: SIGATEX Móvil

Casos de uso de GPS

Page 57: SIGATEX Móvil

Casos de uso de GPS

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

Page 58: SIGATEX Móvil

Casos de uso de GPS – Clases

Un hilo dedicado para GPS

Conversión de EPSG:4326 a EPSG:23030

Com.henson.midp.Float11

Page 59: SIGATEX Móvil

Casos de uso de GPS – DTE

Page 60: SIGATEX Móvil

Despliegue

Compilación + Preverificación Emulación + Profiler: Detectar cuellos

de botellaEs importante probar sobre dispositivos

Ofuscación + Firma (¿Opcional?) Empaquetado (JAD + JAR)

Page 61: SIGATEX Móvil

Conclusiones

‘write once, run everywhere’ == FALSEFragmentación de dispositivo == TRUE

(aunque cada vez menos)

Inconvenientes de J2ME:Modelo de seguridad: certificados +

permisosPaquetes opcionalesOperadoras: Tráfico Internet caroImpotencia del desarrollador

Page 62: SIGATEX Móvil

Conclusiones (II)

Éxito en el desarrolloLa 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

Page 63: SIGATEX Móvil

Siguientes pasos gvSIG Mini

Visor WMS, WMS-c, OSM

Cliente YOURSCliente NameFinderGPLMás eficiente y más

compatible

Page 64: SIGATEX Móvil

Siguientes pasos (II) gvSIG Mini Android

SO Libre de GoogleTeléfonos (HTC,

Motorola, Samsung...), PDA, Tablet PC, ...

Basado en Java 1.4Más recursosMas capacidad de

procesamientoGPL

Page 65: SIGATEX Móvil

GRACIAS