SIG para dispositivos móviles
                               de la Junta de Extremadura




Alumno: ALBERTO ROMEU (aromeu@...
Índice
 Introducción
 Contexto
 Análisis requisitos
 Arquitectura
 J2ME (Java para dispositivos móviles)
 LWUIT (Lig...
Índice (II)
   Desarrollo de la aplicación
     Casos de uso de cartografía
     Casos de uso de rutas
     Casos de u...
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...
 Desarr...
Contexto
   Adaptación del SIG de la Junta de
    Extremadura: Consejería de Cultura y
    Turismo
     Difundir conocim...
Contexto
Análisis de requisitos
 Un único actor: TURISTA
 4 bloques:
     Casos de uso de Cartografía
     Casos de uso de Ruta...
- Casos de uso de
Análisis de requisitos

Cartografía
                            Navegar mapa
                          ...
Análisis de requisitos   - Casos de uso de
Rutas
                                      Establecer inicio
                ...
- Casos de uso de
Análisis de requisitos

Puntos de interés
                          Mostrar POI
                       ...
Análisis de requisitos   - Casos de uso de GPS
                                  Obtener localización
                   ...
Arquitectura
J2ME – Java para móviles
   Configuración
     CLDC 1.1
     Coma flotante
   Perfil
     MIDP 2.0
   Paquetes
    o...
J2ME – Java para móviles
 Fragmentación de dispositivo
 ¿Cómo evitar la fragmentación?
     J2ME Polish (Framework Open...
LWUIT – Light Weight User
Interface Toolkit
LWUIT
   Swing para
    dispositivos móviles
   Light Weight
   Superar la
    fragmentación IU
   1 JAR para todos
  ...
Desarrollo de la aplicación
 Casos de uso de cartografía
 Casos de uso de rutas
 Casos de uso de puntos de interés
 Ca...
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 d...
Casos de uso
de cartografía
 Desarrollo de un
  cliente WMS-c: Web
  Map Service –
  caché
 Cartografía
  cacheada: tile...
CU Cartografía   - Arquitectura cliente WMS-c
                                    Map: tamaño +
                         ...
- ¿Qué es un
CU Cartografía

Tile/Tesela?
                  Lado: 256px
                  BoundingBox
                 ...
CU Cartografía   - Grid – Gestión de tiles
                            Cálculo de tamaño
                             máx...
CU Cartografía   - Caché de teselas
                            Acelerar carga de
                             teselas
  ...
CU Cartografía   - Caché en disco




 Acceso a disco es lento
 ¿Cómo acelerar el acceso a caché?
 Extrapolar Quadkeys al ...
CU Cartografía   - El proceso de pintado
                               Se inicia en Form
                              ...
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
            ...
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...
Casos de uso de rutas   -Modelo de
geometrías
                                  Colecciones de
                          ...
Casos de uso de rutas   - DTE de una ruta


                                             Ruta con
                       ...
Casos de uso de rutas   - Servicio web SOAP
 Interoperabilidad: Comunicación con
  visor web y visor móvil
 Buena prácti...
Casos de uso de rutas   - GeoJSON
 JSON: JavaScript Object Notation.
 GeoJSON: Especificación JSON para
  codificar geom...
Casos de uso de rutas   - Cálculo de rutas




    Entrada: Geometría MultiPoint se convierte
     a GeoJSON MultiPoint
 ...
Casos de uso de rutas   - Cálculo de rutas
- Obtener
Casos de uso de rutas

indicaciones de ruta




        Las propiedades de la ruta se guardan en 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 ...
Casos de uso POI   - Bucket PR-Quadtree
                            Quadtree: Cada
                             cuadrante...
Casos de uso POI   - Pre-procesado
1. Recorrer el fichero fuente y llenar el
   Quadtree (J2SE).
2. Persistir cada hoja en...
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 ficher...
Casos de uso POI      - Pre-procesado (IV)
    Persistir descripciones en ficheros
     diferentes: (Pseudo)Acceso aleato...
- Pre-
Casos de uso POI

procesado (V)
 Persistir la
  información del
  Quadtree en un
  árbol
 Para una búsqueda
  dev...
Casos de uso POI   -
POI
Casos de uso POI   - Tareas BackGround POI
                                Cada tarea
                                 re...
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
   ...
Casos de uso de GPS   – DTE
Despliegue
 Compilación + Preverificación
 Emulación + Profiler: Detectar cuellos
  de botella
     Es importante proba...
Conclusiones
   ‘write once, run everywhere’ == FALSE
     Fragmentación de dispositivo == TRUE
     (aunque cada vez me...
Conclusiones (II)
   Éxito en el desarrollo
     La aplicación cumple los requisitos (de
      manera eficiente)
     F...
Siguientes pasos
   gvSIG Mini
     Visor WMS, WMS-c,
        OSM
       Cliente YOURS
       Cliente NameFinder
    ...
Siguientes pasos (II)
   gvSIG Mini Android
     SO Libre de Google
     Teléfonos (HTC,
        Motorola,
        Sams...
GRACIAS
Upcoming SlideShare
Loading in …5
×

SIGATEX Móvil

1,681 views

Published on

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

3 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,681
On SlideShare
0
From Embeds
0
Number of Embeds
68
Actions
Shares
0
Downloads
28
Comments
3
Likes
0
Embeds 0
No embeds

No notes for slide

SIGATEX Móvil

  1. 1. 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)
  2. 2. Índice  Introducción  Contexto  Análisis requisitos  Arquitectura  J2ME (Java para dispositivos móviles)  LWUIT (Light Weight User Interface Toolkit)
  3. 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. 4. Introducción GIS Dispositivos móviles
  5. 5. Introducción - Objetivo  Visor cartografía Extremadura  + Rutas  + POI  + GPS
  6. 6. Introducción - Objetivo  Que funcione en muchos dispositivos (teléfonos, smartphone, blackberry, etc.)
  7. 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. 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. 9. Contexto
  10. 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. 11. - Casos de uso de Análisis de requisitos Cartografía  Navegar mapa  Desplazar (4 direcciones)  Zoom más  Zoom menos  Centrar mapa  GPS  Cualquier punto (Geometría)
  12. 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. 13. - Casos de uso de Análisis de requisitos Puntos de interés  Mostrar POI  Buscar POI  Consultar información
  14. 14. Análisis de requisitos - Casos de uso de GPS  Obtener localización  Detener GPS
  15. 15. Arquitectura
  16. 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. 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. 18. LWUIT – Light Weight User Interface Toolkit
  19. 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. 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. 21. Casos de uso de cartografía
  22. 22. 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
  23. 23. 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
  24. 24. 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
  25. 25. - ¿Qué es un CU Cartografía Tile/Tesela?  Lado: 256px  BoundingBox  Resolución
  26. 26. 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
  27. 27. 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
  28. 28. CU Cartografía - Caché en disco Acceso a disco es lento ¿Cómo acelerar el acceso a caché? Extrapolar Quadkeys al sistema de ficheros
  29. 29. CU Cartografía - El proceso de pintado  Se inicia en Form  El mapa recorre sus capas: 3. Para la capa base: el grid recorre los tiles y pinta la imagen 4. Para la vectorial: Se recorren las geometrías y se pintan l Se pinta un acetato
  30. 30. CU Cartografía - Navegar por el mapa
  31. 31. CU Cartografía - Navegar por el mapa (II)
  32. 32. CU Cartografía - Centrar el mapa
  33. 33. CU Cartografía - Centrar el mapa (II)
  34. 34. Multi-threading
  35. 35. 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
  36. 36. Casos de uso de Rutas
  37. 37. 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
  38. 38. Casos de uso de rutas -Modelo de geometrías  Colecciones de Features  Feature = Geometría + metadatos  Geometría = Coordenadas + pintado
  39. 39. Casos de uso de rutas - DTE de una ruta  Ruta con 2 puntos: inicio + [paso | fin]  Ruta con N puntos: inicio + n ptos paso
  40. 40. 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
  41. 41. 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.
  42. 42. 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
  43. 43. Casos de uso de rutas - Cálculo de rutas
  44. 44. - Obtener Casos de uso de rutas 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
  45. 45. Casos de uso de Puntos de interés
  46. 46. 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
  47. 47. Casos de uso POI - Bucket PR-Quadtree  Quadtree: Cada cuadrante se subdivide en 4  Criterio de división: Número de elementos > 100
  48. 48. 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
  49. 49. Casos de uso POI - Pre-procesado (II)  Recorrer el fichero fuente y llenar el Quadtree (J2SE).
  50. 50. 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
  51. 51. Casos de uso POI - Pre-procesado (IV)  Persistir descripciones en ficheros diferentes: (Pseudo)Acceso aleatorio CoordenadaX CoordenadaY Categoría OffSetDescripción double (8 bytes) double (8 bytes) short (2 bytes) short (2 bytes)  offset / tamFichero 80.000/1024 = Fichero número 78  offset % tamFichero 80.000 % 1024 = byte 128
  52. 52. - Pre- Casos de uso POI 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
  53. 53. Casos de uso POI - POI
  54. 54. Casos de uso POI - Tareas BackGround POI  Cada tarea resuelve un caso de uso  Quicksort para ordenar resultados  50 primeros resultados
  55. 55. Casos de uso POI - Visualizar POI
  56. 56. Casos de uso de GPS
  57. 57. Casos de uso de GPS  Centrar el mapa en la posición del GPS  JSR-179: Location API
  58. 58. Casos de uso de GPS – Clases  Un hilo dedicado para GPS  Conversión de EPSG:4326 a EPSG:23030  Com.henson .midp.Float1 1
  59. 59. Casos de uso de GPS – DTE
  60. 60. Despliegue  Compilación + Preverificación  Emulación + Profiler: Detectar cuellos de botella  Es importante probar sobre dispositivos  Ofuscación + Firma (¿Opcional?)  Empaquetado (JAD + JAR)
  61. 61. 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
  62. 62. 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
  63. 63. Siguientes pasos  gvSIG Mini  Visor WMS, WMS-c, OSM  Cliente YOURS  Cliente NameFinder  GPL  Más eficiente y más compatible
  64. 64. 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
  65. 65. GRACIAS

×