Tesis 1597si
Tesis 1597si
Tesis 1597si
TEMA:
SUBLÍNEA DE INVESTIGACIÓN:
Desarrollo de Software
Ambato - Ecuador
julio, 2019
APROBACIÓN DEL TUTOR
II
•
AUTORÍA
CC: 180430713-8
III
•
DERECHOS DE AUTOR
Autorizo a la Universidad Técnica de Ambato, para que haga uso de este Trabajo
de Titulación como un documento disponible para la lectura, consulta y procesos
de investigación.
Cedo los derechos de mi Trabajo de Titulación, con fines de difusión pública,
además autorizo su reproducción dentro de las regulaciones de la Universidad.
CC: 180430713-8
IV
•
APROBACIÓN COMISIÓN CALIFICADORA
La comisión calificadora del presente proyecto conformada por los señores do-
centes PhD. Julio Balarezo e Ing. Hernando Buenaño, revisó y aprobó el Infor-
me Final del proyecto de graduación titulado "APLICACIÓNHÍBRIDA PARA
LA GESTIÓN DE DATOS GEORREFERENCIADOS OFFLINE UTILIZAN-
DO SOFTWARE LIBRE", presentado por el señor Víctor Hugo Bautista Salazar
de acuerdo al numera l 9.1 de los Lineamientos Generales para la aplicación de
Instructivos de las Modalidades de Titulación de las Facultades de la Universidad
T écnica de Ambato.
V
DEDICATORIA
vi
AGRADECIMIENTO
vii
APLICACIÓN HÍBRIDA PARA LA GESTIÓN DE DATOS
GEORREFERENCIADOS OFFLINE UTILIZANDO SOFTWARE
LIBRE.
RESUMEN
viii
HYBRID APPLICATION FOR THE MANAGEMENT OF
GEOREFERENCED DATA OFFLINE USING SOFTWARE OPEN
SOURCE.
ABSTRACT
Keywords: Mobile, Ionic, vector maps, Android, IOS, hybrid app, open source,
georeferenced data.
ix
ÍNDICE
Introducción XVI
CAPÍTULO 1 El Problema 1
1.1 Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . 1
1.3 Delimitación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Justificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.5 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5.2 Específicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
x
2.2.12 AngularJS ...................................................................................... 12
2.2.13 Apache Cordova.............................................................................. 13
2.2.14 Ionic Framework ................................................................................. 13
2.2.15 Arquitectura Ionic........................................................................ 14
2.2.16 Mapas Raster ................................................................................ 15
2.2.17 Mapas Vectoriales ........................................................................ 15
2.2.18 Raster vs Vectorial .......................................................................... 16
2.3 Propuesta de Solución ............................................................................. 17
CAPÍTULO 3 Metodología 18
3.1 Modalidad de la investigación............................................................... 18
3.2 Recolección de información .................................................................... 19
3.3 Procesamiento y análisis de datos......................................................... 19
3.4 Desarrollo del proyecto ........................................................................... 20
Bibliografía 77
ANEXOS 82
xi
ÍNDICE DE FIGURAS
xii
20 Diagrama de secuencia. Compartir puntos Fuente: Elaborado por
el investigador .......................................................................................... 45
21 Diagrama de secuencia. Eliminar punto Fuente: Elaborado por el
investigador ............................................................................................... 45
22 Diagrama de secuencia. Login Fuente: Elaborado por el investigador 46
23 Diagrama de secuencia. Modificar de datos Fuente: Elaborado por
el investigador .......................................................................................... 46
24 Diagrama de secuencia. Sincronizar datos Fuente: Elaborado por
el investigador .......................................................................................... 47
25 Diagrama de casos de uso. Fuente: Elaborado por el investigador. 48
26 Diagrama de clases. Programación del cliente Fuente: Elaborado
por el investigador ................................................................................... 55
27 Diagrama de clases. Programación del API-REST ............................. 56
28 Extracto de código. Estilo klokantech-basic-gl-style Fuente: Elabo-
rado por el investigador.......................................................................... 57
29 Extracto de código. Estilo klokantech-basic-gl-style modificado
Fuente: Elaborado por el investigador .................................................. 57
30 Vista de pantalla. Ingreso a la aplicación. Fuente: Elaborado por
el investigador .......................................................................................... 58
31 Vista de pantalla. Login Fuente: Elaborado por el investigador . . 59
32 Vista general de la aplicación Fuente: Elaborado por el investigador 60
33 Extracto de código. Cliente - Sincronización de datos Fuente:
Elaborado por el investigador................................................................ 60
34 Vista de pantalla. Lugares de la aplicación. Fuente: Elaborado por
el investigador. ......................................................................................... 61
35 Extracto de código. Cliente - Comparti.r Fuente: Elaborado por el
investigador ............................................................................................... 62
36 Vista de pantalla. Cliente - Ver detalle. Fuente: Elaborado por el
investigador ............................................................................................... 62
37 Extracto de código. Ver Detalle Fuente: Elaborado por el investi-
gador. ......................................................................................................... 63
38 Vista de pantalla. Sincronización Fuente: Elaborado por el
investigador ............................................................................................... 63
39 Vista de pantalla. Compartir lugar en las redes sociales Fuente:
Elaborado por el investigador................................................................ 64
40 Extracto de código. Cliente - Realizar acción “compartir”. Fuente:
Elaborado por el investigador................................................................ 64
xiii
41 Vista pantalla. Seleccionar punto. Fuente: Elaborado por el
investigador ............................................................................................... 65
42 Vista Pantalla. Cliente. Registrar un nuevo contenido Fuente:
Elaborado por el investigador................................................................ 66
43 Extracto de código. Registrar un nuevo contenido. Fuente: Elabo-
rado por el investigador.......................................................................... 66
44 Extracto de código. Cuadro de texto. Fuente: Elaborado por el
investigador ............................................................................................... 66
45 Extracto de código. Filtro pipe buscar en la lista lugares. Fuente:
Elaborado por el investigador................................................................ 66
46 Extracto de código. Pipe Buscar. Fuente: Elaborado por el
investigador ............................................................................................... 67
47 Vista de pantalla. Búsqueda de lugares. Fuente: Elaborado por el
investigador ............................................................................................... 67
48 Extracto de código. Colores en variables.scss. Fuente: Elaborado
por el investigador. .................................................................................. 68
49 Extracto de código. Estilo del header de la aplicación Fuente:
Elaborado por el investigador................................................................ 69
50 Extracto de código. Estilo del header de la aplicación para la
plataforma Android. Fuente: Elaborado por el investigador. ............ 69
51 Extracto de código. Archivo de configuración de la aplicación.
Fuente: Elaborado por el investigador. ................................................. 70
52 Vista de pantalla. Horizontal. Fuente: Elaborado por el investigador. 71
53 Carga de recursos en dispositivo móvil. Fuente: Elaborado por el
investigador ............................................................................................... 71
54 Carga de recursos en entorno de producción. Fuente: Elaborado
por el investigador. .................................................................................. 72
xiv
ÍNDICE DE TABLAS
xv
INTRODUCCIÓN
Capítulo II. “Marco Teórico”, consta del fundamento teórico que ayuda a
comprender de forma clara el problema gracias a los antecedentes investigativos,
para luego plantear la propuesta de solución.
xvii
CAPÍTULO 1
El Problema
1.1. Tema
1
aplicaciones; Google Maps y Mapbox, con líneas de código reutilizables para
compilar en las plataformas Android, iOS y Windows Phone, por optimización
de recursos, y facilidad de uso, el cual contará con información disponible sincro-
nizada, manejo de información y características de recursos web HTML5, CSS y
componentes JS con acceso a recursos nativos del dispositivo, será la pauta para
la inmersión en el desarrollo de aplicaciones moviles híbridas.
1.3. Delimitación
Área Académica:
Software.
Línea de Investigación:
Ingeniería de Software
Sublínea de Investigación:
Delimitación Espacial:
Delimitación Temporal:
1.4. Justificación
1.5. Objetivos
1.5.1. General
1.5.2. Específicos
3
CAPÍTULO 2
Marco Teórico
Según el trabajo presentado por Lic. Lisandro Nahuel Delía en el año 2017 de
título; “Desarrollo de Aplicaciones Móviles Multiplataforma” . Este menciona
algunos aspectos a tener en cuenta en lo referente menciona: "Para maximizar su
presencia en el mercado, un producto de software debe ejecutarse en la mayor
cantidad de dispositivos posible. Una solución consiste en el desarrollo nativo de
la aplicación en cada una de las plataformas existentes utilizando el entorno de
desarrollo integrado . . . "[6].
Los usuarios según sus necesidades adquieren diferentes dispositivos para cada
propósito sea para uso personal o para lo laboral, por cuanto una misma aplicación
que funcione en todos los dispositivos sería de gran utilidad para el usuario y se
optimizaría recursos.
Según el trabajo presentado por Cesar Stuardo Lucho Romero en el año 2017 de
título; “Aplicación multiplataforma para la gestión de archivos”. Este menciona
algunos aspectos a tener en cuenta en lo referente menciona:“. . . la experiencia y
aprendizaje tanto en la investigación de nuevas tecnologías y herramientas, como
en el desarrollo de aplicaciones móviles multiplataforma y la gestión de archivos
en las plataformas utilizadas. Ha sido un trabajo muy fructífero para aumentar
mis conocimientos en un campo que no se profundiza demasiado durante los
cuatro cursos del grado, y que ha cogido mucha fuerza durante los últimos años
al aumentar la potencia tanto en smartphones como en tablets. . . ”[7].
El potencial sobre el desarrollo de aplicaciones híbridas aumenta en base a
los resultados sobre la acogida de este tipo de aplicaciones, existe acogida en
este tipo de aplicaciones pese a que los cambios entre versiones en ocasiones
son significativos pero a la larga son beneficios en cuanto líneas de código y
entendimiento del mismo.
Según el trabajo presentado por Villacis Zúñiga Ángel Humberto y Barragán
Averos Mercy Beatriz en el año 2016 de título;“LA TECNOLOGÍA ANDROID y
su incidencia en el desarrollo de una aplicación móvil para la geo-localización
de los centros asistenciales y farmacias de turnos para la DIRECCIÓN
4
PROVINCIAL DE SALUD LOS RÍOS ubicada en la ciudad de Babahoyo”.
Este menciona algunos aspectos a tener en cuenta en lo referente menciona:
“. . . Una aplicación nativa está programada en un lenguaje específico con APIs1
propias de la plataforma. Se suele comprar, descargar y actualizar a través de la
tienda de aplicaciones específica de la plataforma. Las aplicaciones nativas suelen
ofrecer mejor rendimiento, integración más completa y la mejor experiencia de
usuario en comparación con otras opciones; sin embargo, el desarrollo nativo suele
ser también la opción de desarrollo más compleja.”
“. . . Una aplicación híbrida hace uso tanto de las tecnologías nativas como la web.
Partes de ella se comportan como una aplicación nativa, mientras que otras se
ejecutan sobre tecnologías web. . . ”[8].
El desarrolo de aplicaciones híbridas facilita la conexión con las API’s nativas
ofrecidas por cada entorno. De esta manera, accedemos a funcionalidades propias
de las aplicaciones nativas como son las notificaciones push, cámara, acceso a las
compras de los stores, GPS2 , sensores.
5
2.2.2. Base de datos móviles
6
Android y iOS se distribuyen con una versión de SQLite en el sistema operativo
del dispositivo, por lo que no es necesario hacer referencia a su propia versión de
SQLite [14].
2.2.4. XAMPP
2.2.5. PostgreSQL
2.2.5.1. PostGIS
2.2.5.2. pgAdmin
10X
Any System Operative, Apache, MariaDB/MySQL, PHP, Perl
11GNU’s Not Unix
7
En transacciones se tiene una mayor escalabilidad debido a que no se requiere
realizar bloqueos para su ejecución.
2.2.6. API
Los servicios web son creados específicamente para proveer información a una
aplicación o sitio web frente a una necesidad. Los programas clientes usan «in-
terfaces de programas de aplicaciones» (API) para comunicarse con los servicios
web. Generalmente una API expone un conjunto de datos y funciones para facili-
tar las interacciones entre los programas y permitir el intercambio de información
[18].
2.2.6.1. REST
Las comunicaciones mas ligeras entre servidor-cliente se las realiza con la arqui-
tectura REST12, se tiene comunicaciones mantenibles y escalables, REST es un
estilo de construcción popular para APIs basadas en la nube. Se denominan API
RESTful (Interfaces de programación de aplicaciones) o API REST [19] cuando
los servicios Web utilizan la arquitectura REST.
Consulta Se puede usar solo para recuperar todos los registros de una tabla
// Produces: SELECT * FROM mytable
$query = $this->db->get(’mytable’);
13Hypertext
Preprocessor
9
$data = array(
’title’ => ’My title’,
’name’ => ’My Name’,
’date’ => ’My date’
);
$this->db->replace(’table’, $data);
// Executes: REPLACE INTO mytable (title, name, date)
// VALUES (’My title’, ’My name’, ’My date’)
2.2.8. OpenStreetMap
2.2.9. OpenMapTiles
2.2.10. MapBox
2.2.10.1. Formato
Los mosaicos vectoriales están codificados como Google Protobufs (PBF), que
permiten serializar datos estructurados. Para mayor claridad, Mapbox Vector
Tiles usa el .mvt sufijo de archivo. Los detalles de las especificaciones se
estructuran en gran medida en torno a las reglas implementadas en el .proto
archivo base[25].
Los PBF son un formato, muy parecido a XML14 y pueden tomar muchas formas.
Mapbox Vector Tiles y OSM PBF son archivos protobuf, pero se ajustan a
especificaciones completamente diferentes y se utilizan de diferentes manera.
2.2.11. Bootstrap
Bootstrap es modular una hoja de estilo llamada bootstrap.less incluye los com-
ponentes de las hojas de estilo consiste esencialmente en un encadenamiento de
hojas de estilo LESS que implementan la multiplicidad de componentes de un
objeto.
Algunos de los componentes que se encuentran ya construidos y disponibles en
Bootstrap son:
Contenedores
11
Menús desplegables
Barra de Navegación
Barra de progreso
Etiquetas
Alertas
Barras de progreso
Ventanas modales
2.2.12. AngularJS
12
2.2.12.1. Arquitectura de AngularJS
17Syntactically
Awesome Style Sheets
18Graphics
processing unit
19Kit de desarrollo de software
14
se generará un proyecto nativo con los archivos de su respectiva estructura,
sea un proyecto de Android Studio o un proyecto XCode.
src: Esta es la carpeta más importante y donde se realiza la mayor parte del
trabajo. En ella se encuentran los archivos con el contenido de la aplicación,
donde se define las pantallas, el estilo y el comportamiento que tendrá la
aplicación.
Dentro de la carpeta src se encuentra la carpeta que contiene a las páginas.
El archivo home.html que contiene la plantilla html de la página. El
archivo home.scss que contiene el archivo sass donde podremos modificar el
estilo de los componentes de la página. El archivo home.ts que es el archivos
typescript que contiene el controlador de la página, donde definiremos el
comportamiento de la misma.
Los mapas raster constan de una matriz de celdas(o píxeles) cada celda (dadas por
filas y columnas) contiene un valor que representa información, con el propósito
de almacenar puntos, líneas, polígonos y superficies de manera uniforme. Para
un área determinada, el cambio de celdas a la mitad del tamaño actual requerirá
más espacio de almacenamiento, dependiendo del tipo de datos y de las técnicas
de almacenamiento utilizadas. Ver figura 4.
La dimensión de las celdas puede ser tan grande o pequeña como sea necesario
para representar la superficie dada por un origen de datos raster.
15
Figura 4: Entidad poligonal ráster.
Fuente: SIG [4].
En base del análisis de las propiedades topológicas son importantes para la con-
sideración de implementación. El modelo de datos vectorial es la dominante op-
ción,a pesar de su estructura precisa, es compleja y esto puede demorar el proceso.
Por lo cual, si las propiedades topológicas juegan un papel importante, es mucho
más rápido, sencillo y eficaz el uso del formato raster. Ver figura 5.
Si se hace en capas raster un zoom excesivo aparecerán los bordes de estas como
advertencia de que la profundidad del zoom es excesiva, en el caso del formato
vectorial no tenemos este mecanismo de advertencia y en muchos casos se fuerzan
los zoom para obtener una precisión completamente nítida. Una distribución de
datos vectorial se utiliza cuando hay que proyectar más de un atributo en un
mismo espacio. El uso de la estructura raster se debe crear una capa por cada
atributo.
16
Figura 5: Imagen vectorial vs ráster
Fuente: Mapas para OruxMaps[5]
17
CAPÍTULO 3
Metodología
18
3.2. Recolección de información
Procesamiento de la información
Análisis de Resultados
21
CAPÍTULO 4
Desarrollo de la propuesta
Registrar usuario.
Modificar o eliminar puntos de interés, siempre que estos sean añadidos por
el usuario activo en el sistema.
24
El diseño físico de la base de datos local tiene en cuenta la información proveniente
de la base de datos remota, en la tabla datos se almacenan los puntos de todos
los usuarios, mientras en la tabla puntos_usuario almacena los puntos añadidos
sin conexión, así como, actualización de puntos existentes y su eliminación, tal y
como se muestra en la figura a continuación.
$db[’default’] = array(
’dsn’=> ’’,
’hostname’ => ’localhost’,
’username’ => ’*****’,
’password’ => ’*****’,
’database’ => ’ambato_app_bd’,
’dbdriver’ => ’postgre’,
’dbprefix’ => ’’,
’pconnect’ => FALSE,
’db_debug’ => (ENVIRONMENT !== ’production’),
’cache_on’ => FALSE,
’cachedir’ => ’’,
’char_set’ => ’utf8’,
25
’dbcollat’ => ’utf8_general_ci’,
’swap_pre’ => ’’,
’encrypt’ => FALSE,
’compress’ => FALSE,
’stricton’ => FALSE,
’failover’ => array(),
’save_queries’ => TRUE,
’port’=> 5432
);
require_once( APPPATH.’/libraries/REST_Controller.php’ );
use Restserver\libraries\REST_Controller;
28
else{
$respuesta= array(
’error’=>TRUE,
’mensaje’=>’Hubo un error intenta más tarde’
);
}
$this->response($respuesta);
}
$respuesta = array(
’error’ => TRUE,
’mensaje’=> ’Los campos correo y/o
contraseña no pueden estar vacíos’
);
$this->response( $respuesta,
REST_Controller::HTTP_BAD_REQUEST );
return;
}
// Verificar si el usuario existe
$condiciones = array(’correo_usu’ => $data[’correo_usu’]);
$this->db->where($condiciones);
$query = $this->db->get(’usuarios’);
$usuario = $query->row();
if( !isset( $usuario ) ){
$respuesta = array(
29
’error’ => TRUE,
’mensaje’=> ’El usuario no existe’
);
$this->response( $respuesta );
return;
}
//Verificar contraseña con un hash
$contrasena_verificada=password_verify($data[’contrasena_usu’],
$usuario->contrasena_usu);
if($contrasena_verificada){
$respuesta = array(
’error’ => FALSE,
’mensaje’=> ’Login’,
’token’ => $usuario->token,
’id_usu’=>$usuario->id_usu
);
}
else{
$respuesta = array(
’error’ => TRUE,
’mensaje’=> ’Usuario y/o contraseña incorrectos’
);
}
$this->response( $respuesta );
}
33
Método para modificar un punto: El método recibe como parte de la cadena
el Id del registro a actualizar y un número que permitirá verificar si se ha
modificado la imagen del registro. En primera instancia se verifica los datos
enviados vía POST; el mensaje de error se retorna en caso de no haber la
variable. Si esta existe, se procede a separar los campos que están concatenados
con apóstrofes. Si el número que se recibió por medio de la URL es 1 entonces el
método realiza el proceso de verificar el tipo de imagen. Si el número que se recibió
por medio de la URL es 0, entonces se entiende que no ha habido modificación de
la imagen y, por tanto, no es necesario actualizar la que ya existe en el servidor.
Posteriormente se almacena en la carpeta de imágenes. Si el registro es exitoso, se
retorna una variable de tipo boolean con el valor de true y un mensaje. En caso
de haber un error un boolean con el valor de false y el correspondiente mensaje
de error.
35
’fecha_dat’ => $fecha_dat,
’id_cat_dat’ => $id_cat_dat);
}
$this->db->set($actualizar);
$this->db->where(’id_dat’,$id);
$this->db->update(’datos’);
$verificar=($this->db->affected_rows() != 1) ? false : true;
if($verificar){
$respuesta= array(
’error’=>FALSE,
’mensaje’=>’Registro actualizado’
);
}
else{
$respuesta= array(
’error’=>TRUE,
’mensaje’=>’Hubo un error intenta más tarde’
);
}
$this->response($respuesta);
}
}
Método para eliminar un punto: El método recibe, por URL, el Id del registro
a eliminar de la base de datos.
El flujo para iniciar sesión es una interacción entre el usuario y el sistema. Cuan-
do el usuario desea iniciar sesión en el sistema se comprueba la existencia del
usuario, el fin del flujo es la visualización datos sincronizados y la habilitación
de gestión de datos georreferenciales tales como; agregar, modificar, eliminar, los
cuales pertenezcan al usuario .
39
Figura 11: Diagrama de actividades. Visualización de datos.
Fuente: Elaborado por el investigador.
40
Figura 12: Diagrama de actividades. Búsqueda de datos
Fuente: Elaborado por el investigador
41
Figura 14: Diagrama de actividades. Modificar datos
Fuente: Elaborado por el investigador.
La aplicación lista los datos que tienen el estado para sincronizar y se verifica la
disponibilidad de red. Si la red está disponible, se realiza la petición de iniciali-
zación del proceso de sincronización.
42
Figura 16: Diagrama de actividades. Sincronizar datos
Fuente: Elaborado por el investigador
43
Figura 18: Diagrama de secuencia. Agregar puntos
Fuente: Elaborado por el investigador
44
Figura 20: Diagrama de secuencia. Compartir puntos
Fuente: Elaborado por el investigador
45
Figura 22: Diagrama de secuencia. Login
Fuente: Elaborado por el investigador
46
Figura 24: Diagrama de secuencia. Sincronizar datos
Fuente: Elaborado por el investigador
47
4.4. Desarrollo de la aplicación
48
Tabla 3: Caso de uso. Registrar “usuario”
Fuente: Elaborado por el investigador
Caso de Uso : Registrar “usuario”
Flujo Alternativo :
El actor dispuso omitir el registro.
• El sistema muestra contenido de manera general.
49
Tabla 4: Caso de uso. Inició de sesión
Fuente: Elaborado por el investigador
Actor : Usuario
Flujo Normal :
El actor solicita el ingreso al sistema.
Flujo Alternativo :
El usuario no existe.
• El sistema da la opción de registrar usuario.
• El sistema redirige a la pagina para registrar
usuario
• Visualizar los datos.
50
Tabla 5: Caso de uso. Visualizar datos
Fuente: Elaborado por el investigador
Actor : Usuario
Flujo Normal :
El actor solicita la visualización de un contenido.
Flujo Alternativo :
El sistema no tiene conexión.
• El actor realiza la petición de datos
• El sistema retorna los datos almacenados
localmente
• El sistema muestra los datos en el mapa.
• Se habilitan las opciones de compartir en redes
Sociales y descargar la imagen del punto
seleccionado
51
Tabla 6: Caso de uso. Registrar un nuevo punto
Fuente: Elaborado por el investigador
Caso de Uso : Registrar un nuevo punto
Flujo Alternativo :
El actor ingreso datos incorrectamente
• Se muestra mensaje de error.
52
Tabla 7: Caso de uso. Modificar un punto
Fuente: Elaborado por el investigador
Caso de Uso : Modificar un punto
Flujo Alternativo :
El actor ingreso datos incorrectamente
• Se muestra mensaje de error.
53
Tabla 8: Caso de uso. Buscar datos
Fuente: Elaborado por el investigador
Caso de Uso : Buscar datos
Flujo Alternativo :
El actor ingreso parámetros de búsqueda que no tiene
contenido que lo cumplan.
• Se muestra una lista vacía .
• Visualizar información recientes.
Poscondiciones : Ninguna
Flujo Alternativo :
No es posible realizar la acción social
• El sistema muestra un error de disponibilidad de
red.
54
4.4.2. Producción de software
55
4.4.2.3. Diagrama de clases de la programación del servidor
“Mapa vectorial sin conexión” Para obtener el origen de datos con tese-
las vectoriales se ha utilizado el API de SDK de MapboxGL JS modificado
por Oscar Fonts, los cuales utilizan la petición bajo el formato de dirección
http://direcccion_ip/{x}/{y}/{z}.pbf. Sobre el origen de datos se aplican spri-
tes, que son archivos png que contienen los iconos de los lugares, los cuales están
representados en el mapa; por ejemplo un hotel o un estadio.
Los archivos glyphs son archivos de extensión .pbf que contienen estilos de fuente
de letra, los cuales se aplican en los diferentes niveles de zoom y dependen del
objeto que se pretende identificar; por ejemplo, una calle principal va a tener el
estilo de letra con negrilla y una calle secundaria va a tener el estilo de letra
itálica.
MapboxGL JS modificado utiliza el origen de datos almacenados en un archivo
mbtiles, el cual es una base de datos Sql que contiene las teselas vectoriales. El
componente, en lugar de apuntar a un servidor que contiene las teselas como
usualmente se usa, apunta a un archivo mbtiles. En lugar de extraer las teselas
vectoriales del archivo, existe la posibilidad de leer el origen de datos mediante
el uso del plugin cordova-sqlite-ext, el cual dispone de la característica de leer
bases de datos prealmacenadas, como es el caso de los mbtiles. Esto último es lo
que se implementó, diferenciando el comportamiento de la aplicación creada con
56
relación a lo que se hace en el caso, por ejemplo, de un GeoServer.
El fichero de estilo utilizado es un documento JSON que cumple con la especifica-
ción de estilo de Mapbox. La especificación de estilo está diseñada especialmente
para que Mapbox GL JS y los SDK de Mapbox en móviles puedan leerlos y com-
prenderlos, de modo que el mapa se pueda representar satisfactoriamente en la
página donde se despliega.
58
Figura 31: Vista de pantalla. Login
Fuente: Elaborado por el investigador
59
Figura 32: Vista general de la aplicación
Fuente: Elaborado por el investigador
“Lugares” La pantalla de Lugares muestra los puntos agregados por todos los
usuarios los cuales se han almacenado localmente, cada item tiene opciones de
compartir en las redes sociales y la acción del usuario de ver a detalle el item al
seleccionarlo como se indica en la figura 36.
60
Figura 34: Vista de pantalla. Lugares de la aplicación.
Fuente: Elaborado por el investigador.
61
Figura 35: Extracto de código. Cliente - Comparti.r
Fuente: Elaborado por el investigador.
62
Figura 37: Extracto de código. Ver Detalle
Fuente: Elaborado por el investigador.
63
La página modal se genera a través del APIs de las redes sociales según la selec-
ción del usuario, por lo que su apariencia y funcionamiento es independiente del
sistema.
64
“Registrar un nuevo lugar” El sistema permite al usuario la creación de
un nuevo lugar; esto se lo realiza mediante la selección de un punto en el mapa,
posteriormente un formulario se carga en una pantalla del sistema, a través de la
cual se ingresa la información necesaria para el registro de un nuevo lugar en la
base de datos local del sistema.
El usuario ingresa la información, la que se valida en la capa cliente de la
aplicación. Si los datos son válidos, se almacena un registro en la base de
datos local, posteriormente se utilizara el registro para enviar a la API-REST
y almacenar en la base de datos remota.
67
metas con efectividad, eficiencia y satisfacción en un determinado contexto de uso
grado, lo cual es un factor de éxito considerable para un proyecto como para ser
ignorado.
68
El archivo app.scss es un archivo de hoja de estilo, en el cual se define la apariencia
de componentes de la aplicación. En la figura 49 se indica la forma en que el área
de notificaciones se un estilo de degradado, el estilo se aplica a todas las pantallas
en la aplicación.
Figura 50: Extracto de código. Estilo del header de la aplicación para la plataforma Android.
Fuente: Elaborado por el investigador.
69
Figura 51: Extracto de código. Archivo de configuración de la aplicación.
Fuente: Elaborado por el investigador.
1. Nombre de la aplicación.
3. Descripción de la aplicación.
70
Figura 52: Vista de pantalla. Horizontal.
Fuente: Elaborado por el investigador.
4.4.4. Transición
Las pruebas de funcionalidad tienen como fin validar que el sistema cumple los
requisitos básicos de funcionamiento esperado y permitir que el usuario determine
la aceptación del sistema.
Mediante gráficos estadísticos se muestra que la aceptación y valoración por parte
de los usuarios está en un nivel admisible; a partir de esto se llevó a cabo un
proceso de refinamiento de los procesos y componentes de la aplicación.
Para medir el tiempo de reacción y funcionamiento del sistema se utilizó
herramientas de depuración, en este caso DevTools de Google Chrome, ya
que cada dispositivo tienen diferentes características de funcionamiento, se
ha optimizado la carga de plugins para mejorar la experiencia, así como
implementación de componentes para grandes volúmenes de datos, en caso de
vista de listas, se utilizó Virtual-Scroll diseñado especialmente para estos casos.
A partir de ello, se determinó qué procesos se encontraban ralentizando la interfaz
de la aplicación y la experiencia del usuario. Se tomaron medidas de mejora en
aspectos como la usabilidad de las redes sociales y del proceso de carga plugins.
Como pantalla principal se definió la vista general al mapa con los datos
georreferenciales, en un principio la pantalla principal fue la lista de los lugares,
se optó por la carga del mapa por optmización de recursos, a partir de esa
carga solo se realizará una vez la carga de las teselas vectoriales a partir del
archivo MBTILES, se agregó el condicional de si no resuelve en un intervalo de 3
segundos la ubicación del usuario, se toman parámetros de la última ubicación,
dicho proceso no retrasará la carga del mapa.
Una vez mejorados los procesos, en base a las pruebas realizadas de la aplicación,
se ha actualizado el sistema a la versión estable final.
72
Casos de uso Pantalla Datos de entrada Resultado Cumplimiento Observaciones
Registrar usuario Ver figura [22], - Email Token de sesión, SI
Ver figura [23] - Password sesión activa
Inicio de sesión Ver figura [22], - Email Token de sesión, SI
Ver figura [23] - Password sesión activa
Visualizar datos Ver figura [24], Lista de puntos SI
Ver figura [26], agregados
Ver figura [28] registrados en la
base de datos
Registrar un Ver figura [33], - Latitud, Registro local y SI
nuevo punto Ver figura [34] Longitud remoto de la
- Nombre información del
- Descripción nuevo punto
- Imagen
Modificar un Ver figura [33] - Nombre Modificación NO La imagen en
punto - Descripción local y remota de base64 se debe
- Imagen la información del reemplazar en el
punto servidor para evitar
seleccionado duplicidad de
imágenes(corregido)
Buscar datos Ver figura [26], - Nombre Lista de SI
Ver figura [22] coincidencias
según el criterio
de búsqueda
Compartir en las Ver figura [28], La información de NO Verificar la
redes sociales un Ver figura [31] un punto aplicación móvil de
punto seleccionado red social deba estar
publicada en las instalada para
redes sociales realizar la acción de
seleccionadas compartir(corregido)
CAPÍTULO 5
Conclusiones y Recomendaciones
5.1. Conclusiones
5.2. Recomendaciones
76
Bibliografía
[16] PostGIS, “Spatial and geographic objects for postgresql,” 2019. [Online].
Available: https://postgis.net/
[18] M. Masse, REST API design rulebook. .O’Reilly Media, Inc.", 2011.
[37] B. Mallick and N. Das, “An Approach to Extended Class Diagram Model
of UML for Object Oriented Software Design,” International Journal of
Innovative Technology & Adaptive Management (IJITAM), vol. 1, no. 2,
2013.
79
[38] M. Mazza, “Diseño web responsivo (responsive web design),” 2019. [Online].
Available: http://xn--diseowebresponsive-q0b.org/?utm_source=redirects&
utm_medium=dise%25C3%25B1owebresponsivo.com.ar&utm_campaign=
301_Redirects
80
Anexos y Apéndices
81
Anexo A
Encuesta para determinación de usabilidad de aplicaciones de datos
georreferenciales offline
Objetivo:
Obtener información de aceptación de aplicaciones sobre anotación de datos
georreferenciales, y determinar las posibles características a implementar para el
desarrollo de la aplicación según la tendencia tecnológica.
Instrucciones:
- Lea detenidamente cada pregunta y marque con una X la respuesta que
considere correcta.
- Solo se permite marcar una opción por pregunta
Si No
Personas 10 10%
Pregunta 1
65
70
60
50
40 25
30
20 10
10
0
1
Análisis: Del total de la población, el 65% menciona que para encontrar ubicaciones
en el mapa usa aplicaciones móviles, 25% acude a los sitios web para ubicar una
dirección o lugar y el 10% pregunta directamente a personas que conozcan sobre la
zona.
70
70
60
50
40
30 15
20 10
5
10
0
1
Análisis: Del total de los encuestados el 70% asegura que utilizan un dispositivo móvil
para ubicar un punto no conocido en el mapa, 15% usa el móvil para dicha tarea, el
10% pertenece al grupo que en ocasiones ubican un punto no conocido y el 5% afirma
que el dispositivo móvil no es una herramienta para realizar la ubicación del punto en
el mapa.
Pregunta 3
50 41
40 31
30
18
20 10
10
0
1
Pregunta 4
88
100
80
60
40 12
20
0
1
Si No
Análisis: Del total de los encuestados el 88% está de acuerdo que es de utilidad
disponer de una aplicación con un mapa sin conexión y el 12% no está de acuerdo con
disponer de un mapa offline.
87
100
80
60
40 13
20
0
1
Si No
Diccionario de Datos
Leyenda
Leyenda
Término Definición
PK Primary key
NN Not null
UN Unique
AI Autoincrement
Tabla “usuarios”
correo_usu VARCHAR(255)
contrasena_usu VARCHAR(255)
token VARCHAR(255)
Tabla “datos”
punto_dat VARCHAR(MAX)
nombre_dat VARCHAR(MAX)
descripcion_dat VARCHAR(MAX)
fecha_dat DATETIME
imagen_dat VARCHAR(MAX)
BD Base de Datos.
CSS Cascading Style Sheets es un lenguaje de diseño gráfico para definir y crear
la presentación de un documento estructurado escrito en un lenguaje de marcado.
MVC Modelo-Vista-Controlador.