sig para dispositivos móviles de la junta de extremadura alumno: alberto romeu...
TRANSCRIPT
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])
Í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 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