SIGATEX Móvil

Post on 22-May-2015

1.386 views 0 download

Tags:

description

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

Transcript of SIGATEX Móvil

SIG para dispositivos móviles de la Junta de Extremadura

Alumno: ALBERTO ROMEU (aromeu@prodevelop.es)Director empresa: MIGUEL MONTESINOS (mmontesinos@prodevelop.es)Tutor UPV: VICENTE PELECHANO (pele@dsic.upv.es)

Índice

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

Toolkit)

Í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

Introducción

GIS Dispositivos móviles

Introducción - Objetivo Visor

cartografía Extremadura

+ Rutas + POI + GPS

Introducción - Objetivo

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

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

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

Contexto

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

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

Navegar mapaDesplazar (4

direcciones)Zoom másZoom menos

Centrar mapaGPSCualquier punto

(Geometría)

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

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

Mostrar POI Buscar POI Consultar

información

Análisis de requisitos - Casos de uso de GPS

Obtener localización Detener GPS

Arquitectura

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)

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

LWUIT – Light Weight User Interface Toolkit

LWUIT Swing para

dispositivos móviles Light Weight Superar la

fragmentación IU 1 JAR para todos

los dispositivos MVC, Container +

Layouts, List...

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

Casos de uso de cartografía

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

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

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

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

Lado: 256px BoundingBox Resolución

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

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

CU Cartografía - Caché en disco

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

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

CU Cartografía - Navegar por el mapa

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

CU Cartografía - Centrar el mapa

CU Cartografía - Centrar el mapa (II)

Multi-threading

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

Casos de uso de Rutas

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

Casos de uso de rutas -Modelo de geometrías

Colecciones de Features

Feature = Geometría + metadatos

Geometría = Coordenadas + pintado

Casos de uso de rutas - DTE de una ruta

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

Ruta con N puntos: inicio + n ptos paso

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

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.

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

Casos de uso de rutas - Cálculo de rutas

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

Casos de uso de Puntos de interés

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

Casos de uso POI - Bucket PR-Quadtree

Quadtree: Cada cuadrante se subdivide en 4

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

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

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

(J2SE).

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

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)

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

Casos de uso POI - POI

Casos de uso POI - Tareas BackGround POI

Cada tarea resuelve un caso de uso

Quicksort para ordenar resultados

50 primeros resultados

Casos de uso POI - Visualizar POI

Casos de uso de GPS

Casos de uso de GPS

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

Casos de uso de GPS – Clases

Un hilo dedicado para GPS

Conversión de EPSG:4326 a EPSG:23030

Com.henson.midp.Float11

Casos de uso de GPS – DTE

Despliegue

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

de botellaEs importante probar sobre dispositivos

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

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

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

Siguientes pasos gvSIG Mini

Visor WMS, WMS-c, OSM

Cliente YOURSCliente NameFinderGPLMás eficiente y más

compatible

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

GRACIAS