nicmic: la aplicaciÓn para mÓviles que calcula...
TRANSCRIPT
NICMIC: LA APLICACIÓN PARA MÓVILES QUE CALCULA ANOMALÍAS Y
CORRECCIONES GRAVIMÉTRICAS
MICHELLE NOHELIA NIÑO ORTIZ
NICOLÁS CUBILLOS VALDERRAMA
Trabajo de grado en modalidad monografía para optar por el título de Ingeniero
Topográfico
Trabajo dirigido por:
Profesor ROBINSON QUINTANA PUENTES
UNIVERSIDAD DISTRITAL FRANCISCO JOSÉ DE CALDAS
FACULTAD DE MEDIO AMBIENTE Y RECURSOS NATURALES
PROYECTO CURRICULAR DE INGENIERÍA TOPOGRÁFICA
BOGOTÁ D. C.
2020
Notas de apreciación
Profesor Robinson Quintana Puentes
_________________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
___________________________
Profesor William Barragán Zaque
_______________________________________________________________________
_________________________________________________________________________
_________________________________________________________________________
_____________________________
IV
Agradecimientos de Michelle Niño Ortiz
En primera instancia y tal como lo decía Mercedes Sosa: Gracias a la vida, que me ha
dado tanto. Gracias a la educación pública colombiana que me preparó durante todo el
bachillerato para estudiar en la mejor universidad del mundo, y gracias a la gloriosa
Universidad Distrital Francisco José de Caldas por recibirme siempre con los brazos
abiertos. A la educación pública que es tan necesaria en este país. La universidad es un
ascensor social que debería tener capacidad infinita para albergar personas, porque cuando
una persona estudia, no solo se beneficia a sí misma sino también todo su núcleo familiar.
Gracias a Lucy, a Jairo y a Fabián: sin ustedes, nada de esto habría sido posible. Sin
todo lo material que me ofrecieron (dinero, vivienda y alimentación) y sin lo etéreo (las
palabras, el ánimo y el apoyo incondicional) este sueño no se habría concretado de la forma
en que lo hizo. Estaré siempre con ustedes, así no estemos juntos. Quiero que sepan que los
llevaré de forma sempiterna muy en mi recuerdo y persona; en los tres siguientes párrafos
les agradeceré personalmente.
A mamá, gracias por curar mis heridas con tiritas para el alma, gracias por todo, gracias
por la vida y por cuidar a mis mascotas mientras yo no estoy; gracias por todos los
sacrificios realizados.
A papá, que es un hombre muy valiente y enojón pero que siempre ha querido lo mejor
para sus hijos y perritos y con sacrificios nos sacó adelante, gracias también por la vida.
A mi hermano, el Player 1, que es el mejor hermano y que aún con tremendas diferencias,
jamás cortaremos el vínculo de amor y cercanía que tenemos; gracias por el ejemplo y por
todo, de verdad. Jamás olvidaré las noches de juegos, de series y películas e incluso las
pequeñas tertulias sobre música. Que la Utopía nunca te falte, Bro.
A mi abuelo Jaime, a Luz Marina y a mi tío Jaime también los aprecio mucho y agradezco
enormemente su apoyo y cariño. A Stefania, especialmente gracias por la infancia bonita y
divertida que vivimos juntas, fue graciosa y las risas no faltaron.
A mi tío César, cuya ayuda y colaboración fueron indispensables para el bienestar de mi
familia.
Te llevo siempre conmigo; no muy cerca pero sí muy dentro: A César, jamás imaginé que
el maravilloso azar del destino me pusiera en el camino a un ser tan especial, a un amigo
tan cercano que me demostró que la distancia no es impedimento para estar a un paso de la
otra persona. Gracias a ti, amigo mío, que acompañaste mi transitar por el colegio y la
universidad, estando siempre pendiente de mí, de mi familia y de mis cosas. Tus correos,
mensajes, llamadas y videoconferencias han dejado una huella tremenda en mi corazón y mi
vida. Jamás terminaré de agradecer todo lo que has hecho por mí y sé que algún día
celebraremos este logro. Las palabras se quedan cortas para expresar todo lo que me
gustaría y en un abrazo lo sabrás.
V
Decía Carl Jung que Uno recuerda con aprecio a sus maestros brillantes, pero con
gratitud a aquellos que tocaron nuestros sentimientos. Este párrafo es para ti, Bernardo, que
con tu compañía, abrazos, gestos y palabras hicieron de mi paso por el colegio algo mucho
más grato y demostraste que un profesor puede llegar a ser un maestro y gran amigo.
Infinitas gracias a ti, Bernardo. Te aprecio mucho y te pienso con inmensurable gratitud.
A Tina y Natas: compañeras incansables de desvelos y lágrimas, de sonrisas, estrés y
cansancio; sus colitas siempre felices de tenerme cerca. Nada más reconfortante que su
honrosa compañía porque demuestra que las palabras no son necesarias para entender el
lenguaje del alma y del amor. Y aunque me encantaría que los perritos vivieran para
siempre, sé que no lo harán en el plano físico, pero siempre estarán en mi pensamiento y en
los cajones más especiales de mi recuerdo. Mi meta en la vida es ser tan maravillosa como
mis perritas creen que soy.
Al profesor Robinson Quintana, muchas gracias por su humildad, paciencia y gusto por
la enseñanza; gracias por guiarnos y deleitarnos con todo su saber sobre las ciencias físicas
y la geofísica.
Al profesor William Barragán, gracias también por hacer de la cartografía, la tecnología
y la ingeniería algo al alcance de todos y enseñarlo de forma comprensible y pedagógica.
A Jhon, que por la incertidumbre de la vida nos cruzamos en el colegio, que es como el
aire – aunque no se ve, uno sabe que está ahí. Muchas gracias, chinito. Y recuerda que “Pan,
panza”.
A Nicolás, este trabajo de grado no habría sido igual sin tu ayuda, crack :v Que, sin
contar la academia, la música nos conectó más… espero y deseo que la música te lleve
siempre lejos.
A los pocos amigos, a los muchos compañeros y conocidos que no nombré, ustedes
también hacen parte de esto, también tienen un lugar en esta fiesta. Mil gracias por todo lo
que hicieron, de algún modo cada pequeña cosa me ayudó en este transitar, en el crecimiento
y aprendizaje. Gracias por compartir conmigo, por tenerme en su pensamiento, por
desearme lo mejor y por estar para mí.
A todas y cada una de las personas y perritos que estuvieron conmigo hasta este momento,
quiero que sepan que la gratitud será infinita. Deseo con todo el corazón que la felicidad y
las buenas noticias nunca les falten, que vivan en abundancia y, que por sobre todas las
cosas, amen con profundidad y sin arrepentimientos.
VI
Agradecimientos de Nicolás Cubillos Valderrama
Primero que todo gracias a la Universidad Distrital Francisco José de Caldas, por
brindarme la posibilidad de estudiar y permitir que este sueño hoy sea posible, gracias a
todos mis profesores del Colegio bachillerato, pero en especial gracias al profesor Juan
Pablo Guavita por formarme no solo académicamente sino personalmente también.
Gracias a mi madre Elvia Valderrama por su dedicación y esfuerzo incansable para que
yo pudiera salir adelante, le agradezco su comprensión, su ternura, su apoyo incondicional,
pero sobre todo le agradezco su amor y la confianza que siempre me ha tenido y sé que me
tendrá.
Gracias a mi padre John Fernando Cubillos por ser ejemplo del hombre en el que algún
día espero convertirme, le agradezco por matarse cada día en su trabajo, por esas
madrugadas, por seguir muchas veces de largo, por ofrecerme el dinero que en intachables
veces él necesitaba para que yo pudiera ir a la universidad, le agradezco ese cariño tan
grande que, aunque no lo suele decir mucho, sí lo demuestra con cada gesto y postura que
ha tomado conmigo, le agradezco su comprensión en las noches en las que llegué tarde y no
pudo descansar, ya que nunca me recriminó nada, gracias a ti, porque sin ti no sería ni la
sombra de lo que soy ahora.
Gracias a mi tío Gustavo por estar para mí y mi familia siempre que lo necesitamos,
gracias por todas esas golosinas que siempre nos traías, gracias por tu cariño, por cuidar
de mí cuando mis padres no podían, gracias por brindarme todo lo mejor de ti.
Gracias a mis hermanas a Sofía y a Kelly por ser un pilar en mi vida, gracias por sus
peleas que, aunque suene raro, siempre me ayudaron a crecer un poco como persona, a
Kelly le agradezco por sus charlas como hermana mayor por enseñarme el camino con su
ejemplo y Sofía le gradezco su cercanía conmigo las tardes de películas o series los
momentos divertidos que siempre he atesorado.
A Lucía Cubillos Valderrama, mi sobrina, gracias por ser ese motor que me impulsa a
seguir adelante por llenarme la vida de luz sin importar los momentos, por recordarme cada
día porqué deseo un mejor futuro para mí y para ella, gracias a ella por llegar a mí vida.
A mis amigos de la universidad a Laura, Camilo, Juan, Andrés, Aleja, Paola, Omar, Edna
y Kathe porque de ellos aprendí mucho, ya que me acompañaron en mi proceso de formación
gracias por estar conmigo cuando lo necesitaba, por tenerme paciencia al explicarme temas
que no comprendía, por volver estos años de universidad la mejor experiencia, gracias por
todos los buenos momentos.
A Joseth, parce, le agradezco por ser ese amigo incondicional, por brindarme su apoyo y
ayuda en cada momento que lo necesite, por todas esas tardes de Xbox donde solo hablamos
mierda hasta llegar la noche, gracias por todas esas experiencia y lugares nuevos que conocí
de los cuales jamás hubiera ido sin usted, parce gracias por soportarme y gracias por
siempre estar ahí.
VII
A Michelle, aunque la conocí con el inicio de este trabajo, pude notar la excelente persona
que es.
TABLA DE CONTENIDO
1. ANTECEDENTES Y JUSTIFICACIÓN .............................................................. 15
2. JUSTIFICACIÓN .................................................................................................. 19
3. PLANTEAMIENTO DEL PROBLEMA .............................................................. 20
4. OBJETIVOS .......................................................................................................... 21
4.1. Objetivo General ................................................................................................ 21
4.2. Objetivos Específicos ......................................................................................... 21
5. MARCO TEÓRICO............................................................................................... 22
5.1. Levantamiento .................................................................................................... 22
5.2. Levantamiento altimétrico.................................................................................. 22
5.3. Levantamiento planimétrico ............................................................................... 22
5.4. Levantamientos especiales ................................................................................. 22
5.5. Levantamiento arquitectónico ............................................................................ 22
5.6. Latitud ................................................................................................................ 22
5.7. Geofísica............................................................................................................. 23
5.8. Gravedad ............................................................................................................ 23
5.9. Unidades de la gravedad .................................................................................... 24
5.10. Gravedad teórica ............................................................................................. 24
5.11. Gravedad observada ....................................................................................... 25
5.12. Gravimetría ..................................................................................................... 25
5.13. Anomalía gravimétrica ................................................................................... 25
5.13.1. Anomalía de aire libre ............................................................................. 26
5.13.2. Anomalía de Bouguer Simple ................................................................. 26
5.13.3. Anomalía de Bouguer Total .................................................................... 26
5.14. Corrección gravimétrica ................................................................................. 27
5.14.1. Corrección de Aire libre .......................................................................... 27
5.14.2. Corrección de Bouguer Simple ............................................................... 27
5.14.3. Corrección topográfica ............................................................................ 27
5.15. Sistema operativo ........................................................................................... 28
5.16. Aplicación ....................................................................................................... 28
5.16.1. Aplicaciones nativas ................................................................................ 28
5.16.2. Aplicaciones web .................................................................................... 28
5.16.3. Aplicaciones web nativas o híbridas ....................................................... 28
5.17. Lenguaje de programación ............................................................................. 28
5.18. Android ........................................................................................................... 29
5.19. Blueprint ......................................................................................................... 29
5.20. Activity ........................................................................................................... 29
5.21. JAVA .............................................................................................................. 29
5.22. XML ............................................................................................................... 29
5.23. Procesos de optimización ............................................................................... 30
5.24. Interfaz de usuario .......................................................................................... 30
5.25. React.JS .......................................................................................................... 30
5.26. Node.js ............................................................................................................ 30
5.27. Componente .................................................................................................... 30
5.28. Clase ............................................................................................................... 30
5.29. Compilación.................................................................................................... 30
5.30. Servicio Amazon S3 ....................................................................................... 31
5.31. Bucket ............................................................................................................. 31
5.32. Código QR ...................................................................................................... 31
6. METODOLOGÍA .................................................................................................. 32
6.1. Desarrollo de una base de ecuaciones como calculadora previa ........................ 32
6.2. Desarrollo de la aplicación en Android Studio .................................................. 32
6.3. Desarrollo de la aplicación web en React.JS ...................................................... 32
7. DESARROLLO DE LA PROPUESTA................................................................. 32
7.1. Base de cálculos ................................................................................................. 32
7.1.1. Datos suministrados por el usuario ......................................................... 32
7.2. Programación en Android Studio ....................................................................... 35
7.2.1. Diseño gráfico de la aplicación ............................................................... 38
7.2.2. Rotación automática ................................................................................ 44
7.2.3. Creación de las demás Activities ............................................................. 45
7.2.4. Vinculación entre Activities .................................................................... 46
7.2.5. Activity “Detalles” ................................................................................... 47
7.2.6. Activity “Calcular”................................................................................... 49
7.3. Cambio del icono de la aplicación ..................................................................... 55
7.4. Desarrollo de la aplicación web en React.JS ...................................................... 57
7.4.1. Crear espacio en la máquina para alojar la aplicación de React.JS ......... 58
7.4.2. Ejecutar la aplicación recién creada ........................................................ 58
7.4.3. Escribir código para la aplicación ........................................................... 59
7.5. Publicación de la app web .................................................................................. 64
7.5.1. Amazon Web Services (AWS) ................................................................ 64
7.5.2. Creación de la cuenta en AWS ................................................................ 64
7.5.3. Compilación de la aplicación en el entorno local ................................... 65
7.5.4. Creación del bucket ................................................................................. 66
7.5.5. Alojamiento de la app web dentro del bucket creado en S3 ................... 66
7.6. Generación del código QR ................................................................................. 68
7.7. Pruebas ............................................................................................................... 68
8. DIAGRAMA DE FLUJO ...................................................................................... 69
9. CONCLUSIONES Y RECOMENDACIONES .................................................... 70
10. BIBLIOGRAFÍA ................................................................................................... 72
TABLA DE ILUSTRACIONES
Ilustración 1. Diagrama aproximado de cómo interactúa la gravedad. ........................... 24
Ilustración 2. Propuesta 1 de calculadora en Excel ......................................................... 33
Ilustración 3. Propuesta 2 de calculadora en Excel ......................................................... 34
Ilustración 4. Propuesta 3 de calculadora en Excel ......................................................... 34
Ilustración 5. Instalación de las versiones de Android 8.1, 9 y 10 .................................. 35
Ilustración 6. Ventana de inicio Android Studio ............................................................. 35
Ilustración 7. Ventana tipos de Activities ........................................................................ 36
Ilustración 8. Nombre, ruta de guardado y lenguaje de programación de la aplicación. 36
Ilustración 9. Cantidad relativa de usuarios de cada versión de Android. ...................... 37
Ilustración 10. Ventana gráfica de Android Studio. ........................................................ 37
Ilustración 11. Opción Paste que permite agregar imágenes a la aplicación. ................. 38
Ilustración 12. Cuadro de diálogo para subir una imagen al programa. .......................... 38
Ilustración 13. Inicio de la ventana Strings. .................................................................... 39
Ilustración 14. Programación en XML para asignación de ID en los botones. ............... 39
Ilustración 15. Cambio de fondo de la aplicación. .......................................................... 40
Ilustración 16. Previsualización de las imágenes subidas para el fondo. ........................ 40
Ilustración 17. Panel de componentes para asignar a la Activity. .................................... 41
Ilustración 18. Ubicación espacial de los componentes. ................................................. 41
Ilustración 19. Vinculación de los ID en XML con la vista gráfica. ............................... 42
Ilustración 20. Resultado final de la ventana de inicio. ................................................... 42
Ilustración 21. Cambio en el estilo y característica del botón. ........................................ 43
Ilustración 22. Estilo nuevo de los botones. .................................................................... 43
Ilustración 23. Ventana Text. ........................................................................................... 44
Ilustración 24. Ventana Text de programación ................................................................ 44
Ilustración 25. Creación de una nueva Activity. .............................................................. 45
Ilustración 26. Características de la nueva Activity. ........................................................ 45
Ilustración 27. Programación de la vinculación entre las otras Activities. ...................... 46
Ilustración 28. Asignación de la clase creada. ................................................................. 46
Ilustración 29. Demostración Activity Detalles. .............................................................. 47
Ilustración 30. Programación ventana Strings. ................................................................ 47
Ilustración 31. Resultado base de la Activity Detalles. .................................................... 48
Ilustración 32. Botón "volver" Activity Detalles. ............................................................ 48
Ilustración 33. Ubicación espacial del Scrollview. .......................................................... 49
Ilustración 34. Componente Scrollview. .......................................................................... 49
Ilustración 35. Programación XML para la Activity Detalles.......................................... 50
Ilustración 36. Creación de variables en Java. ................................................................ 50
Ilustración 37. Vinculación de datos introducidos por el usuario y variables en Java .... 51
Ilustración 38. Creación nueva clase Public. .................................................................. 52
Ilustración 39. Tipo de variables según el tipo "Int" o "Double". ................................... 53
Ilustración 40. Cálculos. .................................................................................................. 53
Ilustración 41. Variable resultados. ................................................................................. 54
Ilustración 42. Solución mostrada al usuario. ................................................................. 54
Ilustración 43. Asignación de las clases .......................................................................... 55
Ilustración 44. Edición de iconos. ................................................................................... 56
Ilustración 45. Resultado final del icono seleccionado. .................................................. 56
Ilustración 46. Código de programación para mostrar el logo de la aplicación. ............. 57
Ilustración 47. Descarga de la biblioteca JavaScript. ...................................................... 57
Ilustración 48. Carpeta de la aplicación creada según la ruta.......................................... 58
Ilustración 49. Activación en el LocalHost de la aplicación creada. .............................. 58
Ilustración 50. Ventana de la aplicación en blanco creada. ............................................. 59
Ilustración 51. Descarga del software Atom. .................................................................. 59
Ilustración 52. Ventana de inicio del software Atom. ..................................................... 60
Ilustración 53. Comparación carpeta React y las carpetas en Atom. .............................. 60
Ilustración 54. Creación de componentes. ....................................................................... 61
Ilustración 55. Vista parcial de la aplicación. ................................................................. 61
Ilustración 56. Código de para la creación de botones. ................................................... 61
Ilustración 57. Código solicitud clase file para archivos formatos .csv y .txt. ................ 62
Ilustración 58. Código lectura de los archivos. ............................................................... 62
Ilustración 59. Variables asignadas para los cálculos. .................................................... 63
Ilustración 60. Creación de cada función según su operación. ....................................... 63
Ilustración 61. Vista final app web. ................................................................................ 63
Ilustración 62. Logo Amazon Web Services ................................................................... 64
Ilustración 63. Registro en el servicio web de Amazon. ................................................. 64
Ilustración 64. Pago realizado por los servicios de AWS. .............................................. 65
Ilustración 65. Creación y configuración del Bucket. ..................................................... 66
Ilustración 66. Alojamiento de la aplicación en el Bucket. ............................................. 66
Ilustración 67. Ingreso de la carpeta Build en el Bucket.................................................. 67
Ilustración 68. Resultado final de la aplicación............................................................... 67
Ilustración 69. Código QR ............................................................................................... 68
LISTA DE TABLAS
Tabla 1 - Trabajo de Jhon Alexander Galindo Ambuila ................................................. 16
Tabla 2 - Trabajo de María Rodríguez Velásquez y Kevin Rojas Gaitán ....................... 17
Tabla 3 - Trabajo de Juan David Ferro Falla y Reinaldo Corredor Romero ................... 17
Tabla 4 - Trabajo de Natalia Sánchez Torres y Lina Barrera Avellaneda ....................... 18
Tabla 5 - Cuadro de pruebas ............................................................................................ 68
TABLA DE FÓRMULAS
Fórmula 1 - Gravedad ...................................................................................................... 24
Fórmula 2 - Cálculo de la gravedad teórica ..................................................................... 24
Fórmula 3 - cálculo de anomalías .................................................................................... 25
Fórmula 4 - Anomalía de aire libre .................................................................................. 26
Fórmula 5 - Anomalía de Bouguer Simple ...................................................................... 26
Fórmula 6 - Anomalía de Bouguer Total ......................................................................... 26
Fórmula 7 - Anomalía de aire libre .................................................................................. 27
Fórmula 8 - Corrección de Bouguer Simple .................................................................... 27
Fórmula 9 - Corrección topográfica ................................................................................. 27
15
1. ANTECEDENTES Y JUSTIFICACIÓN
El avance tecnológico en instrumentación geofísica ha permitido, a partir de la década de
los cincuenta, el uso del aerotransporte en la adquisición de datos geofísicos. En particular,
el aerotransporte es imprescindible para la realización de reconocimientos magnéticos de
áreas extensas. La principal ventaja de los reconocimientos magnéticos aéreos es, sin lugar a
duda, la rapidez de adquisición de datos. Esto supone una reducción considerable del coste
de la campaña, además de reducir de manera significativa la corrección de las variaciones
temporales del campo magnético terrestre y de la deriva de los instrumentos. El hecho de
realizar las mediciones a cierta altura supone poder reconocer zonas que de otra forma serían
inaccesibles y conseguir, al mismo tiempo, el filtrado de altas frecuencias que generalmente
corresponden a ruidos y perturbaciones. Existen en la actualidad reconocimientos magnéticos
de la mayoría de los países desarrollados, y ciertamente de la mayoría de los países europeos,
que forman parte de la infraestructura geofísica y geológica necesaria para el desarrollo de
estas disciplinas. Por esta causa, la necesidad de disponer de documentos básicos, públicos y
de calidad, llevó al << Servei Geológic de Catalunya>> a la realización del proyecto de Mapa
Aeromagnético de Cataluña, a escala 1:250.000, cuya elaboración se describe en este trabajo
y del Mapa Gravimétrico a escala 1:500.000 que se presenta en un trabajo paralelo. (Zeyen
& Banda, 1988)
Durante 2002-2004 se han realizado dos importantes proyectos de cartografía geológica a
escala 1:50.000 denominados “K” (14 hojas) y “L” (20 hojas; perímetros indicados en la Fig.
2), a los que ha contribuido significativamente la interpretación de las imágenes geofísicas
del vuelo magnético y radiométrico de la República Dominicana (García Lobón y Rey Moral,
2002 a, b). El vuelo se realizó en 1995-96 con una separación de líneas de 1 km y altura
nominal de 120 m. Posteriormente, se efectuaron nuevos vuelos con 500 m de separación de
líneas, fundamentalmente en la Cordillera Central y sus bordes suroccidental y oriental, que
son las áreas vulcanoplutónicas del arco de islas. Además de los vuelos citados, en la
República Dominicana se dispone de varias gravimetrías estructurales, con puntos
irregularmente distribuidos. Estos trabajos geofísicos y cartográficos constituyen los
antecedentes del estudio petrofísico cuyos resultados se presentan en esta publicación.
(García-Lobón & Ayala, 2007)
A continuación, se enunciarán algunos de los muchos trabajos de grado que se han hecho
con respecto a la geofísica para la Universidad Distrital Francisco José de Caldas; se citarán
textualmente los resúmenes de cada trabajo.
16
Tabla 1 - Trabajo de Jhon Alexander Galindo Ambuila
Título
del trabajo
Creación de aplicativo para la reducción de datos de gravimetría y
magnetometría terrestre
Resumen El procesamiento de datos gravimétricos y magnéticos ha sido
identificado como una de las necesidades crecientes dentro del Grupo de
Trabajo Exploración de recursos Geotérmicos del Servicio Geológico
Colombiano (SGC). Dentro de esta se incluye la utilización de altos
volúmenes de datos y de la necesidad de la implementación de herramientas
computacionales para la aplicación de las diferentes correcciones que
requieren los datos de tipo gravimétrico y magnético, y a su vez para la
generación de las diferentes interpolaciones que llevan a la interpretación
de los datos y el análisis del procesamiento realizado. Este trabajo presenta
un conjunto conceptos teóricos aplicados a las diferentes herramientas
desarrolladas sobre el código Python, que tienen como objetivo la ejecución
los algoritmos de gravedad observada, densidad de reducción y de
magnetogramas para cumplir con los estándares de procesamiento
impuestos, y a su vez mejorar la velocidad y precisión de ejecución de los
diferentes algoritmos desarrollados. Para alcanzar este objetivo se brinda
una descripción clara de la forma en la que se ejecutan los diferentes
módulos del programa desarrollado, los cuales son: el módulo de
Corrección de relajación que nos permitir ‘a organizar los datos obtenido a
partir de la magnetometría en un rango establecido de datos, el módulo de
cálculo de deriva que nos brinda la posibilidad de limpiar los datos erróneos
para llegar a un error de cierre óptimo para el procesamiento, el módulo de
correcciones que brinda la posibilidad de aplicar las diferentes correcciones
necesarias para la gravimetría y obtener la interpolación de los datos, el
módulo de magnetogramas dentro del cual se puede visualizar los diferentes
magnetogramas y aplicar las correcciones necesarias sobre los mismos, y
por ´ultimo los módulos de transformación de datos que permiten llevar un
archivo de formato .csv a Excel y Excel a .csv.
Autores Jhon Alexander Galindo Ambuila
Año 2017
URL http://hdl.handle.net/11349/7875
17
Tabla 2 - Trabajo de María Rodríguez Velásquez y Kevin Rojas Gaitán
Título
del trabajo
Determinación de la dorsal Malpelo a partir de gravimetría satelital
Resumen En el documento se presenta el análisis de las anomalías gravimétricas
con datos del satélite Topex Poseidon en el pacífico colombiano. Se
calculan las anomalías Bouguer e isostática en la zona de subducción del
pacifico colombiano y se relacionan con los modelos isostáticos ya
existentes, la información de geología estructural y la sismicidad del área
de estudio.
Autores María Fernanda Rodríguez Velásquez
Kevin Fernando Rojas Gaitán
Año 2019
URL http://hdl.handle.net/11349/15099
Tabla 3 - Trabajo de Juan David Ferro Falla y Reinaldo Corredor Romero
Título
del trabajo
Construcción de un Modelo Matemático y Computacional para la
Interpolación de Trazas Sísmicas Relacionando la Transformación de
Dominio y la Programación Dinámica
Resumen Construcción de un modelo matemático y computacional que me permita
recuperar las trazas sísmicas dispersas o perdidas en la exploración sin
necesidad de realizar todo el reproceso de campo, a través de la
transformación de dominio y el problema inverso en geofísica integrando la
interpolación polinómica por el método de LaGrange , la transformada de
Fourier y las múltiples iteraciones ejecutadas que permitirán recuperar los
datos dispersos mediante la programación dinámica que incorpora
subproblemas superpuestos y subestructuras óptimas.
Autores Juan David Ferro Falla - Reinaldo Corredor Romero
Año 2017
URL http://hdl.handle.net/11349/5923
18
Tabla 4 - Trabajo de Natalia Sánchez Torres y Lina Barrera Avellaneda
Título
del trabajo
Propuesta de una metodología de ajuste de redes gravimétricas. Estudio
de caso zona norte de Colombia
Resumen La gravimetría en Colombia se ha desarrollado desde mediados del siglo pasado, sus avances se han realizado por la necesidad de ser un insumo necesario para determinar un sistema de referencia vertical para el país, su desarrollo ha sido principalmente impulsado por el Instituto Geográfico Agustín Codazzi ya que este es la autoridad encargada de su actualización y toma de datos. En el presente documento se mostrará una metodología de ajuste de una red gravimétrica de orden 3, con datos tomados sobre las líneas de nivelación de la zona norte del país obteniéndose lecturas de valor de gravedad relativa, esta metodología será sustentada con un aplicativo de elaboración propia, el cual tiene como principal objetivo la comparación con los datos ya ajustados por el Instituto Geográfico Agustín Codazzi con el programa usado oficialmente por el grupo interno de trabajo GIT Geodesia (GRAVNETG), debido a que este no presenta una documentación de su implementación, por lo cual se hace necesario para optimizar el trabajo en el área de este grupo de la institución, documentar y tener un seguimiento del proceso de ajuste. El contenido del trabajo constará de un análisis y procesamiento de los datos obtenidos en campo, para luego revisar sus inconsistencias y ser eliminadas para evitar el ruido en la realización de los cálculos, se harán las correcciones instrumentales y la debida conversión a valores de gravedad (Miligales) para así tener valores iniciales de gravedad que por medio de mínimos cuadrados será ajustado logrando así minimizar errores.
Autores Natalia Carolina Sánchez Torres
Lina María Barrera Avellaneda
Año 2017
URL http://hdl.handle.net/11349/6362
19
2. JUSTIFICACIÓN
En la actualidad el número de personas que disponen en todo momento de un Smartphone
es cada vez mayor, lo que abre la posibilidad de desarrollar aplicaciones que son dirigidas a
un público objetivo más estricto como lo son los ingenieros, NicMic es una aplicación de
este tipo, la cual posee un bajo peso una vez instalada y una facilidad para acceder a ella,
generando una buena posibilidad para realizar y facilitar los cálculos de la corrección de
Bouguer Simple.
Cuando se realizan trabajos de campos en la mayoría de los casos no se puede disponer
de un computador o puede que su batería no sea capaz de soportar el tiempo necesario para
realizar el trabajo, en cambio un Smartphone sí es capaz de sobrellevar dichos problemas
además de que en muchas ocasiones puede que solo sea necesario corregir 10 puntos lo que
hace engorroso la creación de una hoja de Excel para una cantidad de puntos tan baja, sin
embargo, este problema se ve cubierto por NicMic, la cual en una de sus funciones permite
la corrección individual de los puntos de manera fácil y así mismo se puede guardar la
información simplemente tomando un pantallazo, agilizando el proceso de los cálculos.
NicMic también permite la corrección por puntos de grupos, facilitando cálculos y
ofreciendo una alternativa segura y rápida, lo que claramente proporcionara una eficiencia
mayor a la hora de realizar dichas operaciones, así mismo NicMic es capaz de funcionar en
computadores y Tabletas para que cualquier persona interesada en realizar la corrección
pueda obtenerla sin ningún inconveniente.
NicMic además es una aplicación gratuita, lo que ahorraría gastos innecesarios a las
empresas que realizan mediciones gravimétricas y tienen la necesidad de realizar cálculos de
corrección como el antes mencionado.
20
3. PLANTEAMIENTO DEL PROBLEMA
Utilizar el campo gravitacional de la Tierra para estudiar su estructura interna, es un
método extremadamente efectivo empleado para demostrar variaciones estructurales en todas
las profundidades y longitudes dentro de la superficie terrestre. (Central Washington
University, 2019)
Una anomalía gravimétrica es el resultado final de restar de la gravedad observada (que
depende de las densidades de los materiales presentes en el suelo y de la latitud del punto
donde se tomaron los datos). Los datos gravimétricos obtenidos en campo deben ser sujetos
a procesos que determinen sus anomalías y así mismo las correcciones necesarias para
obtener.
Para postprocesar los datos obtenidos en campo se hace necesaria la ejecución de cálculos
que son tediosos si se realizan a mano y también en computador, además, en la actualidad no
se cuenta con una aplicación disponible para móviles, que calcule las anomalías y
correcciones gravimétricas en tiempo real y esto sería de gran ayuda para exploraciones
sísmicas y mineras, empresas petroleras y estudios en el campo de la geofísica.
21
4. OBJETIVOS
4.1. Objetivo General
Desarrollar una aplicación de software móvil que calcule con eficiencia y rapidez
una o varias anomalías gravimétricas y sus correcciones.
4.2. Objetivos Específicos
• Generar una base de ecuaciones como calculadora previa para optimizar procesos
de programación.
• Desarrollar una aplicación que calcule anomalías y correcciones gravimétricas.
• Realizar pruebas a la aplicación para identificar fallos.
• Optimizar procesos de cálculo de anomalías y correcciones gravimétricas.
• Proveer acceso rápido y efectivo a la aplicación para que cualquier persona pueda
hacer uso de ella.
22
5. MARCO TEÓRICO
5.1. Levantamiento
Así se denomina al trabajo en campo de recolectar datos sobre alguna porción
de terreno.
5.2. Levantamiento altimétrico
Es un levantamiento que consiste en recolectar información acerca de los
puntos de elevación en una porción de terreno, teniendo en cuenta sus
características y elementos -bien sean naturales o hechos por la humanidad- y
plasmarlos gráficamente en un perfil, para demarcar o hacer evidentes las
diferencias de nivel. Se realiza con la ayuda de un nivel topográfico.
5.3. Levantamiento planimétrico
Al igual que el altimétrico, consiste en recolectar datos de una porción de
terreno, despreciando las alturas y teniendo en cuenta los ángulos horizontales y
las distancias; el producto final es una salida gráfica con ángulos, distancias,
orientación e idealmente coordenadas. De forma común, se realiza con teodolito
o estación total.
5.4. Levantamientos especiales
Son todos aquellos trabajos de levantamientos que no se pueden realizar o
llevar a cabo mediante el uso de topografía tradicional y sus equipos (nivel de
precisión, teodolito, estación total).
5.5. Levantamiento arquitectónico
Se realiza con el fin de conocer las características de alguna construcción para
generar una documentación gráfica lo más cercana a la realidad, que permita
hacer, entre otros procedimientos, análisis de datos estructurales.
5.6. Latitud
La latitud es el ángulo comprendido desde la línea del Ecuador hasta algún
punto. Va desde los 0° hasta los 180°.
23
5.7. Geofísica
Es la aplicación de los principios y prácticas de la Física para la resolución de
los problemas relacionados con la tierra midiendo de modo indirecto las
variaciones de las magnitudes físicas en el espacio y el tiempo.
Como ocurre en otras ciencias, la Geofísica se divide en dos partes Geofísica
Pura y Geofísica Aplicada. Se denomina Geofísica Pura a la investigación del
planeta en que habitamos con fines de conocimiento científico.
Geofísica Aplicada es el estudio de prospectos de interés económico, buscando
anomalías de los campos físicos terrestre utilizando tecnología que le permite
obtener algún beneficio para la humanidad.
El objetivo principal y actual de la Geofísica es la determinación de la estructura
y composición de la Tierra, así como la historia de sus variaciones pasadas,
presentes y futuras. (Museo Virtual del Servicio Geológico Mexicano, 2019)
La geofísica es la caracterización de la geología, las estructuras geológicas, la
contaminación del agua subsuperficial y elementos antrópicos localizados debajo
de la superficie de la Tierra, basados en cartografía lateral y vertical de las
variaciones propias de dichos materiales; este proceso se lleva a cabo mediante
percepción remota utilizando tecnologías no invasivas. Traducido de
(Environmental and Engineering Geophysical Society, 2019)
La geofísica es la investigación no invasiva de las condiciones subsuperficiales
de la Tierra, mediante mediciones, análisis e interpretaciones de campos físicos
de la superficie; se pueden hacer análisis a varias decenas de metros de
profundidad. Traducido de (Environmental and Engineering Geophysical
Society, 2019)
5.8. Gravedad
Es una fuerza de atracción que existe entre dos masas cualesquiera, dos
cuerpos cualesquiera, dos partículas cualesquiera. La gravedad no es solamente
la atracción entre los objetos y la Tierra. Es una atracción que existe entre todos
los objetos, en todos los lugares del universo. Sir Isaac Newton (1642 – 1727)
descubrió que se requiere una fuerza para cambiar la velocidad o la dirección de
movimiento de un objeto. También descubrió que la fuerza llamada “gravedad”
debe hacer que una manzana se caiga de un árbol, lo que hace que los humanos y
animales vivan en un mundo que gira sin ser expulsados al espacio. Además,
dedujo que la fuerza de gravedad existe entre todos los objetos. Traducido de
(NASA, 2001)
24
Un diagrama aproximado de cómo funciona la gravedad sería así:
Fuente 1(CALCULARTODO, 2019)
Ilustración 1. Diagrama aproximado de cómo interactúa la gravedad.
Por lo tanto,
𝐹 = 𝐺𝑚1𝑚2
𝑑2, 𝐺 = 6.67 × 10−11
Fórmula 1 - Gravedad
Donde:
F = Fuerza de gravedad entre dos cuerpos o masas, en Newton
G = Constante gravitacional
m1 y m2 = Masa 1 y Masa 2, respectivamente
D = Distancia entre el centro de cada cuerpo
5.9. Unidades de la gravedad
1 gal es 1 𝑐𝑚/𝑠2
1 miligal es 0,001 𝑐𝑚/𝑠2
1 gal es 1 𝑐𝑚/𝑠2 ⥤ 1.000 miligales
1 gal es 1 𝑚/𝑠2 ⥤ 100.000 miligales
5.10. Gravedad teórica
Es la gravedad que se obtiene según la latitud de un punto; está dada por la
siguiente ecuación:
𝐺 = −978.0832681(1 + 0.0052789704𝑠𝑒𝑛2𝜑 + 0.0000234611𝑠𝑒𝑛4𝜑)
Fórmula 2 - Cálculo de la gravedad teórica
Donde:
G = Gravedad teórica
= Latitud
25
5.11. Gravedad observada
Es el valor de la gravedad determinado en un punto, por medio de la
observación directa (péndulos verticales) o cuantificado a partir de
procedimientos indirectos (instrumentos de caída libre y gravímetros).
(Repositorio de Tesis de la Universidad de Sonora, 2019)
5.12. Gravimetría
Es la técnica que permite conocer la diferencia de gravedad que existe en
distintos puntos sobre la superficie terrestre. (Repositorio de Tesis de la
Universidad de Sonora, 2019)
La gravimetría es la rama de la geofísica aplicada que se encarga de estudiar
la distribución de masas dentro de la Tierra. Los levantamientos gravimétricos
usan como parámetro físico el hecho de que distintas unidades geológicas poseen
diferentes densidades. Traducido de (Leibniz Institute for Applied Geophysics,
2019)
5.13. Anomalía gravimétrica
La discrepancia entre el valor de gravedad observado o medido, corregido o
bajado al nivel del mar, geoide o elipsoide y el valor teórico calculado. (Estrada,
2012).
Se describe mediante la siguiente ecuación:
𝐴 = 𝑔0 − 𝑔𝑇
Fórmula 3 - cálculo de anomalías
Donde:
A = Anomalía
Gravimétrica. 𝑔0= Gravedad observada.
𝑔𝑇= Gravedad Teórica
26
5.13.1. Anomalía de aire libre
Se describe mediante la siguiente ecuación:
𝑨𝑨 = 𝒈𝟎 − 𝒈𝑻 + 𝑪𝑨
Fórmula 4 - Anomalía de aire libre
Donde:
𝐴𝐴 = Anomalía de aire
libre.
𝑔0= Gravedad observada.
𝑔𝑇= Gravedad Teórica.
𝐶𝐴 = Corrección de aire
libre
5.13.2. Anomalía de Bouguer Simple
Se describe mediante la siguiente ecuación:
𝐴𝐵𝑆 = 𝑔0 − 𝑔𝑇 + 𝐶𝐴 − 𝐶𝐵
Fórmula 5 - Anomalía de Bouguer Simple
Donde:
𝐴𝐴 = Anomalía de aire
libre.
𝑔0= Gravedad observada.
𝑔𝑇= Gravedad Teórica.
𝐶𝐴 = Corrección de aire
libre.
𝐶𝐵 = Corrección de
Bouguer.
5.13.3. Anomalía de Bouguer Total
Se describe mediante la siguiente ecuación:
𝐴𝐵𝑆 = 𝑔0 − 𝑔𝑇 + 𝐶𝐴 − 𝐶𝐵 − 𝐶𝐵𝑇
Fórmula 6 - Anomalía de Bouguer Total
Donde:
𝐴𝐴 = Anomalía de aire
libre.
𝑔0= Gravedad observada.
𝑔𝑇= Gravedad Teórica.
𝐶𝐴 = Corrección de aire
libre.
𝐶𝐵 = Corrección de
Bouguer.
27
5.14. Corrección gravimétrica
La gravedad medida en la superficie de la Tierra generalmente no sirve para
hacer interpretaciones con respecto a las estructuras geológicas, porque varios
efectos diferentes se superponen y encubren las anomalías buscadas. La
separación y eliminación de estos efectos indeseables de la gravedad medida
siempre es el primer paso de la gravimetría aplicada después de las mediciones.
Este proceso es llamado corrección/reducción. Traducido de (Research Group
"Geophysics and Geoinformation", 2019)
5.14.1. Corrección de Aire libre
Se describe mediante la siguiente ecuación:
𝐶𝐴 = −0,3081ℎ (𝑚𝐺𝑎𝑙)
Fórmula 7 - Anomalía de aire libre
Donde h = Altura del punto sobre el nivel del mar en metros
5.14.2. Corrección de Bouguer Simple
Se describe mediante la siguiente ecuación:
𝐶𝐵 = 1.119ℎ (𝑚𝐺𝑎𝑙)
Fórmula 8 - Corrección de Bouguer Simple
Donde h = Altura del punto sobre el nivel del mar en metros
5.14.3. Corrección topográfica (equivalente a Corrección de Bouguer Total)
Se describe mediante la siguiente ecuación:
𝐶𝑇 = 1.119𝑟 (𝑚𝐺𝑎𝑙)
Fórmula 9 - Corrección topográfica
Donde r = Radio utilizado (en metros)
28
5.15. Sistema operativo
Un sistema operativo es un conjunto de programas que permite manejar la
memoria, disco, medios de almacenamiento de información y los diferentes
periféricos o recursos de nuestra computadora o móvil. (CILSA O.N.G. por la
inclusión, 2019)
Capa compleja entre el hardware y el usuario, concebible también como una
máquina virtual, que facilita al usuario o al programador las herramientas e
interfaces adecuadas para realizar sus tareas informáticas, abstrayéndole de los
complicados procesos necesarios para llevarlas a cabo. (Baz Alonso, Ferreira
Artime, Álvarez Rodríguez, & García Baniello, 2019)
5.16. Aplicación
Una app es una herramienta diseñada para desarrollar una función específica
en una plataforma concreta: móvil, Tablet, tv, pc, entre otros. El término se deriva
de la palabra en inglés application, lo que significa Aplicación, se puede
descargar o acceder a las aplicaciones desde un teléfono o desde algún aparato
móvil – como, por ejemplo, una Tablet o un reproductor MP3. (López Castañeda,
2019)
5.16.1. Aplicaciones nativas
Son todas aquellas que se desarrollan para un sistema operativo en específico.
5.16.2. Aplicaciones web
Son aplicaciones versátiles a las cuales se puede acceder desde distintos dispositivos y no están diseñadas para algún sistema operativo en específico.
5.16.3. Aplicaciones web nativas o híbridas
Son una combinación de la aplicación web y nativa.
5.17. Lenguaje de programación
Los lenguajes de programación son lenguajes de notación artificiales creados
o desarrollados para ser usados al momento de preparar o escribir instrucciones
en forma de código en un computador para posteriormente ser ejecutadas por este.
Usualmente los lenguajes de programación están compuestos por series de reglas
de uso (sintaxis) que determinan los significados (semántica) de las expresiones
escritas en el lenguaje. Cada lenguaje de programación trabaja junto con su
29
traductor (intérprete o compilador). Traducido de INTRODUCTION TO
COMPUTER PROGRAMMING (BASIC) (Usman, Owoade, Abimbola, &
Ogunsanwo, 2019)
5.18. Android
Es el sistema operativo desarrollado por la empresa de tecnologías Google, y
su lenguaje de programación es Java.
El código fuente de Android es gratuito y todo el mundo puede descargarlo,
personalizarlo y distribuirlo. El modelo de código abierto de Android fomenta la
innovación, ya que ofrece a los fabricantes de dispositivos libertad para
personalizar sus teléfonos y el Sistema Operativo Android y preinstalar las
aplicaciones que deseen. (Google, 2019)
5.19. Blueprint
La ventana Blueprint es una representación detalla de la aplicación, en la cual
se muestran datos de importancia como la ubicación de los elementos con
respecto a los demás y a los bordes de la pantalla del dispositivo. Traducido de
(Taylor, 2005)
5.20. Activity
Dentro de la programación se puede decir que cada ventana que posee una
aplicación es una Activity por consiguiente si una aplicación posee 4 ventanas se
puede decir que contiene 4 “actividades” o “Activities”, todas las Activities están
conformadas por dos partes: la parte lógica y la parte gráfica. La parte lógica es
un archivo .java que es la clase que se crea para poder manipular, interactuar y
colocar el código de esa actividad y la parte gráfica es un XML que tiene todos
los elementos que se van viendo de una pantalla declarados con etiquetas
parecidas a las del HTML. (Desarrolloweb.com, 2019)
5.21. JAVA
JAVA es un lenguaje de programación y una plataforma informática, permite
realizar cualquier tipo de programa y en la actualidad es un lenguaje muy
extendido y cada vez posee más importancia tanto en el ámbito del Internet como
en la informática en general. (Desarrolloweb.com, 2019)
5.22. XML
XML es un metalenguaje, lo que quiere decir que XML no es un lenguaje en
sí mismo, en cambio es un sistema que permite definir lenguajes de acuerdo con
las necesidades; XHTML, MathML y SVG son algunos de los lenguajes que el
XML tiene la capacidad de definir. (Definicion.de, 2019)
30
5.23. Procesos de optimización
Son todos los procesos que se ejecutan para automatizar al máximo todas las
partes de algún proceso.
5.24. Interfaz de usuario
Es la manera en la que un usuario puede comunicarse o interactuar con una
máquina (generalmente un computador, aunque también se entiende para
móviles), hace referencia al hardware y al software.
5.25. React.JS
React.JS es una librería de código abierto de JavaScript que es utilizada para
desarrollar interfaces de usuario, específicamente para aplicaciones web. Es
utilizada para administrar las capas visibles (front end) para aplicaciones web y
móviles, a la vez que permite desarrollar interfaces de usuario reutilizables. Fue
creada por Jordan Walke, un ingeniero de software que trabaja para Facebook.
Traducido de (C# Corner, 2019)
5.26. Node.js
Está diseñada para crear aplicaciones de red escalables. Es un intérprete de
JavaScript que funciona como back end, donde se puede ejecutar código de forma
eficiente.
5.27. Componente
Los componentes permiten separar la interfaz de usuario en piezas
independientes, reutilizables y pensar en cada pieza de forma aislada.
Conceptualmente, los componentes son como las funciones de JavaScript.
Aceptan entradas arbitrarias (llamadas “props”) y devuelven a React elementos
que describen lo que debe aparecer en pantalla. (React.JS, 2019)
5.28. Clase
Son funciones que se utilizan para generar nuevos objetos.
5.29. Compilación
Es el proceso mediante el cual un intérprete (compilador) traduce el código
fuente escrito por el programador, en lenguaje máquina que el computador o
dispositivo puede interpretar y ejecutar las órdenes que el usuario solicitó
mediante el código fuente.
31
5.30. Servicio Amazon S3
Amazon Simple Storage Service es un servicio de almacenamiento para Internet. Está diseñado para facilitar a los desarrolladores recursos de computación escalables basados en Web.
Amazon S3 tiene una interfaz de servicios web simple que puede utilizar para
almacenar y recuperar cualquier cantidad de datos, en cualquier momento, desde
cualquier parte de la web. Ofrece a cualquier desarrollador acceso a la misma
infraestructura de almacenamiento de datos económica, altamente escalable,
fiable, segura y rápida que utiliza Amazon ara mantener su propia red global de
sitios web. Este servicio tiene como fin maximizar los beneficios del escalado y
trasladarlos a los desarrolladores. (Amazon, 2019)
5.31. Bucket
En términos de implementación, los buckets son contenedores de objetos y
Amazon S3 proporciona Application Program Interfaces (API, Interfaces de
programación de aplicaciones) para que pueda administrarlos. Por ejemplo, puede
crear un bucket y cargar objetos con la API de Amazon S3. También puede usar
la consola de Amazon S3 para realizar estas operaciones. La consola utiliza las
API de Amazon S3 para enviar solicitudes a Amazon S3.
Un nombre de bucket de Amazon S3 es globalmente único y todas las cuentas
de AWS comparten el espacio de nombres. Esto significa que, una vez que se crea
un bucket, ninguna otra cuenta de AWS de ninguna otra región de AWS puede
usar el nombre de ese bucket hasta que el bucket se elimina. No debe confiar en
convenciones específicas de nomenclatura de buckets para propósitos de
verificación de la seguridad o disponibilidad. (Amazon, 2019)
5.32. Código QR
Un código QR es un código de barras bidimensional cuadrada que puede
almacenar los datos codificados. La mayoría del tiempo los datos es un enlace a un
sitio web (URL) (Unitag, 2019).
32
6. METODOLOGÍA
El desarrollo de la aplicación se ejecutará en tres grandes pasos:
6.1. Desarrollo de una base de ecuaciones como calculadora previa
Esto con el fin de tener una plantilla de cálculos e interfaz visual ya definida
para que, al momento de programar la aplicación, sea mucho más fácil y sencillo
hacerlo.
6.2. Desarrollo de la aplicación en Android Studio
La programación base de la aplicación se realizó en el programa Android
Studio en los lenguajes de programación XML y Java para versiones de Android
comprendidas entre 4.2 a 10.
6.3. Desarrollo de la aplicación web en React.JS
La programación de la ventana para calcular grupos de puntos en la aplicación
se realizó en la biblioteca / framework React.JS, utilizando lenguajes tales como
HTML, JavaScript y CSS.
7. DESARROLLO DE LA PROPUESTA
7.1. Base de cálculos
Se generó una calculadora base como guía, para tener establecidos los pasos a
seguir, la distribución de los botones, qué datos se iban a solicitar al usuario de la
futura aplicación y los resultados esperados de un ejercicio solucionado
previamente.
7.1.1. Datos suministrados por el usuario
Para el cálculo de las anomalías y correcciones gravimétricas en la base de
cálculos, el usuario deberá suministrar la latitud del punto en grados, minutos y
segundos, la gravedad observada (se obtiene del gravímetro), la densidad, el radio
utilizado y la altura en metros sobre el nivel del mar.
33
La base de caculos se optimizó de forma tal que una vez el usuario suministre
los datos de latitud, se hacen los cálculos para obtener la latitud en números
decimales.
A su vez, la base de cálculos fue optimizada para que tan pronto como se
obtenga la latitud en decimales, se calculen los siguientes datos:
• Gravedad teórica
• Anomalía de la gravedad
• Corrección de aire libre
• Anomalía de aire libre
• Corrección de Bouguer Simple
• Anomalía de Bouguer Simple
• Corrección Topográfica
• Anomalía de Bouguer Total
Se hicieron varias calculadoras base en el software Excel de Microsoft, pero finalmente
se eligió el diseño que fuera más cómodo a la vista y sencillo de utilizar.
Fuente 2. Elaboración propia.
Ilustración 2. Propuesta 1 de calculadora en Excel
34
Fuente 3. elaboración propia
Ilustración 3. Propuesta 2 de calculadora en Excel
Fuente 4. elaboración propia
Ilustración 4. Propuesta 3 de calculadora en Excel
35
7.2. Programación en Android Studio
Para comenzar la programación primero se deben configurar las versiones de Android que
serán instaladas en los emuladores de los diferentes dispositivos en los cuales se realizarán
las pruebas de la aplicación.
Fuente 5. Elaboración propia
Ilustración 5. Instalación de las versiones de Android 8.1, 9 y 10
De esta forma se descargan los complementos de compatibilidad de las versiones de
Android 8.0(Oreo), 8.1(Oreo), 9.1 y 10.
Ya una vez descargadas las diferentes versiones de Android se procede a iniciar el
programa, en la ventana de inicio del programa para esto solo se accede a la opción “Start a
new Android Studio Project”.
Fuente 6. Elaboración propia
Ilustración 6. Ventana de inicio Android Studio
36
Inmediatamente después el programa pedirá seleccionar el tipo de pestaña o Activity y
para este caso será una Activity en blanco.
Fuente 7. Elaboración propia.
Ilustración 7. Ventana tipos de Activities
En la ventana siguiente se puede asignar un nombre a la aplicación y una ruta donde se
guardarán los diferentes archivos generados durante la programación; en este caso, la ruta se
deja por defecto y se le asigna el nombre “NicMic” además también se puede seleccionar el
tipo de lenguaje de programación entre Java y Kotlin, el cual también se dejará por defecto
con el lenguaje Java.
Fuente 8. Elaboración propia.
Ilustración 8. Nombre, ruta de guardado y lenguaje de programación de la aplicación.
37
En la opción “minimum API level” se hace referencia a la versión mínima de Android que
soportará la app, para el desarrollo de esta aplicación se seleccionó un API 15 que hace
referencia a la versión de Android 4.0.1 y que estima más de un 99.6% de compatibilidad
con los distintos dispositivos Android, garantizando así la mayor cobertura respecto a la
población mundial que dispone de un Smartphone Android.
Fuente 9. Android Studio.
Ilustración 9. Cantidad relativa de usuarios de cada versión de Android.
Una vez configurado lo antes mencionado, el programa se inicia automaticamente, donde
lo primero que se muestra es la ventana de acción con la vista de la Activity y el blueprint
que permiten mediante el lenguaje de programación XML realizar el diseño grafico de la
aplicación.
Fuente 10. Elaboración propia.
Ilustración 10. Ventana gráfica de Android Studio.
38
7.2.1. Diseño gráfico de la aplicación
Primero se cargan las imágenes que se usarán en el diseño de la aplicación, para esto hay
que ir a la carpeta Res, luego en la carpeta Drawable y se hace clic derecho para finalmente
seleccionar la opción “Paste”.
Fuente 11. Elaboración propia.
Ilustración 11. Opción Paste que permite agregar imágenes a la aplicación.
De inmediato se desplegará una ventana donde se puede seleccionar las imágenes que
vamos a utilizar es necesario tener en cuenta que exista la condición en la cual se debe tener
el nombre de la imagen en minúsculas, así mismo no puede llevar caracteres especiales
incluyendo el espacio.
Fuente 12. Elaboración propia.
Ilustración 12. Cuadro de diálogo para subir una imagen al programa.
39
El siguiente paso consiste en activar la ventana de programación strings que permite
programa en el lenguaje XML, para esto simplemente se busca en la ruta Res, values y luego
strings.
Fuente 13.Elaboración propia.
Ilustración 13. Inicio de la ventana Strings.
Una vez activa la ventana “Strings” se procede a programar los ID de cada complemento
que contendrá la Activity. Para este caso este Activity solo contendrá 3 botones que tendrar
los IDs “Boton_A1_1”, “Boton_A2_2””Boton_A3_3” en esta misma ventana se le asigna el
nombre que se mostrará al usuario sobre el botón que serán “Punto individual”, “Grupo de
puntos” y “Detalles” respectivamente.
Fuente 14. Elaboración propia.
Ilustración 14. Programación en XML para asignación de ID en los botones.
40
Continuando en la ventana “All atributes” se cargan las imágenes que se subieron en el
punto anterior (véase página 39), para esto se hace uso de la opción “background”
Fuente 15.Elaboración propia.
Ilustración 15. Cambio de fondo de la aplicación.
En la sección Project se escoge la imagen que se desea y esto se puede hacer ya sea según
su nombre o la previsualización pues ambos atributos son mostrados a l usuario por Android
Studio.
Fuente 16. Elaboración propia.
Ilustración 16. Previsualización de las imágenes subidas para el fondo.
41
Luego se agregan los elementos gráficos que interactuarán directamente con el usuario;
simplemente es necesario seleccionar los componentes que se quieren añadir y se arrastran
hacia la previsualización de la Activity.
Fuente 17. Elaboración propia.
Ilustración 17. Panel de componentes para asignar a la Activity.
Una vez seleccionados y ubicados los componentes se les asigna una ubicación especifica
con respecto a los bordes de la pantalla y de los otros componentes a su alrededor.
Fuente 18. Elaboración propia.
Ilustración 18. Ubicación espacial de los componentes.
42
Ahora en la sección Constraints se puede editar la altura y la longitud de cada componente,
también es posible editar el texto que se desea mostrar para esto se realiza una vinculación
desde la ventana “Strings” en la ilustración 19 mediante el comando Ctrl + espacio y luego
se selecciona según el ID con el cual se programó.
Fuente 19. Elaboración propia.
Ilustración 19. Vinculación de los ID en XML con la vista gráfica.
Para finalmente tener los nombres programados de la siguiente forma:
Fuente 20. Elaboración propia.
Ilustración 20. Resultado final de la ventana de inicio.
43
Ahora se selecciona cada botón de forma individual y se modifican algunos aspectos
estéticos tales como su forma, aspecto y color; en este caso se redondean los bordes. Nota:
estos componentes pueden cambiar según las pruebas realizadas en cada dispositivo).
Fuente 21. Elaboración propia.
Ilustración 21. Cambio en el estilo y característica del botón.
Fuente 22. Elaboración propia.
Ilustración 22. Estilo nuevo de los botones.
44
7.2.2. Rotación automática
En muchos casos los usuarios suelen usar sus celulares con la rotación automática activa
y es necesario considerar este factor a la hora de programar, para evitar posibles cierres
inesperados de la aplicación cuando el usuario coloque de manera horizontal su smartphone,
esto se realiza desde la ventana de programación en XML que el programa dispone y que se
encuentra en la parte inferior izquierda con el nombre “Text”.
Fuente 23. Elaboración propia.
Ilustración 23. Ventana Text.
Una vez en dicha ventana se cambia la primera línea de código que indica la orientación
de la Activity y se reemplaza por el comando “RelativeLayout” que permitirá a la Activity
funcionar tanto en forma vertical como en horizontal.
Fuente 24. Elaboración propia.
Ilustración 24. Ventana Text de programación
45
7.2.3. Creación de las demás Activities
Para poder crear una segunda Activity dando clic derecho sobre “App” se selecciona la
opción New luego a Activity y finalmente se selecciona Empty Activity.
Fuente 25. Elaboración propia.
Ilustración 25. Creación de una nueva Activity.
Se desplegará inmediatamente una ventana donde se permite asignarle el nombre a la
nueva Activity y así mismo cambiar algunas propiedades como el lenguaje de programación,
para la programación de la app se dejarán todas las funciones por defecto.
Fuente 26. Elaboración propia.
Ilustración 26. Características de la nueva Activity.
46
7.2.4. Vinculación entre Activities
Ahora ubicados a la Activity principal o Activity de bienvenida que se encuentra con el
nombre Main Activity, se programan las clases de tipo Public Void para ser asignadas a los
botones que vincularán a las otras Activities creadas.
Fuente 27. Elaboración propia.
Ilustración 27. Programación de la vinculación entre las otras Activities.
Se le asigna cada clase main a los respectivos botones para de esta forma el usuario al
tocar cada botón o interactuar con él será enviado a la Activity correspondiente.
Fuente 28. Elaboración propia.
Ilustración 28. Asignación de la clase creada.
47
7.2.5. Activity “Detalles”
De la misma manera en que se programó a la Activity inicial se programa la Activity
Detalles con el fondo y se le asigna en este caso un TextView.
Fuente 29. Elaboración propia.
Ilustración 29. Demostración Activity Detalles.
En la ventana “Strings” se programa en XML el texto que se mostrar en dicho TextView
tal como se muestra en la Ilustración 14.
Fuente 30. Elaboración propia.
Ilustración 30. Programación ventana Strings.
48
Por estética se asignaron varios TextView:
Fuente 31. Elaboración propia.
Ilustración 31. Resultado base de la Activity Detalles.
Finalmente se agrega un botón que permita al usuario volver a la Activity inicial.
Fuente 32. Elaboración propia.
Ilustración 32. Botón "volver" Activity Detalles.
49
7.2.6. Activity “Calcular”
Esta pestaña o Activity contiene los componentes ya nombrados en las Activities anteriores
con algunos elementos adicionales como un Scrollview que permite al usuario desplazarse
por la pantalla de manera vertical además se agregó una serie de EditText donde el usuario
podrá introducir los datos.
Fuente 33. Elaboración propia.
Ilustración 33. Ubicación espacial del Scrollview.
NOTA: El Scrollview debe ir acompañado de un LinearLayout en el cual se introducirán
los demás complementos.
Fuente 34. Elaboración propia.
Ilustración 34. Componente Scrollview.
50
Debido a que se debe agregar cada componente dentro del LinearLayout es necesario
asignar cada EditText y cada TextView, así como los botones desde la ventana “Text” de
código en XML mediante sus respectivos nombres en código, así como sus ID, su ubicación
espacial en la pantalla y sus dimensiones.
Fuente 35. Elaboración propia.
Ilustración 35. Programación XML para la Activity Detalles.
Una vez el usuario introduzca los datos, estos deben ser extraídos y vinculados a variables
dentro del código en Java de esta Activity; para que esto sea posible primero se debe utilizar
variables de tipo Private según su tipo ya sea EditText o TextView y asignarla dentro del
código Java.
Fuente 36. Elaboración propia.
Ilustración 36. Creación de variables en Java.
51
Luego se extraen los datos que el usuario introdujo en los EditText mediante la
herramienta findViewById que permite extraer información basándose en el ID de los
componentes que se encuentren dentro de la clase de tipo R, y dichos valores son reasignados
a las variables de tipo privados que se encuentran en Java.
Fuente 37. Elaboración propia.
Ilustración 37. Vinculación de datos introducidos por el usuario y variables en Java
52
También como lo hecho con la Activity Detalles se creó el botón de devolver y se asigna
otra clase en Public con la cual el usuario podrá iniciar los cálculos.
Fuente 38. Elaboración propia.
Ilustración 38. Creación nueva clase Public.
53
Para Trabajar con números decimales en Java es necesario usar variables de tipo
“Double”, pero posteriormente se debe reducir la cantidad de decimales que el programa
reconozca y para las variables de tipo entero se usa el tipo “int”.
Fuente 39. Elaboración propia.
Ilustración 39. Tipo de variables según el tipo "Int" o "Double".
Se programan las fórmulas según lo establece el método y utilizando la base de cálculos
como guía, se obtiene:
Fuente 40. Elaboración propia.
Ilustración 40. Cálculos.
54
Finalmente se asigna una variable con el nombre “Resultado” que será de tipo “string” y
se encargará de recoger los resultados de cada cálculo para finalmente en un TextView
mostrárselos al usuario.
Fuente 41. Elaboración propia.
Ilustración 41. Variable resultados.
De esta forma el resultado final con la línea de código sería:
Fuente 42. Elaboración propia.
Ilustración 42. Solución mostrada al usuario.
55
Y como se hizo con los demás botones, se asigna el código hecho al botón “Calcular”:
Fuente 43. Elaboración propia.
Ilustración 43. Asignación de las clases
7.3. Cambio del icono de la aplicación
El icono es la imagen de presentación de la aplicación este se mostrará en el escritorio del
usuario entre sus otras aplicaciones y podrá verse también en la sección de aplicaciones en
segundo plano.
56
Para poder realizar el cambio del icono según una imagen antes creada, dando clic derecho
a la carpeta app luego new y finalmente en “Image Asset” donde se desplegará la ventana de
edición con las diferentes previsualizaciones del icono según la circunstancia.
Fuente 44. Elaboración propia.
Ilustración 44. Edición de iconos.
Se generará un logo para todas las condiciones de la app (como el estado inactivo, la
función en segundo plano o la Play Store)
En Asset Type se selecciona la imagen y luego en Path se busca la imagen creada y se
ajusta al criterio del programador; en este caso se optó por dejarla así:
Fuente 45. Elaboración propia.
Ilustración 45. Resultado final del icono seleccionado.
57
Una vez ya creado el logo y se programa para que aparezca en el Action Bar con la
siguiente línea de código
Fuente 46. Elaboración propia.
Ilustración 46. Código de programación para mostrar el logo de la aplicación.
7.4. Desarrollo de la aplicación web en React.JS
La idea es desarrollar una aplicación web sencilla que permita al usuario subir un archivo
en formato .txt o .csv
Lo primero para desarrollar aplicaciones en cualquier lenguaje, es descargar el código
fuente de ese lenguaje para tener acceso a las bibliotecas y herramientas de este, así que se
procede a descargar e instalar Node.JS, que es el código fuente de JavaScript que permite
trabajar del lado del servidor, lo que hace que sea un entorno de desarrollo de interfaz de
usuario mucho más eficiente, haciendo que el servidor en sí mismo soporte miles de
conexiones al tiempo. En este caso se trabajó con un computador con Windows como sistema
operativo de 64 bits.
Fuente 47. Elaboración propia.
Ilustración 47. Descarga de la biblioteca JavaScript.
58
7.4.1. Crear espacio en la máquina para alojar la aplicación de React.JS
Hay que abrir la terminal cmd, escribir “cd” seguido de un espacio y la ubicación donde
se quiere guardar la aplicación generada.
A continuación, se escribe la orden npx create-react-app nicmic. Inmediatamente el
framework empezará a crear el espacio en la máquina para alojar la aplicación con todas sus
carpetas, este proceso puede tardar varios minutos.
El resultado es este, desde el explorador de archivos de la computadora se visualiza el
proyecto:
Fuente 48. Elaboración propia.
Ilustración 48. Carpeta de la aplicación creada según la ruta.
7.4.2. Ejecutar la aplicación recién creada
Posteriormente es necesario abrir de nuevo la terminal cmd, digitar “cd” seguido de la ruta
donde está la aplicación alojada, se presiona Enter y posteriormente se escribe la orden “npm
start” y Enter nuevamente.
Fuente 49. Elaboración propia.
Ilustración 49. Activación en el LocalHost de la aplicación creada.
59
Esto hará que se ejecute la aplicación y se abra una ventana en el explorador de internet
que por defecto tiene asignado la computadora, un servidor local (localhost:3000) con el
contenido de la aplicación.
Fuente 50. Elaboración propia.
Ilustración 50. Ventana de la aplicación en blanco creada.
Como la aplicación todavía tiene todas sus carpetas vacías y sin código, saldrá una pestaña
del explorador de internet que dirá que no se puede acceder a este sitio web, pero esto irá
cambiando a medida que se agregue código.
7.4.3. Escribir código para la aplicación
Para escribir código es necesario un editor de texto bien estructurado y hecho
precisamente para desarrolladores, en este caso se recomienda utilizar Atom. (Disponible en
atom.io (Atom, 2019))
Fuente 51. Elaboración propia.
Ilustración 51. Descarga del software Atom.
60
La instalación y primera ejecución de Atom puede tardar varios minutos, para luego
enseñar al usuario esta pantalla con dos paneles.
Fuente 52. Elaboración propia.
Ilustración 52. Ventana de inicio del software Atom.
Para empezar a escribir código, se puede hacer de dos formas: en el panel de la izquierda
llamado Project, habrá que arrastrar la carpeta que se creó con React.JS, en donde está todo
el proyecto de la aplicación o en el botón Open Project, habrá que buscar entre los archivos
del computador, la carpeta que contiene el proyecto de React.JS.
Al abrir el proyecto en Atom, se visualizará el siguiente panel, que contiene las mismas
carpetas y archivos creados por React.JS.
Fuente 53. Elaboración propia.
Ilustración 53. Comparación carpeta React y las carpetas en Atom.
React.JS es una biblioteca que trabaja mediante componentes; Los componentes permiten
separar la interfaz de usuario en piezas independientes, reutilizables y pensar en cada pieza
de forma aislada. (React.JS, 2019).
61
Es importante aclarar que la carpeta node_modules es un directorio que es creado cuando
se ejecuta el comando “npm install”; la carpeta build será la que contenga todos los scripts y
códigos necesarios que se subirán posteriormente a un servidor web.
Para este proyecto se crearon dos componentes dentro de la carpeta src: uno llamado
AppliedRoute.js, mediante la siguiente línea de código:
Fuente 54. Elaboración propia.
Ilustración 54. Creación de componentes.
Este componente hará que la página se renderice de nuevo después de procesar todos los
datos que el usuario suministre y mediante los Props, se pasarán datos de componentes
“padres” a componentes “hijos” y no se pueden modificar.
El segundo componente creado, se llama ExtractFiles.js que es donde estará alojado el
código más importante de la aplicación y que alojará un botón que será el que al ser oprimido,
hará que se ejecute el algoritmo destinado a procesar todos los datos y generar un reporte con
los resultados.
La vista parcial de la aplicación web es esta:
Fuente 55. Elaboración propia.
Ilustración 55. Vista parcial de la aplicación.
El código para crear botones es el siguiente:
Fuente 56. Elaboración propia.
Ilustración 56. Código de para la creación de botones.
62
Se solicitará al usuario que suba un archivo en formato .txt o .csv con los datos de
gravimetría que desea procesar, así que se escribe código para permitir dichos formatos
mediante este código con la función o clase files:
Fuente 57. Elaboración propia.
Ilustración 57. Código solicitud clase file para archivos formatos .csv y .txt.
Una vez el usuario haya subido su archivo, el computador o teléfono deberá analizar el
documento para separar cada tipo de dato y ubicarlo en su correspondiente clase.
Como los archivos con los datos de gravimetría contendrán valores de varias variables, es
indispensable establecer un orden para que el usuario organice sus datos antes de subirlos a
la aplicación. El orden de las columnas del formato .txt o .csv elegido por los desarrolladores
es este:
1) ID (número)
2) Grados
3) Minutos
4) Segundos
5) Altura (en metros)
6) Densidad
7) Radio utilizado (metros)
8) Gravedad observad
Para que el archivo de texto sea “leído” por la máquina y separado por líneas, es decir,
pasar de un dato tipo string a un array, será necesario utilizar el comando “Split” y el código
es este, que a su vez dará un Enter cuando se llegue al final de los datos de un solo punto:
Fuente 58. Elaboración propia.
Ilustración 58. Código lectura de los archivos.
63
Luego se ingresan mediante distintas funciones, las variables que tendrá cada columna de
archivo de datos, y se ingresan en el orden anteriormente establecido:
Fuente 59. Elaboración propia.
Ilustración 59. Variables asignadas para los cálculos.
Como todos los datos de variables pueden contener decimales, se cambia el tipo de dato
Int por un Float.
Ahora hay que desarrollar la calculadora en sí misma, la que procesará todos los datos, lo
que hay que hacer es crear funciones: una función por cada operación, así:
Fuente 60. Elaboración propia.
Ilustración 60. Creación de cada función según su operación.
Finalmente, y después de modificar los textos de cada componente, la vista final de la app
web queda así:
Fuente 61. Elaboración propia.
Ilustración 61. Vista final app web.
64
7.5. Publicación de la app web
Como la aplicación fue desarrollada desde un servidor local y personal, será necesario
subirla a algún servidor global que sirva de alojamiento en la nube y que permita que
cualquier persona alrededor del mundo pueda utilizarla, en caso contrario, la persona que
quisiera utilizarla debería tener todo el código de la aplicación en su dispositivo. En este
orden de ideas, es necesario buscar la forma de alojar la aplicación en algún servidor de
acceso mundial, y bajo la recomendación Jhon Guzmán, un ingeniero experto en desarrollo
de aplicaciones de todo tipo y que ostenta el título de ser el único Elastic Certified Engineer
en Colombia, se decidió utilizar la plataforma Amazon Web Services.
7.5.1. Amazon Web Services (AWS)
Amazon Web Services (AWS) es la plataforma en la nube más
adoptada y completa en el mundo, que ofrece más de 175 servicios
integrales de centros de datos a nivel global. Millones de clientes,
incluyendo las empresas emergentes que crecen más rápido, las
compañías más grandes y los organismos gubernamentales líderes,
están utilizando AWS para reducir los costos, aumentar su agilidad
e innovar de la forma más rápida. (Amazon, 2019)
7.5.2. Creación de la cuenta en AWS
Para acceder a los servicios web de Amazon, es necesario registrarse, y el proceso es el
siguiente:
Fuente 63. Elaboración propia.
Ilustración 63. Registro en el servicio web de Amazon.
Ilustración 62. Logo
Amazon Web Services
Fuente 62. (Amazon, 2019)
65
Es importante aclarar que para crear una cuenta en AWS es necesario tener una tarjeta de
crédito, pues efectuarán un cobro inmediato para validar la cuenta; en este caso, el cobro fue
de $3522.48 pesos colombianos.
Fuente 64. Elaboración propia.
Ilustración 64. Pago realizado por los servicios de AWS.
7.5.3. Compilación de la aplicación en el entorno local
Una vez finalizado el desarrollo de la aplicación, hay que compilarla para detectar los
posibles errores de sintaxis que harían que la aplicación no funcionase bien o simplemente
no lo hiciera.
Para ejecutar la compilación, se abre la terminal cmd, se va a la ubicación de la carpeta
que contiene alojada la aplicación y se escribe el comando npm run build.
66
7.5.4. Creación del bucket
En la sección de S3 de Amazon Web Services, aparecerá la opción de crear un nuevo
bucket: Hay que introducir el nombre deseado para el bucket y la página arrojará si es válido
o no, la región seleccionada deberá ser la más cercana a la localidad donde se desarrolló la
aplicación y posteriormente configurar el bucket.
Fuente 65. Elaboración propia.
Ilustración 65. Creación y configuración del Bucket.
Colombia no está dentro de las regiones disponibles en AWS, así que se seleccionó el
Norte de California por ser la más cercana.
7.5.5. Alojamiento de la app web dentro del bucket creado en S3
Fuente 66. Elaboración propia.
Ilustración 66. Alojamiento de la aplicación en el Bucket.
67
Como el bucket está vacío, habrá que ingresar en él el contenido de la carpeta build de la
aplicación, así:
Fuente 67. Elaboración propia.
Ilustración 67. Ingreso de la carpeta Build en el Bucket.
Al hacer clic en el enlace index.html, la página dirige al usuario a otra ventana con esta
URL: https://nicmic.s3-us-west-1.amazonaws.com/index.html , donde podrá encontrar la
aplicación web disponible para cualquier parte del mundo.
Fuente 68. Elaboración propia.
Ilustración 68. Resultado final de la aplicación
68
7.6. Generación del código QR
Una vez subido el archivo de la APK al Google Drive personal de uno de los autores, se
generó un vínculo compartido mediante un enlace; posteriormente, en la página web
www.codigos-qr.com/generador-de-codigos-qr/ se obtuvo el siguiente código QR.
Fuente 69. Elaboración propia.
Ilustración 69. Código QR
7.7. Pruebas
Se realizaron pruebas en diversos dispositivos teniendo en cuenta características tales
como la marca y la versión de Android, como se muestra en la siguiente tabla:
Tabla 5 - Cuadro de pruebas
Marca Modelo Versión
de Android
¿Funciona? ¿Se
visualiza
bien?
Parche de
seguridad
Huawei P9 Lite - Sí No -
Huawei P20 Lite 9.0 Sí Sí 6/octubre/2019
Xiaomi Redmi Note 8 - Sí No 1/octubre/2019
Motorola Moto E4 Plus 7.1.1 Sí Sí 5/agosto/ 2018
Huawei P Smart 2019 9.0 Sí Sí 6/octubre/2019
Motorola One 9.0 Sí Sí 1/noviembre/2019
Huawei Y9 2019 9.0 Sí Sí 6/octubre/2019
Samsung Galaxy J8 9.0 Sí No 1/agosto/2019
Huawei Mate 20 Lite 9.0 Sí Sí -
Motorola G7 9.0 Sí Sí -
Xiaomi Redmi Note 7 9.0 Sí No -
69
8. DIAGRAMA DE FLUJO
70
9. CONCLUSIONES Y RECOMENDACIONES
• La aplicación calcula con eficiencia hasta 9.000 puntos de forma simultánea, con
su función “grupo de puntos” siempre y cuando tenga una conexión a internet,
cumpliendo así el objetivo general con el que se planteó este proyecto.
• Es indispensable que se fortalezcan los contenidos vistos dentro de las asignaturas
de lógica de programación e ingeniería de software que los estudiantes de
Ingeniería Topográfica de la Universidad Distrital Francisco José de Caldas deben
atender dentro de su currículo obligatorio de materias.
• Al desarrollar una aplicación híbrida, es necesario tener conocimientos básicos y
avanzados de lenguajes de programación para mezclar las diferentes interfaces
necesarias para desarrollar la parte móvil y web de las aplicaciones.
• Se desarrolló una aplicación híbrida que le permite al usuario elegir entre las
opciones de calcular las anomalías y correcciones gravimétricas para un punto
individual o para un conjunto de puntos.
• La biblioteca elegida para desarrollar la aplicación web es React.JS, que al ser
una biblioteca de código abierto y reutilizable hace que programar sea mucho más
intuitivo.
• Para hacer que la aplicación web funcione desde cualquier lugar del mundo y no
solo desde el servidor local, fue necesario comprar un dominio web que permitió
alojar ahí el código.
• Se utilizaron los lenguajes de programación Java, JavaScript, XML y el lenguaje
de marcado HTML para desarrollar la aplicación tanto en Android Studio como
en React.JS.
• La calculadora desarrollada como base previa a la programación cumple con la
función para la que fue programada, pues el usuario fácilmente y de forma intuitiva puede suministrar los datos requeridos para obtener los cálculos finales
que satisfacen los problemas presentados al iniciar este trabajo.
• Por problemas técnicos, no fue posible emular virtualmente distintos teléfonos,
con lo cual fue necesario hacer pruebas en teléfonos físicos.
• Se probó la aplicación de dos formas: instalando directamente el APK de la
aplicación en el teléfono y depurándola mediante USB directamente desde el
computador.
71
• Se realizaron pruebas de la aplicación en distintos modelos y marcas de teléfonos,
encontrando que en algunas referencias de Huawei, Xiaomi y Samsung no se
visualiza correctamente la aplicación; esto es debido a los colores utilizados
durante el desarrollo de esta.
• No fue posible emular distintos teléfonos de forma virtual, lo que llevó a la
obligación de probar la aplicación en teléfonos físicos.
• Se realizaron pruebas de la aplicación en 11 modelos distintos y marcas de
teléfonos, encontrando que en algunas referencias de Huawei, Xiaomi y Samsung
no se visualiza correctamente la aplicación; esto es debido a los colores utilizados
durante el desarrollo de esta.
• Los porcentajes de cobertura del parche de seguridad de Android del 1 y 5 de
agosto, el 1 de octubre de 2019 y el 1 de noviembre de 2019 es de 9.1% cada uno,
el 6 de octubre de 2019 el 27.3% y no se conoce información referente al parche
de seguridad del 36.4% del total de teléfonos.
• Los algoritmos planteados para desarrollar esta aplicación convierten complejas
y extensas ecuaciones en sencillos pasos que hacen que la aplicación sea ligera.
• Fue necesario desarrollar varias versiones de la base de cálculos en Excel, de
forma previa a la aplicación en Android, para saber cuál sería la opción más
adecuada, fácil, sencilla e intuitiva que tendría el usuario final.
• Generar un código QR facilita a los usuarios instalar la aplicación.
• Aunque no es posible calcular un grupo de puntos sin una conexión a internet sí
es permisible realizar cálculos para un punto individual; lo que facilita realizar
correcciones de puntos olvidados en lo cálculos previos, o puntos que se desean
verificar directamente en campo, pues tal proceso no requiere de una conexión a
internet.
72
10. BIBLIOGRAFÍA
Amazon. (10 de Diciembre de 2019). Amazon Web Services. Obtenido de
https://aws.amazon.com/es/what-is-aws/?nc1=f_cc
Atom. (12 de Diciembre de 2019). ATOM. Obtenido de atom.io
Baz Alonso, A., Ferreira Artime, I., Álvarez Rodríguez, M., & García Baniello, R. (2019).
Dispositivos móviles.
C# Corner. (17 de Noviembre de 2019). Obtenido de What is ReactJS and why should we
use ReactJS: https://www.c-sharpcorner.com/article/what-and-why-reactjs/
CALCULARTODO. (20 de Octubre de 2019). Obtenido de
HTTPS://WWW.CALCULARTODO.COM/MECANICA/FUERZA-DE-
GRAVEDAD.PHP
Central Washington University. (20 de Octubre de 2019). Department of Geological
Sciences. Obtenido de
http://www.geology.cwu.edu/facstaff/tim/TEACHING/Geophysics/gravity_geoid.p
df
CILSA O.N.G. por la inclusión. (9 de Noviembre de 2019). Obtenido de
https://desarrollarinclusion.cilsa.org/tecnologia-inclusiva/que-es-un-sistema-
operativo/
Definicion.de. (23 de Noviembre de 2019). Definición.de. Obtenido de
https://definicion.de/xml/
Desarrolloweb.com. (15 de Noviembre de 2019). Desarrolloweb.com. Obtenido de
https://desarrolloweb.com/articulos/android-que-es-una-activity-o-actividad.html
Environmental and Engineering Geophysical Society. (20 de Octubre de 2019). Obtenido de
EEGS Foundation: https://www.eegs.org/what-is-geophysics-
Estrada, L. (2012). Universidad Nacional de Tucumán. Obtenido de Facultad de Ciencias
Exactas y Tecnología Departamento de Geodesia y Topografía: https://www.liag-
hannover.de/fileadmin/user_upload/dokumente/grundwassersysteme/burval/buch/05
1-064.pdf
García-Lobón, J., & Ayala, C. (2007). Cartografía geofísica de la República Dominicana:
datos de densidad, susceptibilidad magnética y magnetización remanente. Madrid.
Google. (2019). Android. Obtenido de https://www.android.com/intl/es_es/everyone/
Leibniz Institute for Applied Geophysics. (29 de Octubre de 2019). Obtenido de
https://www.liag-
hannover.de/fileadmin/user_upload/dokumente/grundwassersysteme/burval/buch/05
1-064.pdf
73
López Castañeda, M. (29 de Octubre de 2019). Qué son las apps y tipos de apps. Obtenido
de Universidad Tecnológica de Pereira:
http://univirtual.utp.edu.co/pandora/recursos/2000/2591/2591.pdf
Museo Virtual del Servicio Geológico Mexicano. (20 de Octubre de 2019). Obtenido de
https://www.sgm.gob.mx/Web/MuseoVirtual/Geofisica/Introduccion-geofisica.html
NASA. (Febrero de 2001). Starchild Question. Obtenido de
https://starchild.gsfc.nasa.gov/docs/StarChild/questions/question30.html
React.JS. (12 de Octubre de 2019). React.js. Obtenido de
https://es.reactjs.org/docs/components-and-props.html
ReactJS. (18 de Noviembre de 2019). ReactJs. Obtenido de Componentes y propiedades:
https://es.reactjs.org/docs/components-and-props.html
Repositorio de Tesis de la Universidad de Sonora. (29 de Octubre de 2019). Obtenido de
http://tesis.uson.mx/digital/tesis/docs/20345/Capitulo10.pdf
Research Group "Geophysics and Geoinformation". (2 de Noviembre de 2019). Obtenido de
http://www.gravity.uni-kiel.de/Curso-
Caracas/reduccion_de_datos_y_anomalias_gravimetricas.html
Taylor, D. L. (2005). MACHINE TRADES BLUEPRINT READING - second edition. Nueva
York: Thomson.
Unitag. (2019). Unitag. Obtenido de https://www.unitag.io/es/qrcode/what-is-a-qrcode
Usman, O., Owoade, A., Abimbola, B., & Ogunsanwo, G. (2019). INTRODUCTION TO
COMPUTER PROGRAMMING (BASIC).
Zeyen, H., & Banda, E. (1988). CARTOGRAFÍA GEOFÍSICA EN CATALUÑA. I: EL
MAPA AEROMAGNÉTICO. Revista de la Sociedad Geológica de España.
Obtenido de SGE.