universidad francisco de paula santander

Transcripción

universidad francisco de paula santander
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
BIBLIOTECA EDUARDO COTE LAMUS
RESUMEN – TESIS DE GRADO
AUTORES: FRANCISCO JAVIER RADA NIÑO
OMAR ARGENIS DUARTE MALDONADO
FACULTAD: INGENIERIA
PLAN DE ESTUDIOS: INGENIERIA DE SISTEMAS
DIRECTOR: NELSON BELTRÁN GALVIS
TITULO DE LA TESIS: WEB PARA EL ACCESO A LA INFORMACIÓN GEOGRÁFICA
DEL DEPARTAMENTO NORTE DE SANTANDER Y LAS VARIABLES E INDICADORES
SISTEMATIZADOS POR EL PROYECTO OBSERVATORIO REGIONAL DE PAZ
RESUMEN:
Se recopiló la información cartográfica de cada municipio del departamento Norte de
Santander; clasificando la información de variables e indicadores de los tres ejes básicos
(derechos humanos, gobernabilidad y participación ciudadana, desarrollo
socioeconómico) provista por el observatorio. Se migraron los datos espaciales y no
espaciales que se encuentran en sistemas de archivo a almacenamiento persistente en
la base de datos. Así mismo, se integró la base de datos espacial con la base de datos
del proyecto Observatorio Regional de Paz (ORDICOP). Además, se desarrolló la
aplicación Web SIG, visualizando la información geográfica del departamento Norte de
Santander y las variables e indicadores sistematizados por el Observatorio Regional
Paz. Por último, se implementó el plan de pruebas, con el fin de garantizar el
cumplimiento de los requisitos planteados por ORDICOP.
CARACTERÍSTICAS:
PAGINAS: 177
PLANOS:
ILUSTRACIONES:
CD-ROM: 1
WEB PARA EL ACCESO A LA INFORMACIÓN GEOGRÁFICA DEL
DEPARTAMENTO NORTE DE SANTANDER Y LAS VARIABLES E
INDICADORES SISTEMATIZADOS POR EL PROYECTO OBSERVATORIO
REGIONAL DE PAZ
FRANCISCO JAVIER RADA NIÑO
OMAR ARGENIS DUARTE MALDONADO
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
FACULTAD DE INGENIERÍA
PLAN DE ESTUDIOS DE INGENIERÍA DE SISTEMAS
SAN JOSÉ DE CÚCUTA
2010
WEB PARA EL ACCESO A LA INFORMACIÓN GEOGRÁFICA DEL
DEPARTAMENTO NORTE DE SANTANDER Y LAS VARIABLES E
INDICADORES SISTEMATIZADOS POR EL PROYECTO OBSERVATORIO
REGIONAL DE PAZ
FRANCISCO JAVIER RADA NIÑO
OMAR ARGENIS DUARTE MALDONADO
Trabajo de grado presentado como requisito para optar al título de:
Ingeniero de Sistemas
Director:
NELSON BELTRÁN GALVIS
Ingeniero de Sistemas
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER
FACULTAD DE INGENIERÍA
PLAN DE ESTUDIOS DE INGENIERÍA DE SISTEMAS
SAN JOSÉ DE CÚCUTA
2010
A mi madre, Angelina Niño Peñaranda, por darme la vida más feliz que un niño
deseara vivir.; tú eres la luz que siempre brilla en medio de todas mis confusiones,
tus oraciones siempre están conmigo, tus cuidados y tu amor me permiten seguir
creciendo y ser un hombre mejor, gracias a ti logro este merito.
A mis tías, Carmen Niño, Trinidad Niño, Margarita Niño y Rosa Niño Peñaranda,
por estar atentas de mí y no dejarme decaer.
A mis hermanas, Judith Rada y Ariela Rada, aunque estén física o mentalmente
distantes los llevo siempre en mi corazón.
A mis primos Álvaro Niño y Margarita Espejo, por su fraternidad y su apoyo y por
ser dos hermanos más.
A mi esposa, Sandra Patricia Ordoñez León, tu cariño y tu amor me han ayudado
a superar los momentos difíciles, llegaste en el momento preciso como un
designio divino para guiarme con tu consejo e inteligencia, sin ti no habría podido
alcanzar el éxito.
A mi amiga, Kelly Roció Niño, la familia no se elige los amigos si y por eso son
especiales, gracias por tu amistad y por tus concejos.
Francisco Javier
A mis padres, Luis Duarte y Mariela Maldonado, por su amor, comprensión y
respaldo además de sus esfuerzos para hacerme la persona que soy hoy en día.
A mi abuela, Carmen Vera, por brindarme todo el amor y el cuidado necesario en
mis primeros años.
A mi hermana, Liliana Duarte, por compartir conmigo momentos de alegría y
tristeza que siempre estarán en nuestros recuerdos.
A mi novia, Yesenia Diosa, por ser mi complemento y brindarme su amor, en el
transcurso de todos estos años.
Omar Argenis
AGRADECIMIENTOS
Los autores expresan sus agradecimientos a:
Doctor Víctor Bautista Olarte, Coordinador del proyecto ORDICOP, por habernos
permitido realizar nuestro trabajo de grado en el torno al proyecto Ordicop
permitiéndonos aplicar nuestros conocimientos y habilidades y así mismo obtener
nuevos conocimientos.
Ingeniero de Sistemas Nelson Beltrán Galvis, director del trabajo de grado, por sus
consejos y asesorías técnica y metodológica, que nos ayudo a enfocarnos
siempre en la solución del problema.
Ingeniero Carlos René Angarita, por su asesoría técnica y por la atención que nos
prestó durante el transcurso del estudio realizado.
Equipo de trabajo del Proyecto ORDICOP, especialmente a la Ingeniera de
Sistemas Claudia Yamile Gómez Llanes, por sus consejos, recomendaciones,
asesorías y todos sus aportes que sin duda permitieron la realización de un
excelente trabajo.
Los docentes del Plan de Estudios de Ingeniería de Sistemas, en especial a los
Ingenieros Oscar gallardo, Pilar Rodríguez Tenjo y Marco Adarme, jurados del
trabajo de grado, por su colaboración y recomendaciones hechas a la
investigación.
Grupo GIDIS, por permitir que nuestro trabajo de grado hiciera parte del grupo de
investigación.
CONTENIDO
pág.
INTRODUCCION
18
1. GENERALIDADES
21
1.1 INTRODUCCIÓN A LOS SISTEMAS DE INFORMACIÓN
GEOGRÁFICOS
22
1.1.1 Flujo de trabajo de un SIG
23
1.1.2 Modelos de datos en un SIG
26
1.1.3 Sistemas de Información Geográficos en la Web (WebGIS)
33
1.2 BASES DE DATOS GEOGRÁFICAS Y DATOS ESPACIALES
33
1.2.1 Consultas espaciales
33
1.3 INTRODUCCIÓN A LA CARTOGRAFÍA
34
1.3.1 Cartográfica temática
35
1.3.2 Métodos de clasificación de datos
37
1.3.3 Simbología
40
1.3.4 Sistemas de proyecciones
41
1.3.5 Sistemas de coordenadas
43
1.4 MAPAS TEMÁTICOS CON MAPSERVER
45
2. CAPTURA Y PROCESAMIENTO DE LOS DATOS
46
2.1 DATOS TEMÁTICOS
46
2.2 DATOS ESPACIALES
47
2.3 TRATAMIENTO DE LOS DATOS ESPACIALES
52
2.4 FUSIÓN O UNIFICACIÓN DE LAS FUENTES DE DATOS
54
3. ACTIVIDADES DESARROLLADAS
55
4. METODOLOGIA DE DESARROLLO
59
5. DESARROLLO DEL PROYECTO
63
5.1 FASE I EXPLORATORIA
63
5.2 FASE II PLANIFICACION
71
6. CONCLUSIONES
108
7. RECOMENDACIONES
109
BIBLIOGRAFÍA
110
ANEXOS
111
LISTA DE FIGURAS
pág.
Figura 1. Logotipo Observatorio de Paz
21
Figura 2. El flujo de trabajo en un SIG
23
Figura 3. Topologías validas e inválidas
24
Figura 4. El proceso de fusión de las fuentes de datos
25
Figura 5. Partes del análisis georreferencial
26
Figura 6. Representación de puntos en el modelo vectorial
27
Figura 7. Representación de polígonos en el modelo vectorial
28
Figura 8. Representación de líneas en el modelo vectorial
28
Figura 9. Elementos que conforman un archivo de formas (shape .shp)
30
Figura 10. Modelo de datos raster, distribución de continentes y océanos
31
Figura 11. Modelo TIN, elevación de superficies en 3D
32
Figura 12. Tipos de consultas espaciales
34
Figura 13. Intervalos basados en cuantiles
38
Figura 14. Representación utilizando intervalos iguales
39
Figura 15. Intervalos basados en puntos de corte natural
40
Figura 16. El cubo de colores
41
Figura 17. Proyección cilíndrica
42
Figura 18. Proyección transversa
43
Figura 19. Sistema de coordenadas con paralelos y meridianos
43
Figura 20. Sistema de coordenadas geográficas, latitud y longitud
44
Figura 21. La estructura del mapfile
45
Figura 22. Consola programa shp2pgsql
52
Figura 23. Referenciación de los datos espaciales
54
Figura 24. El ciclo de desarrollo en XP
59
Figura 25. PostgreSQL / PostGIS
67
Figura 26. MapServer
68
Figura 27. Funcionamiento del servidor de mapas MapServer
69
Figura 28. Partición de imagen utilizando tiled cache
71
LISTA DE CUADROS
pág.
Cuadro 1. Entidades geométricas para la representación vectorial
29
Cuadro 2. Breve listado de variables por eje de investigación
46
Cuadro 3. SRID (Spatial Referencing System Identifier) aplicado a los
archivos de formas transformados
53
Cuadro 4. Asignación de prioridades a las historias de usuario
72
Cuadro 5. Cronograma de tareas por Iteraciones
73
Cuadro 6. Planificación de iteraciones
81
Cuadro 7. Historias de la iteración 1
81
Cuadro 8. Historias de la iteración 2
82
Cuadro 9. Historias de la iteración 3
82
Cuadro 10. Historias de la iteración 4
82
Cuadro 11. Historias de la iteración 5
83
Cuadro 12. Planificación de las tareas
84
Cuadro 13. Tareas realizadas para HU-01
85
Cuadro 14. Tareas realizadas para HU-02
89
Cuadro 15. Tareas realizadas para HU-03
91
Cuadro 16. Tareas realizadas para HU-04
93
Cuadro 17. Tareas realizadas para HU-05
94
Cuadro 18. Tareas realizadas para HU-06
96
Cuadro 19. Tareas realizadas para HU-07
98
Cuadro 20. Tareas realizadas para HU-08
99
Cuadro 21. Tareas realizadas para HU-09
100
Cuadro 22. Tareas realizadas para HU-10
100
Cuadro 23. Tareas realizadas para HU-11
103
Cuadro 24. Tareas realizadas para HU-12
104
Cuadro 25. Tareas realizadas para HU-13
105
Cuadro 26. Tareas realizadas para HU-14
106
LISTA DE FORMATOS
pág.
Formato 1. Cartografía correspondiente al límite departamental
47
Formato 2. Cartografía correspondiente al límite internacional (frontera con
Venezuela)
48
Formato 3. Cartografía correspondiente al ámbito regional
49
Formato 4. Cartografía correspondiente al ámbito municipal
50
Formato 5. Cartografía correspondiente al ámbito veredal
51
Formato 6. Descripción de la historia de usuario consultar mapa
74
Formato 7. Descripción de la historia de usuario configurar mapa
74
Formato 8. Descripción de la historia de usuario tipo de mapa
75
Formato 9. Descripción de la historia de usuario ver mapa
75
Formato 10. Descripción de la historia de usuario mover mapa
76
Formato 11. Descripción de la historia de usuario navegar mapa
76
Formato 12. Descripción de la historia de usuario registrar usuario
77
Formato 13. Descripción de la historia de usuario ingresar al sistema
77
Formato 14. Descripción de la historia de usuario salir del sistema
78
Formato 15. Descripción de la historia de usuario imprimir mapa
78
Formato 16. Descripción de la historia de usuario administrar eje temático
79
Formato 17. Descripción de la historia de usuario administrar variables
79
Formato 18. Descripción de la historia de usuario administrar indicador
80
Formato 19. Descripción de la historia de usuario administrar estudio anual
80
Formato 20. Descripción de la tarea T-01 para la historia HU-01
86
Formato 21. Descripción de la tarea T-02 para la historia HU-01
86
Formato 22. Descripción de la tarea T-03 para la historia HU-01
87
Formato 23. Descripción de la tarea T-04 para la historia HU-01
87
Formato 24. Descripción de la tarea T-05 para la historia HU-01
88
Formato 25. Descripción de la tarea T-06 para la historia HU-01
88
Formato 26. Descripción de la tarea T-01 para la historia HU-02
89
Formato 27. Descripción de la tarea T-02 para la historia HU-02
89
Formato 28. Descripción de la tarea T-03 para la historia HU-02
90
Formato 29. Descripción de la tarea T-04 para la historia HU-02
90
Formato 30. Descripción de la tarea T-01 para la historia HU-03
91
Formato 31. Descripción de la tarea T-02 para la historia HU-03
91
Formato 32. Descripción de la tarea T-03 para la historia HU-03
92
Formato 33. Descripción de la tarea T-04 para la historia HU-03
92
Formato 34. Descripción de la tarea T-01 para la historia HU-04
93
Formato 35. Descripción de la tarea T-02 para la historia HU-04
93
Formato 36. Descripción de la tarea T-03 para la historia HU-04
94
Formato 37. Descripción de la tarea T-01 para la historia HU-05
94
Formato 38. Descripción de la tarea T-02 para la historia HU-05
95
Formato 39. Descripción de la tarea T-03 para la historia HU-05
95
Formato 40. Descripción de la tarea T-01 para la historia HU-06
96
Formato 41. Descripción de la tarea T-02 para la historia HU-06
96
Formato 42. Descripción de la tarea T-03 para la historia HU-06
97
Formato 43. Descripción de la tarea T-04 para la historia HU-06
97
Formato 44. Descripción de la tarea T-01 para la historia HU-07
98
Formato 45. Descripción de la tarea T-02 para la historia HU-07
98
Formato 46. Descripción de la tarea T-03 para la historia HU-07
99
Formato 47. Descripción de la tarea T-01 para la historia HU-08
99
Formato 48. Descripción de la tarea T-01 para la historia HU-09
100
Formato 49. Descripción de la tarea T-01 para la historia HU-10
101
Formato 50. Descripción de la tarea T-02 para la historia HU-10
101
Formato 51. Descripción de la tarea T-03 para la historia HU-10
102
Formato 52. Descripción de la tarea T-04 para la historia HU-10
102
Formato 53. Descripción de la tarea T-01 para la historia HU-11
103
Formato 54. Descripción de la tarea T-02 para la historia HU-11
103
Formato 55. Descripción de la tarea T-01 para la historia HU-12
104
Formato 56. Descripción de la tarea T-02 para la historia HU-12
104
Formato 57. Descripción de la tarea T-01 para la historia HU-13
105
Formato 58. Descripción de la tarea T-02 para la historia HU-13
105
Formato 59. Descripción de la tarea T-01 para la historia HU-14
106
Formato 60. Descripción de la tarea T-02 para la historia HU-14
106
Formato 61. Descripción de la tarea T-03 para la historia HU-14
107
LISTA DE ANEXOS
pág.
Anexo A. Fase III - diseño
112
Anexo B. Fase IV desarrollo
162
Anexo C. Fase V pruebas
175
INTRODUCCION
El presente trabajo, se desarrollo en el marco de la alianza entre la Universidad
Francisco de Paula Santander, la Gobernación del Departamento de Norte de
Santander y el proyecto observatorio regional para el desarrollo integral y la
convivencia pacífica de Norte de Santander (ORDICOP), este trabajo se planteo
como apoyo a las actividades desarrollas dentro de la perspectiva de trabajo del
Observatorio regional de paz, encaminado en los tres ejes temáticos; cultura de
paz y derechos humanos, gobernabilidad democrática y desarrollo
socioeconómico.
En este contexto se implemento una aplicación web basada en un diseño por
capas, esta solución permite realizar un análisis exploratorio de datos espaciales
básico, junto con la posibilidad de visualizar, manipular y consultar estos datos
gráficamente de una manera ágil con una gran interactividad gracias a la
aplicación del conjunto de tecnologías AJAX, esta pretende ser una herramienta
con la capacidad de ayudar a las personas interesadas en la temática a realizar
una caracterización del territorio, establecer diagnósticos para la situación actual y
evaluar propuestas para el establecimiento de planes de trabajo.
Otro aspecto importante en el desarrollo del trabajo es que se observo la
necesidad de transferir la información sistematizada al público, por lo tanto se
facilito el acceso a la aplicación y se implementaron interfaces para la fácil
interpretación de la información producida, dado que al parecer existe una
tendencia a imponer restricciones directas por parte de las instituciones que
procesan información espacial o indirectas por cuenta de los altos costos que
implica la adquisición de software especializado para el tratamiento de datos
geográficos, el mantenimiento de sistemas de información geográficos y el
entrenamiento que se debe proporcionar al personal que lo maneja.
En la actualidad los diferentes municipios del Departamento de Norte de
Santander no cuentan con fuentes de datos abiertas que suministren la
información necesaria en cuanto a la situación geográfica, disposición y
distribución espacial, que les permita identificar las capacidades y recursos
territoriales con los cuales cuenta su respectivo municipio.
Pese a que en la actualidad se están desarrollando proyectos para cubrir estas
necesidades de información por parte de instituciones del gobierno a nivel
18
nacional y la existencia de herramientas que permiten un acceso más o menos
global a esos datos geográficos, por ahora no existe una solución a corto plazo
que integre el conjunto de soluciones especificas necesarias para el proyecto
ORDICOP tales como: Integración de los datos propietarios recopilados por el
Observatorio con datos espaciales de los municipios del Norte de Santander y
acceso por parte del público a estos datos.
La carencia de este sistema ha limitado la disposición de información al público
por parte del ORDICOP, por cuanto no se dispone de un sistema que relacione los
datos recolectados al sitio de ocurrencia de los fenómenos que estos representan.
Se encuentra que el problema radica en que se requiere presentar información
que se puede representar en una manera mucho más adecuada y legible
mediante el uso de técnicas de cartografía.
Existen muchos datos espaciales recolectados, procesados y organizados, sin
embargo existe una tendencia a imponer restricciones directas o indirectas al
acceso a esa información, ya sea por los altos costos que implica la adquisición de
software especializado como los sistemas de información geográficos (SIG), el
mantenimiento de estos sistemas y el entrenamiento que se debe proporcionar al
personal que lo maneja.
Si bien desde el punto de vista social el uso de la tecnología SIG aporta la
capacidad de comunicar con pocas restricciones los fenómenos geográficos
naturales o artificiales mediante mapas, los aspectos económicos y cognitivos
señalados anteriormente, dificultan la tarea de construcción de mapas por parte de
la gran mayoría del público que alguna vez necesita hacer uso de la información
geográfica.
Conforme a lo mencionado anteriormente, el observatorio regional para el
desarrollo integral y la convivencia pacífica de Norte de Santander (ORDICOP) ha
planteado la necesidad de implementar un sistema de información geográfico
(SIG), el cual va a permitir un acceso libre a información integrada y relacionada a
los distintos municipios que conforman el departamento de Norte de Santander,
dado que estos municipios en muchos casos no cuentan con los recursos de
capital, tecnología y de recurso humano, apropiados para comunicar la
información espacial.
Cerca del 80% de la información tratada por instituciones y empresas públicas o
privadas tienen en alguna medida relación con datos espaciales, lo que demuestra
que la toma de decisiones depende en gran parte de la calidad, exactitud y
19
actualidad de esta información espacial. En este sentido los Sistema de
Información Geográfica (SIG), se han constituido en un arma eficaz a la hora de
complementar el pensamiento y las relaciones de causalidad entre los fenómenos,
teniendo un impacto social importante las investigaciones que se realizan.
Una aplicación web SIG seria relevante para el Observatorio puesto que se
integraría a la estrategia de trabajo de este, proporcionando nuevos métodos y
herramientas para el análisis y la toma de decisiones en torno a las actividades
que se llevan a cabo dentro de la perspectiva de trabajo que incluye: Cultura de
Paz y derechos humanos, Gobernabilidad democrática y desarrollo
socioeconómico. En relación a estos puntos clave para la investigación que lleva a
cabo el Observatorio, el proyectó web SIG permitirá a este relacionar los datos
recolectados con sus respectivas ubicaciones geográficas.
La aplicación web SIG permitirá al Observatorio tener respuestas acertadas
acerca de cuestiones tales como Localización ¿Qué hay en…? Condición ¿Dónde
sucede que…? Tendencias ¿Qué ha cambiado….? Rutas ¿Cuál es el camino
optimo…? Pautas ¿Qué pautas existen…? Modelos ¿Qué ocurriría si…? ,
proporcionándoles herramientas adecuadas, información bien elaborada, de gran
calidad y relacionada a los distintos municipios del Departamento de Norte de
Santander.
20
1. GENERALIDADES
Para entender la motivación y la utilidad del presente proyecto conviene hacer una
breve descripción de lo que es el Observatorio regional para el desarrollo integral y
la convivencia pacífica del Norte de Santander. Este, es un instrumento de
carácter interinstitucional e interdisciplinario que investiga, documenta,
sistematiza, analiza y promueve escenarios, cuya finalidad es favorecer la
gobernabilidad democrática y de convivencia pacífica, como principios rectores
para el desarrollo integral, equitativo y sostenible.
Figura 1. Logotipo Observatorio de Paz
Fuente: OBSERVATORIO REGIONAL PARA EL DESARROLLO INTEGRAL Y LA
CONVIVENCIA PACÍFICA DE NORTE DE SANTANDER. Información general del
observatorio de paz. San José de Cúcuta: ORDICOP, 2009.
Misión. El observatorio es un espacio de investigación y análisis, con criterio
objetivo y propositivo, orientado a producir herramientas que apoyen el accionar
de las entidades comprometidas con el logro de la Paz, la Gobernabilidad, y el
desarrollo Integral de la región y de la frontera.
Visión. El Observatorio contribuye a orientar la reflexión de los diferentes sectores
de la sociedad norte-santandereana sobre sus políticas, programas y proyectos,
en el desarrollo de la agenda pos-conflicto regional y en la consolidación de la
integración fronteriza.
21
1.1 INTRODUCCIÓN A LOS SISTEMAS DE INFORMACIÓN GEOGRÁFICOS
La idea o concepto de sistema de información geográfico surge aproximadamente
en la década de los 60’s; desde entonces su conceptualización ha evolucionado,
sobre criterios globales, funcionales o tecnológicos. En este orden de ideas se
puede concebir un sistema de información geográfico (SIG), como un sistema
computacional que define un conjunto de métodos, herramientas y datos que
están diseñados para actuar coordinada y lógicamente para capturar, almacenar,
analizar, transformar y presentar toda la información geográfica y de sus atributos
con el fin de satisfacer múltiples propósitos.
Desde luego el concepto de SIG involucra el concepto de sistema, el cual hace
referencia a un conjunto de partes o componentes interrelacionados entre sí, por
ello un SIG consta de varios componentes, los cuales involucran una
infraestructura necesaria para su funcionamiento:
El equipo (hardware). Está conformado por los equipos de cómputo y los
periféricos además de los dispositivos GPS, tabletas digitalizadoras, etc...
Los programas (software). Consiste de los conjuntos de programas con la
funcionalidad para la visualización, consulta y análisis de los datos geográficos.
Los usuarios. El personal, ya sean los usuarios del sistema (categorizados según
el rol que estos tengan en el sistema).
Los procedimientos. Todo el conocimiento y el conjunto de técnicas aplicadas
por el talento humano sobre el software SIG en conjunción con el hardware con el
fin de lograr los objetivos.
La tecnología SIG permite gestionar y analizar la información espacial, que surge
de la necesidad de disponer rápidamente de información para resolver problemas
y contestar preguntas de modo inmediato. Por ende se espera que cumplan con
ciertas funciones, como mínimo:
Funciones de adquisición o captura de la información. Estas proveen rutinas
para adquirir y refinar la información geográfica espacial como la temática
preparándola para que pueda ser migrada a los sistemas que la trataran.
22
Funciones de gestión. Esta función hace posible la organización y estructuración
de los datos iníciales en varias capas de información con algún significado.
Posteriormente se podrá extraer una parte de información que interesa en cada
momento para realizar análisis y consultas de forma más eficiente.
Funciones de análisis. Son las que confieren a un SIG su mayor potencialidad.
Facilitan el procesado de los datos, permitiendo extraer información no presente a
simple vista, generar nuevos datos y realizar simulaciones de comportamientos
basados en modelos del territorio.
Funciones de salida. Permiten mostrar al usuario tanto los propios datos
incluidos en el sistema como el resultado de las consultas y análisis sobre ellos. El
formato será muy diverso, mapas, gráficos, tablas, listados, etc.
1.1.1 Flujo de trabajo de un SIG. Para obtener el máximo beneficio de un SIG,
el usuario debe saber cuál es la secuencia de fases que ha de aplicar para llegar a
solucionar un problema que se le ha planteado, la siguiente figura, ilustra el
proceso del flujo de trabajo.
Figura 2. El flujo de trabajo en un SIG
23
Estas fases consisten en los siguientes procesos:
Captura de la información. La cantidad de información requerida varía en
función del problema planteado, de tal manera que la calidad de los datos
originales influye en la calidad del resultado final.
Preparación de la información. Es necesario que la información esté limpia de
errores (cometidos en la captura) y dotada de una estructura que permita una
consulta y un análisis eficiente por parte del sistema.
En el caso de información vectorial, hacer que los polígonos estén cerrados o que
las líneas conecten entre sí permitirá estructurar la información guardando sus
relaciones topológicas, tal como puede apreciarse en la siguiente figura.
Figura 3. Topologías validas e inválidas
Fuente: BECK, Kent. Extreme programing explained. Florida: Addison-wesley,
1999.
Fusión de la información espacial y temática. Es el proceso por el cual se
asocia a cada elemento geográfico información temática externa de naturaleza
diferente a la espacial, la siguiente figura, ilustra acerca de dicho proceso.
Cada elemento geográfico tiene un enlace biunívoco con su información temática
asociada de forma que es posible interrogar a un elemento espacial y obtener el
resultado en forma de información temática y viceversa, interrogar a la información
temática y obtener como resultado un elemento espacial.
24
Figura 4. El proceso de fusión de las fuentes de datos
Fuente: MORENO JIMÉNEZ, Antonio.
geográfica, Madrid: Alfaomega, 2006.
Sistemas y análisis de la información
Análisis de la información. Una vez fusionados los datos, se los puede someter
a operaciones de análisis que sigan los criterios de resolución del problema.
El análisis puede ser sobre datos de una única naturaleza (datos espaciales o
temáticos por separado) o analizar ambos tipos de datos a la vez. La siguiente
figura, muestra el análisis que se puede realizar dentro de un SIG, en cual se
puede tratar la información geográfica de tres formas:
Analizando únicamente la parte temática (como haríamos en una base de datos
corriente).
Analizando únicamente la parte espacial, estudiando sus características
geométricas.
25
Analizando de forma conjunta ambos componentes, siendo esta forma la más útil
y potente desde el punto de vista de la filosofía de trabajo de los SIG.
Figura 5. Partes del análisis georreferencial
1.1.2 Modelos de datos en un SIG. Un modelo es una representación de la
realidad y se genera mediante la selección y la simplificación de sus partes. Para
que sea geográfico, el modelo ha de poseer un sistema de referenciación
geográfico.
La información en un SIG, es decir, los datos geográficos tienen dos
componentes: la información espacial y la información de atributos. La información
espacial dice donde está localizado un elemento geográfico, en relación a sus
coordenadas ya sean planas o geográficas. La información de atributo define que
es el elemento.
26
Para almacenar la información espacial podemos recurrir a entidades geométricas
básicas como los puntos, las líneas y los polígonos. Un punto es la representación
de un par de coordenadas (x, y); una línea es el conjunto de puntos y un polígono
es un conjunto de coordenadas que envuelven un área. La información de estos
atributos se almacena en tablas.
Existen algunos atributos que provienen de la propiedad geométrica de los
elementos que la representan: las coordenadas de un punto, la longitud de una
línea y el área de un polígono. Además de esta información, pueden asociarse
tablas que describen los atributos alfanuméricos del elemento.
Cuando la información se representa mediante elementos geométricos se dice que
tiene una representación vectorial. Otra forma de almacenamiento y manipulación
de la información geográfica es el modelo raster o por celdas. Es importante
mencionar que la forma de almacenamiento y de manipulación de la información
en un SIG varía de acuerdo con las funciones que este debe cumplir.
Modelo de datos vectorial. Cuando se representan los fenómenos geográficos
mediante puntos, líneas y polígonos, estamos utilizando el denominado modelo de
datos vectorial. Este resulta particularmente útil para representar entidades
geográficas discretas, como edificios, carreteras o límites municipales, las
siguientes figuras, ilustran acerca de los fenómenos geográficos mencionados.
Figura 6. Representación de puntos en el modelo vectorial
27
Figura 7. Representación de polígonos en el modelo vectorial
Figura 8. Representación de líneas en el modelo vectorial
28
La información de la geometría y los atributos relacionados a esta última son
asociados mediante propiedades relacionales en una base de datos. Por lo tanto
en un nivel de información vectorial se pueden almacenar puntos, líneas, y
polígonos. El siguiente cuadro, muestra los tipos de representación vectorial.
Cuadro 1. Entidades geométricas para la representación vectorial
Elemento geométrico
Puntos
Representación
Fenómenos puntuales en
los
que
se
desea
conocer la posición x, y
Fenómenos lineales en
los
que
se
desea
conocer la longitud
Ejemplo
Pozos, postes, etc.
Vías,
drenajes,
oleoductos, líneas de
conducción eléctrica.
Semáforos,
señales
Fenómenos puntuales en
de tránsito, entrega de
Nodos
la intersección de los
aguas en redes de
arcos
drenaje.
Fenómenos relativos a
áreas
definidos
por
Lotes, uso de suelo,
Polígonos
regiones
homogéneas
cobertura vegetal.
acotadas
por
una
frontera
Fuente: Parra-Sánchez-Marulanda. Sistemas de Información Geográfica Base de
la Gestión Ambiental
Líneas
En un SIG vectorial existe un concepto muy importante, llamado topología que
define las relaciones espaciales entre los elementos geográficos. Cuando se
construye la topología a cierto nivel de información, las propiedades geométricas y
topológicas se definen y almacenan en tablas. La estructura de esas tablas varía
dependiendo del tipo de entidad; sin embargo, todas ellas tienen algunas
características comunes.
Cada entidad ocupa un registro de tabla.
Solo se puede almacenar uno y solo un tipo de elemento geométrico por tabla, es
decir: si el elemento geométrico consiste de puntos, solo se podrán almacenar
puntos en la tabla.
29
Para un conjunto de datos espaciales, es posible tener más de una tabla de
atributos.
Cada registro de la tabla contiene, como mínimo, un identificador que también se
almacena en la base de datos grafica.
Un formato de archivo vectorial. El shapefile (archivo de formas o cartográfico),
es un formato de archivo propietario, creado por la empresa ESRI desarrolladora
del sistema ArcGIS, que ha llegado a convertirse en el estándar de facto.
El shapefile o archivo de formas se presenta como un conjunto de ficheros, con el
mismo nombre de archivo pero con distintas extensiones, entre los que podemos
distinguir tres ficheros básicos siempre presentes y ocasionalmente dos índices
espaciales y dos índices de atributo:
Ficheros básicos: están compuestos por tres extensiones, el núcleo o .shp
(shape), el cual almacena las características geométricas de sus registros como
una lista de pares de coordenadas X-Y. El índice de los registros .shx (índex
shape), contiene un índice de cada registro, es decir, un registro del número de
registros y la longitud de cada registró existente en el .shp. Las bases de datos
con los atributos .dbf (database file) que guardan la información de los atributos y
sus características, conteniendo un registro de cada elemento de los .shp.
Índices espaciales: no existen hasta la ejecución una operación, como unión o
selección espacial. Dos archivos son creados: .sbn y sbx. Los .sbn (spatial bin o
recipiente espacial) dividen el area de los elementos geográficos de los .shp en
areas rectangulares llamadas recipientes. Cada recipiente contiene el numero de
registros de cada elemento que caen dentro de esa area, de modo que cuando se
hace una consulta espacial sobre el .shp, este el primer documento que se lee.
Figura 9. Elementos que conforman un archivo de formas (shape .shp)
30
El modelo de datos raster. En el modelo raster la representación del mundo real
no es discreta, como en el modelo vectorial sino continua, mediante un área
dividida en celdas regulares que se denominan cuadriculas o grid y en donde cada
celda se conoce con el nombre de pixel (picture element). En este modelo cada
pixel representa una cualidad cuantificable de observación, la mínima,
representada en cada localización mediante un tono o color, que se traduce a un
valor numérico o nivel digital.
En vez de representar los elementos por sus coordenadas, el modelo raster utiliza
una rejilla o malla superpuesta sobre el paisaje para representar los elementos
geográficos. El fenómeno predominante dentro de una celda determina la
información de la celda. Puede crearse una tabla de atributos para cada valor de
la celda.
En general, todas las imágenes digitales se almacenan en formato raster, también
llamado formato por pixeles. Cada pixel o celda representa un área determinada
de la superficie terrestre. Así, para representar un área de estudio se pueden
agrupar múltiples niveles de información de diferentes resoluciones, de la misma
manera que en el formato vectorial [4]. Cada tema puede ser representado por
medio de una malla independiente o bien una malla puede tener múltiples
atributos asociados a ella.
Figura 10. Modelo de datos raster, distribución de continentes y océanos
Fuente: MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006.
31
Debido a la representación por celdas del modelo raster, es necesario definir la
resolución o tamaño de la celda. El atributo se asocia a cada celda como un valor
único: por tanto el número total de de valores que deben almacenarse depende
del número de filas y de columnas de la malla. La resolución define el tamaño de
los archivos digitales así como la precisión en la ubicación de elementos.
Los componentes de la malla son entonces: celda, las filas y columnas, las
coordenadas del origen de la malla. En una malla podemos almacenar valores
enteros o reales. La gran ventaja del modelo raster es que permite modelar
fenómenos tales como la expansión de áreas urbanas, la propagación del fuego,
el crecimiento de plagas y todas las operaciones llamadas algebra de mapas.
El modelo de red de triángulos irregulares (TIN). El tercer modelo, utilizado
para representación tridimensional es el modelo TIN (Triangulated Irregular
Network) o red de triángulos irregulares, en este modelo las entidades geográficas
son representadas como una red de triángulos irregulares unidos entre sí
mediante puntos con valores X, Y e Z. las entidades que son muy complejas
pueden ser representadas con una mayor exactitud, con un determinado volumen
de datos, mediante una superficie TIN.
Figura 11. Modelo TIN, elevación de superficies en 3D
32
1.1.3 Sistemas de Información Geográficos en la Web (WebGIS). A los
sistemas de información geográficos publicados por internet se les conoce con el
nombre genérico de WebGIS sin embargo, estos no constituyen un SIG por sí
mismos, sino más bien son una parte de estos. Un WebGIS es una aplicación
WWW que generalmente ofrece funciones de visualización de cartografía digital,
búsqueda y operaciones de geoprocesamiento básicas. un Sistema de
Información Geográfico se distingue de su contraparte en Internet en que este
último tiene el objetivo especifico de comunicar información geográfica a la mayor
cantidad de usuarios posibles permitiéndoles ubicarse en el espacio e incluso
permitiéndole a estos ubicar geográficamente recursos físicos en la red de datos,
por ejemplo aquellas aplicaciones de mapas callejeros que permiten cruzar estos
con datos GPS en tiempo real, aplicaciones catastrales o sistemas de información
geográfico de administraciones locales.
1.2 BASES DE DATOS GEOGRÁFICAS Y DATOS ESPACIALES
Se pueden considerar dos grandes tipos de datos espaciales por un lado los datos
geográficos, que incluyen los datos representados por alguna geometría y la
información de atributo asociada a ellos. Por otra parte los datos de diseño
asistido por computadora (CAD), como los diseños de edificios. Cada tipo
representa situaciones distintas, el dato geográfico representa información
existente, modela situaciones reales, en tanto los datos de diseño son el resultado
del proceso de modelar objetos que aun no existen.
El soporte de los datos espaciales en las bases de datos es importante para el
almacenaje, indexado y consulta eficientes de los datos basados en las posiciones
espaciales. Por ejemplo, supóngase que se desea almacenar un conjunto de
polígonos en una base de datos y consultar la base de datos para hallar todos los
polígonos que intersecan un polígono dado. No se pueden utilizar las estructuras
estándares de índices como los árboles B o los índices asociativos para responder
de manera eficiente esas consultas. El procesamiento eficiente de esas consultas
necesita estructuras de índices de finalidades especiales, como los árboles R.
1.2.1 Consultas espaciales. Hay varios tipos de consultas que implican
operaciones espaciales como muestra la siguiente figura, generalmente estas
consisten en:
Las consultas de proximidad solicitan objetos que se hallen cerca de una
ubicación especificada. La consulta para hallar todos los restaurantes que se
hallan a menos de una distancia dada de un determinado punto es un ejemplo de
33
consulta de proximidad. La consulta de vecino más próximo solicita el objeto que
se halla más próximo al punto especificado.
Las consultas regionales tratan de regiones espaciales: estas consultas pueden
preguntar por objetos que se hallen parcial o totalmente en el interior de la región
especificada. Un ejemplo es la consulta para hallar todas las tiendas minoristas
dentro de los límites geográficos de una ciudad dada.
Figura 12. Tipos de consultas espaciales
Fuente: BECK, Kent. Extreme programing explained. Florida: Addison-wesley,
1999.
Puede que las consultas también soliciten intersecciones y uniones de regiones.
Por ejemplo, dada la información regional, como pueden ser la lluvia anual y la
densidad de población, una consulta puede solicitar todas las regiones con una
baja cantidad de lluvia anual y una elevada densidad de población. En general, las
consultas de datos espaciales pueden tener una combinación de parámetros
espaciales y no espaciales.
1.3 INTRODUCCIÓN A LA CARTOGRAFÍA
La cartografía se puede definir como la ciencia, la tecnología y el arte de elaborar
mapas que representan los datos geográficos y espaciales, la cual abarca la
formación, análisis, mantenimiento, lectura, interpretación y uso de mapas. El
mapa a su vez, se define como un modelo reducido y simplificado de la realidad,
así mismo es una representación convencional, grafica y a escala de fenómenos
concretos o abstractos localizados en algún punto en el espacio y que conserva la
posición relativa de su localización.
34
1.3.1 Cartográfica temática. Se Puede asumir la cartografía temática como el
esquematismo que se realiza en un conjunto de mapas que contienen una
información adicional propia, distinta de la puramente geográfica. Se fundamenta
en una base de referencia locacional e incluye una información adicional.
Cuando se ve un mapa se desea que este cumpla con ciertas cualidades, como:
Claridad y Legibilidad. Del mapa, evitando, por ejemplo, incluir demasiada
información en él.
Esquematismo. Al pasar de la realidad a un mapa, tendremos que generalizar la
información en función del fenómeno y la escala.
Rigurosidad. Definida como la precisión. Se trata de colocar el fenómeno, no sólo
en el sitio exacto, sino no intentar ser más preciso que la propia fuente de
información. La mayoría de los mapas incluyen datos estadísticos que han tenido
que ser tratados previamente de una manera rigurosa.
Poder de evocación. Que seamos capaces de hacer entender la información.
Por ejemplo, los colores oscuros son mejores, en este sentido, que los claros.
El mapa tiene muchas ventajas a la hora de presentar información espacial porque
con los colores, tramas, leyendas y demás elementos, en una misma hoja se está
representando todo, se transmite una gran cantidad de información que el usuario
puede usar según sus necesidades. Esa enorme cantidad de información debe ser
elaborada según el receptor al que va dirigido el mapa.
Simbolizar los datos implica la elección de los colores y símbolos que
representaran los elementos además de agruparlos y clasificarlos de acuerdo a
sus valores. La lectura de un mapa no se basa en la identificación de sus
elementos, si no en la búsqueda de relaciones que se establecen entre ellos. Por
tanto, es preciso que en el dibujo haya orden evitando las reiteraciones.
Existe una ilimitada variedad de datos espaciales que pueden representarse bajo
símbolos, estos pueden clasificarse en tres:
35
Símbolos de puntos: son individuales, representan datos posiciónales
Símbolos de línea: representan una diversidad datos geográficos, no implica que
el tipo de dato se lineal o escalar sino que la información lo sea
Símbolos de zona o área: se extienden sobre la superficie del mapa, para indicar
cierto aspecto común.
Los símbolos pueden tener valores distintos en función de su color, valor, tamaño,
forma, espaciado, orientación y ubicación.
El color es la apreciación más importante y compleja, dado que el color se asocia
a un valor. La elección de los colores a utilizar es esencial para que el mapa este
bien presentado, de otro modo pueda distraer la atención indebidamente,
mediante combinaciones y contrastes inadecuados.
Para que se presenten mejor los elementos hay que tener en cuenta: en primer
lugar que sean claros y legibles, por tanto hay que fijar bien los tamaños para que
luego cuando se lean, se interpreten correctamente. Es decir, deben estar bien
contrastados, uniformes y claros, para que no se presten a confusión, en segundo
lugar, el signo debe diferir del fondo y de los signos adyacentes. El contraste se
logra mediante la modulación de elementos gráficos. Por último, los elementos
deben estar dispuestos de tal modo que la relación parezca lógica y no fuera de
lugar.
Mapas cuantitativos. La mayor parte de representaciones cartográficas se
realizan con variables de tipo cuantitativo, por ello son más empleados en toda la
comunidad científica. En esta representación cartográfica se tienen en cuenta dos
aspectos de los datos geográficos: la Entidad Geográfica, como base de
referencia locacional, y la Componente Temática.
La entidad geográfica puede ser de dos tipos: natural o artificial. La primera
significa como está en el propio territorio, por ejemplo, el uso del suelo; si estudio
el terreno por zonas, se tratará de una entidad geográfica artificial.
La componente temática es variable; muy pocas veces es constante y que desde
el punto de vista estadístico es necesario tener claros tres conceptos:
36
Variable: es el concepto general, el fenómeno, este se suele representar por la
letra mayúscula(X).
Valor: cantidad que toma en un momento determinado. se representa con la
misma letra, en minúscula (xi).
Frecuencia: número de veces que se repite un valor en un periodo determinado
(ni).
Mapas de Coropletas. Son mapas en los que se representa las distintas
variaciones de una variable sobre un espacio dado, empleando colores con tramas
diferentes. En este caso el espacio sobre el que se representan es un área o
región. Los símbolos cambian de color en función de los valores que adopte la
variable elegida.
Son adecuados para representar datos en rangos sean cualitativos o cuantitativos
con algún tipo de progresión numérica (medidas, proporciones, porcentajes, etc.),
así como para variables de densidad o de intensidad.
Para realizar este tipo de representación de datos hay que organizar los datos,
ordenarlos y clasificarlos, en el caso de los mapas temáticos de coropletas lo
usual es representar las variaciones mediante clases. Esto se logra aplicando un
método de clasificación, la selección de este dependerá de la distribución de los
datos.
1.3.2 Métodos de clasificación de datos. Se describe a continuación:
Intervalos basados en cuantiles. Cada intervalo posee el mismo número de
elementos. Muchas veces esta división induce al error, pues valores bajos de la
variable son regularmente incluidos en el mismo intervalo que los valores altos.
Sin embargo para atenuar esta distorsión se pueden incrementar el número de
intervalos.
Su utilización es más adecuada para datos cuya distribución sea homogénea, es
decir, que no presenta un número excesivo de elementos con valores similares.
37
Figura 13. Intervalos basados en cuantiles
Intervalos iguales: los valores de la variable se agrupan en intervalos de igual
amplitud o tamaño. Su utilización es adecuada para datos cuya amplitud (valores
máximos y mínimos) es bastante conocida.
En cambio, no es aconsejable si se desea apreciar diferencias muy pequeñas
entre elementos con valores muy similares.
38
Figura 14. Representación utilizando intervalos iguales
Intervalos basados en puntos de corte natural. Es el método óptimo. Realiza el
agrupamiento buscando patrones inherentes a los datos reduciendo la variación
de elementos en una clase mediante el algoritmo de optimización de Jenks. El
algoritmo de Jenks consiste básicamente en la minimización de la suma de la
varianza intra-clase. Es decir, se trata de obtener la máxima homogeneización
(mínima dispersión) dentro de cada intervalo y la máxima dispersión entre
intervalos.
39
Figura 15. Intervalos basados en puntos de corte natural
1.3.3 Simbología. El color en cartografía temática juega un papel muy
importante en la visualización y el análisis de los datos presentados en los mapas
temáticos, por lo tanto su correcta aplicación facilitara la observación de patrones
e identificación de relaciones.
Los modelos de colores pueden dividirse en: Modelos basados en la percepción
(Perceptually based models), como HSB (hue, saturation, brightness) el cual tiene
una representación similar a como los humanos perciben los colores en cada
momento de su vida. Por otra parte en los modelos basados en la pantalla
(display-based model) como RGB (red, green, blue), la apariencia de los colores
producida depende de la configuración de la pantalla.
En el modelo RGB los colores se especifican basándose en la intensidad de los
colores primarios (rojo, verde, azul).
40
El rango de intensidades para la gama de colores puede ser visto como un cubo
con posiciones especificadas en un plano tridimensional con coordenadas enteras
positivas x, y e z, estas coordenadas controlan la intensidad del rojo, verde y azul,
el valor máximo para cada coordenada suele ser 256, con un rango de 0 a 255. Lo
cual da 2563 o mejor 16.777.216 combinaciones posibles de colores.
En cartografía temática, lo más común es identificar el valor estadístico más bajo
con un el color más claro del esquema de colores seleccionado, es decir un color
de inicio y un color final, el cual identificara el valor estadístico más alto, de tal
manera que los colores para los valores estadísticos intermedios se calculan
mediante una interpolación lineal entre los colores de inicio y fin.
Figura 16. El cubo de colores
Fuente: ROBINSON, Arthur. Elementos de cartografía. Madrid: John Wiley, 1995.
1.3.4 Sistemas de proyecciones. Una proyección cartográfica es un sistema
que representa la superficie curva de la tierra sobre un plano o un sistema plano
de meridianos y paralelos sobre el cual se puede dibujar un mapa.
Es necesario establecer una correcta correspondencia entre los puntos ubicados
sobre la superficie cuerva y sobre el plano; esto se logra mediante la proyección.
41
Para ello se usa una figura geométrica representada por un cono, un cilindro o un
plano, etc.
Las proyecciones se clasifican de acuerdo a la figura seleccionada, para la
proyección encontramos:
Proyección cónica.
Proyección cilíndrica.
Proyección cilíndrica de Mercator.
Proyección Transversa de Mercator.
Proyección acimutal.
Figura 17. Proyección cilíndrica
Fuente: MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006.
42
Figura 18. Proyección transversa
Fuente: MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006.
En Colombia la proyección usada es por el Instituto geográfico Agustín Codazzi,
para realizar cartografía es la Proyección Transversa de Mercator (UTM).
1.3.5 Sistemas de coordenadas. El sistema de coordenadas está basado en la
rotación de la tierra y está compuesto por un conjunto de líneas imaginarias
trazadas sobre la superficie de la tierra denominada paralelos y meridianos.
Figura 19. Sistema de coordenadas con paralelos y meridianos
Fuente: MORENO JIMÉNEZ, Antonio.
geográfica, Madrid: Alfaomega, 2006.
Sistemas y análisis de la información
43
El plano horizontal esta demarcado de forma natural por el Ecuador que divide la
tierra en dos hemisferios: norte y sur, el cual podrá ser medido en grados de
Latitud N, o grados con signo positivo y cualquier punto situado al sur será medido
con grados de latitud S o grados con signo negativo, con un rango de +90º N y 90ºS.
El meridiano de Greenwich demarca el plano vertical, forma el círculo máximo que
pasa por los polos y divide en dos hemisferios: el oriental y el occidental, los
grados hacia el oriente o hacia el occidente serán medidos como grados de
longitud: grados con signo positivo hacia el oriente y negativos hacia el occidente
con un rango entre +180ºE y -180ºO. Entre los sistemas de coordenadas más
usados encontramos el sistema de coordenadas geográficas y el sistema de
coordenadas planas: El sistema de coordenadas geográficas, representa la
ubicación de cualquier punto sobre la tierra con base en un par de medidas
angulares: latitud y longitud.
Figura 20. Sistema de coordenadas geográficas, latitud y longitud
Fuente: MORENO JIMÉNEZ, Antonio.
geográfica, Madrid: Alfaomega, 2006.
Sistemas y análisis de la información
Sistema de coordenadas planas. Es un sistema constituido por una serie de
líneas verticales y horizontales denominadas ordenadas y abscisas. La unidad de
medida es determinada mediante el sistema métrico decimal.
Los valores de los ejes se usan como sistemas de tipo local en mapas de escala
grande debido a su gran precisión para ubicar puntos. Para el caso de Colombia,
los orígenes son 74º 4’ 51’’ de longitud W y 4º35’56”57 de latitud N.
44
1.4 MAPAS TEMÁTICOS CON MAPSERVER
El archivo de configuración Mapfile. El mapfile es un archivo de configuración
utilizado por el entorno de desarrollo MapServer, es una especie de archivo .INI o
de inicialización, en el se define: la apariencia, la proyección, las capas, fuentes de
datos geográficos y todas las características necesarias para producir un mapa,
tales como, extensión, formato de salida, visibilidad, color, posición de las
etiquetas, tipo de fuentes, etc. Posee una sintaxis básica, basada en una
estructura jerárquica de layes (capas) y classes (clases), como se muestra a
continuación, en el diagrama.
Figura 21. La estructura del mapfile
45
2. CAPTURA Y PROCESAMIENTO DE LOS DATOS
2.1 DATOS TEMÁTICOS
Los datos empleados en la aplicación están agrupados en tres ejes temáticos,
estos datos fueron proporcionados por el mismo Observatorio el cual se ha
encargado de obtener esta información a partir de las distintas actividades que
realiza en los municipios que investiga. Los estudios realizados por el
Observatorio incorporan datos desde el año 1997, los cuales están clasificados
por variables, indicadores y ejes temáticos, cabe mencionar que la información
obtenida abarca por ahora solo el ámbito municipal.
Cultura de paz y derechos humanos, Gobernabilidad democrática y Desarrollo
socioeconómico.
El siguiente cuadro, describe algunas de las variables, que se han utilizado para
definir las tendencias en los tres ejes temáticos, nótese que aparecen algunas
variables en dos o tres ejes simultáneamente, esto indica que la variable se utiliza
para describir este eje pero desde una perspectiva distinta.
Cuadro 2. Breve listado de variables por eje de investigación
EJE TEMATICO
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Cultura de paz y derechos humanos
Gobernabilidad
Desarrollo Socioeconómico
46
VARIABLE
Desmovilización
Homicidios
Violencia
Cultivos ilícitos
Fosas
Seguridad
Participación ciudadana
Partidos Políticos
Educación
Salud
Matriculas por zona
Socioeconómico
Población en edad escolar
Producción
Población por nivel y zona
Geográfico
2.2 DATOS ESPACIALES
La cartografía empleada en el proyecto está compuesta por varios mapas políticoadministrativos del Departamento Norte de Santander en los ámbitos: regional,
municipal y veredal. Esta cartografía se describe a continuación:
Formato 1. Cartografía correspondiente al límite departamental
DATOS BASICOS
Layer name: limiteDepartamental
Geometry: Polygon
Feature Count: 1
Extent:
(1048910.084239, 1251986.117633) (1228138.244564, 1519400.100562)
SISTEMA DE REFERENCIA ESPACIAL
PROJCS["Colombia_Bogota_Zone",
GEOGCS["GCS_Bogota",
DATUM["Bogota_1975",
SPHEROID["International_1924",6378388.0,297.0]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",1000000.0],
PARAMETER["Central_Meridian",-74.08091666666667],
PARAMETER["Scale_Factor",1.0],
PARAMETER["Latitude_Of_Origin",4.599047222222222],
UNIT["Meter",1.0]]
Id: Integer (6.0)
descrip: String (30.0)
extension: String (10.0)
47
Formato 2. Cartografía correspondiente al límite internacional (frontera con
Venezuela)
DATOS BASICOS
Layer name:
modifica
limite
Internacional
Geometry: Line String
Feature Count: 1
Extent:
(1079784.705592, 1267524.573191) (1228138.213990, 1519404.603831)
SISTEMA DE REFERENCIA ESPACIAL
PROJCS["Colombia_Bogota_Zone",
GEOGCS["GCS_Bogota",
DATUM["Bogota_1975",
SPHEROID["International_1924",6378388.0,297.0]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",1000000.0],
PARAMETER["Central_Meridian",-74.08091666666667],
PARAMETER["Scale_Factor",1.0],
PARAMETER["Latitude_Of_Origin",4.599047222222222],
UNIT["Meter",1.0]]
ID: Integer (8.0)
48
Formato 3. Cartografía correspondiente al ámbito regional
DATOS BASICOS
Layer name: regiones
Geometry: Polygon
Feature Count: 6
Extent:
(1048910.084239, 1251986.117633) (1228138.244564, 1519400.100562)
SISTEMA DE REFERENCIA ESPACIAL
PROJCS["Colombia_Bogota_Zone",
GEOGCS["GCS_Bogota",
DATUM["Bogota_1975",
SPHEROID["International_1924",6378388.0,297.0]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",1000000.0],
PARAMETER["Central_Meridian",-74.08091666666667],
PARAMETER["Scale_Factor",1.0],
PARAMETER["Latitude_Of_Origin",4.599047222222222],
UNIT["Meter",1.0]]
region: String (20.0)
49
Formato 4. Cartografía correspondiente al ámbito municipal
DATOS BASICOS
Layer name: limite mpal modifi
Geometry: Polygon
Feature Count: 41
Extent:
(1048910.084239, 1242632.925552) (1228138.244564, 1519400.100562)
SISTEMA DE REFERENCIA ESPACIAL
PROJCS["Colombia_Bogota_Zone",
GEOGCS["GCS_Bogota",
DATUM["Bogota_1975",
SPHEROID["International_1924",6378388.0,297.0]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",1000000.0],
PARAMETER["Central_Meridian",-74.08091666666667],
PARAMETER["Scale_Factor",1.0],
PARAMETER["Latitude_Of_Origin",4.599047222222222],
UNIT["Meter",1.0]]
NOM_MUNI: String (20.0)
COUNT: Real (11.0)
NOM_DPTO: String (19.0)
AREA_KM2: Real (9.2)
TOTAL_CANT: Real (16.0)
TOTAL_OTRA: Real (18.0)
50
Formato 5. Cartografía correspondiente al ámbito veredal
DATOS BASICOS
Layer name: veredas nds modifica
Geometry: Polygon
Feature Count: 1790
Extent:
(1048910.084239,
1251986.117633) - (1228138.244564,
1519400.100562)
SISTEMA DE REFERENCIA ESPACIAL
PROJCS["Colombia_Bogota_Zone",
GEOGCS["GCS_Bogota",
DATUM["Bogota_1975",
SPHEROID["International_1924",6378388.0,297.0]],
PRIMEM["Greenwich",0.0],
UNIT["Degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],
PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",1000000.0],
PARAMETER["Central_Meridian",-74.08091666666667],
PARAMETER["Scale_Factor",1.0],
PARAMETER["Latitude_Of_Origin",4.599047222222222],
UNIT["Meter",1.0]]
NOM_UNID: String (30.0)
COD_SUB: Integer (10.0)
NOM_SUBR: String (12.0)
NOM_MUNI: String (20.0)
COD_SISBEN: Real (13.0)
TIPO_UNID: String (17.0)
AREA_KM2: Real (9.2)
51
2.3 TRATAMIENTO DE LOS DATOS ESPACIALES
La mayoría de la cartografía se encontraba en el formato de datos vectorial .shp
dado que estos debían vincularse con los datos temáticos en la base de datos, lo
mejor era convertir cada archivo .shp a una tabla en la base de datos. Para ello
los archivos .shp se hicieron más livianos, es decir, se eliminaron columnas que no
guardaban información necesaria.
Para la transformación de formato se utilizo la herramienta SPIT del programa
Quantum GIS, la cual es solo una interfaz grafica de la utilidad de PostgreSQL
shp2pgsql. A continuación se muestra el procedimiento utilizado para la migración
utilizando el programa shp2pgsql en consola:
Figura 22. Consola programa shp2pgsql
D:\data\shapes>shp2pgsql -i -s 4218 geo_municipio.shp geo_municipio >
geo.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
El comando shp2pgsql, tiene un conjunto de opciones disponibles, a continuación
se describen algunas que se aplican son:
-D:
obliga a utilizar el formato database dump por defecto el formato insert es
utilizado optimizando la carga de los datos.
-s < #>: configura el código SRID (spatial reference system identifier), para cuando
se crean las tablas y las geometrías. Es importante especificar ya que permitirá
realizar operaciones de transformación de coordenadas dentro la base de datos
-i: obliga a usar enteros de 32 bits para todos los valores enteros.
-W <encoding >:
especifica el tipo de codificado a aplicar.
52
-a: modo adicionar, es el modo por defecto, crea la tabla vacía y luego la llena con
los datos.
El siguiente cuadro, muestra algunas de las propiedades del identificador de
sistema de referencia espacial (SRID), el cual es un código utilizado por la base de
datos espacial para saber qué sistema de coordenadas geográficas y cuál
proyección fue aplicada a los datos espaciales.
Cuadro 3. SRID (Spatial Referencing System Identifier) aplicado a los
archivos de formas transformados
SRID
AUTH_NAME
AUTH_SRID
SRTEXT
PROJ4TEXT
4218
EPSG
4218
GEOGCS["Bogota
1975",DATUM["Bogota_1975",SPHEROID["International
1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS
84[307,304,318,0,0,0,0],AUTHORITY["EPSG","6218"]],PRIMEM["Green
wich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.017
45329251994328,AUTHORITY["EPSG","9122"]],AUTHORI
TY["EPSG","4218"]]
+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0
+no_defs
El campo SRID representa un código único de identificación, implícitamente se
refiere a una llave foránea utilizado por la columna que almacena la geometría de
una tabla frecuentemente llamada the_geom ó geom, de modo que el SRID está
embebido en cada geometría.
El campo AUTH_NAME se refiere a la autoridad u organización que define el
sistema de referenciación (por ejemplo para sistemas EPSG, la autoridad es
ESPG).
El campo AUTH_SRID es el código asignado por la autoridad y los campos
SRTEXT y PROJ4TEXT son la definición del sistema en sintaxis WKT (well known
text) y PROJ4 respectivamente
53
2.4 FUSIÓN O UNIFICACIÓN DE LAS FUENTES DE DATOS
Una vez realizado el tratamiento de los datos geográficos, se necesito vincularlos
con la información temática, esto se hizo utilizando la tabla que contiene los datos
del ámbito municipal ya que toda la información temática hacía referencia a este
ámbito. Uniendo las tablas temáticas y las tablas espaciales mediante el GID
(geographic identificator) se pueden obtener mapas temáticos clasificando los
valores de los indicadores atendiendo diferentes criterios de consulta.
Figura 23. Referenciación de los datos espaciales
54
3. ACTIVIDADES DESARROLLADAS
Recopilar información cartográfica de cada municipio del departamento Norte de
Santander.
Para cumplir este objetivo se realizaron las siguientes actividades:
Actividades: Obtener los datos geográficos adecuados a la naturaleza del
proyecto.
Metodología:
Solicitar a acceso a los datos geográficos a la oficina de planeación del
departamento Norte de Santander y a las dependencias que posean este tipo de
información.
Revisar los datos recibidos filtrando los que tengan mayor calidad.
Resultados obtenidos:
Se obtuvieron datos geográficos de los ámbitos departamental, municipal y
veredal del departamento de Norte de Santander.
Se seleccionan los datos que van a utilizarse.
Clasificar la información de variables e indicadores de los tres ejes básicos
(derechos humanos, gobernabilidad y participación ciudadana, desarrollo
socioeconómico) provista por el observatorio.
Actividades: Organizar los datos de variables e indicadores conforme al esquema
de clasificación manejado del observatorio.
55
Metodología:
Obtener los datos almacenados libros de Excel y en bases de datos Access.
Solicitar a ingeniero de ORDICOP información sobre la forma de clasificación de
los datos temáticos.
Reunirse con ingeniero de ORDICOP para verificar la clasificación y validar el
trabajo realizado.
Resultados obtenidos: Se obtienen los datos temáticos organizados por eje,
variable, indicador, municipio y año y se almacenan en formato XLS.
Migrar los datos espaciales y no espaciales que se encuentran en sistemas de
archivo a almacenamiento persistente en la base de datos.
Actividades: Migrar los datos temáticos y los datos geográficos a la base de datos
de indicadores.
Metodología:
Seleccionar un sistema de gestión de base de datos.
Programar el esquema para la base de datos de indicadores.
Pasar los datos temáticos filtrados a la base datos.
Exportar los archivos .SHP a la base de datos fijando un sistema de referencia
espacial.
Resultados obtenidos: Se obtiene un esquema de base de datos preliminar con los
datos geográficos y los datos temáticos almacenados en la misma base datos.
56
Integrar la base de datos espacial con la base de datos del proyecto Observatorio
Regional de Paz (ORDICOP).
Actividades: Enlazar las tablas temáticas con las tablas que almacenan los datos
geográficos de los municipios.
Metodología: Referenciar la tabla geográfica de municipio mediante llave foránea.
Resultados obtenidos: Se unifican las estadísticas de los datos temáticos con los
datos geográficos.
Desarrollar una aplicación Web SIG para visualizar la información geográfica del
departamento Norte de Santander y las variables e indicadores sistematizados por
el observatorio regional paz.
Actividades: Implementar un aplicativo Web que permita crear mapas temáticos
relacionados al comportamiento de un indicador en el departamento de norte de
Santander.
Metodología: Desarrollar, configurar o implementar herramientas que permitan
manipular y visualizar información geográfica relacionada con la información
geográfica del departamento de Norte de Santander.
Resultados obtenidos: Se desarrollo una aplicación que permite consultar
información de indicadores para diagramar el comportamiento de estos en un
mapa
Implementar un plan de pruebas para la aplicación con el fin de garantizar el
cumplimiento de los requisitos planteados por ORDICOP.
Actividades: Desarrollar un plan de pruebas.
Metodología: Realizar pruebas de unidad y pruebas de aceptación para verificar el
funcionamiento del software.
57
Resultados obtenidos: Se implemento un plan de pruebas.
Entregar la aplicación funcionando y con sus respectivos manuales de usuario del
sistema, instalación y configuración.
Actividades: Entregar el aplicativo terminado a satisfacción de ORDICOP con sus
manuales.
Metodología: Instalar la aplicación, escribir los manuales de usuario y los
manuales del sistema.
Resultados obtenidos:
Se instalo la aplicación en el servidor de ORDICOP.
Se elaboraron los manuales de sistema y manuales de usuario.
58
4. METODOLOGIA DE DESARROLLO
Para la realización del proyecto se opto por la metodología de desarrollo ágil
Extreme Programing o XP ya que sus principios básicos: de simplicidad,
comunicación y retroalimentación se adaptan al tamaño del proyecto, tiempo de
duración y cantidad de personas implicadas en su desarrollo, además de ofrecer
formas de adaptación a los cambios planteados por el cliente.
Al igual que otras metodologías agiles, XP sigue el modelo de desarrollo evolutivo
en espiral, lo cual implica; realizar un plan de proyecto basado en versiones del
producto acordadas a partir de funcionalidades concretas, y realizar el desarrollo
para esas funcionalidades concretas.
Una vez entregada la versión del producto cumpliendo con los requisitos (no un
prototipo, sino una versión funcionando), el proceso vuelve a iniciarse con un
conjunto mayor de funcionalidades.
Extreme Programming, puede dividirse en cuatro principios sobre los que se va
iterando hasta que el proyecto ha finalizado (el cliente aprueba el proyecto). Estas
fases o principios son: interacción con el cliente o fase exploratoria, planificación,
diseño, desarrollo y pruebas.
Figura 24. El ciclo de desarrollo en XP
GIBERT GINESTA, Marc. Ingeniería del software de entornos de software libre.
Barcelona: Universidad abierta de Cataluña, 2005.
59
Fase I Fase exploratoria o de Interacción con el cliente. En esta fase el cliente
pasa a ser una parte implicada en el equipo de desarrollo, tiene una gran
interacción con el equipo de programadores, ya que los requerimientos se van
tomando a lo largo del proyecto, se hace posible que este pueda opinar durante el
proceso aportando respuestas a las dudas que van surgiendo por parte del equipo
de desarrollo.
En XP aparece el concepto de Historia de usuario, estas son parecidas a los
casos de uso, son frases cortas escritas por el cliente de máximo tres líneas en las
que se describe un proceso en forma sencilla sin usar tecnicismos. Una vez que
se han escrito, las historias de usuario se utilizaran para elaborar la planificación
de las entregas y los test de aceptación por parte del cliente.
La elaboración de las historias de usuario consta de dos fases.
En la primera fase, el cliente describe con sus propias palabras las características
y es informado de las dificultades técnicas de cada una y las ordena en función de
la prioridad.
En la segunda fase, el equipo técnico será el encargado de catalogar las historias
del cliente y asignarles una duración.
La norma es que cada historia de usuario debe realizarse en un espacio entre una
y tres semanas de programación. Las que requieran menos tiempo serán
agrupadas, y las que necesiten más serán modificadas o divididas.
Fase II Planificación. Una vez que se han obtenido las historias de usuario se
procede a clasificarlas por prioridad y luego se pasa a la planificación de la
próxima (o primera) entrega del producto. En la reunión de planificación se debe
implicar al cliente, al gestor del proyecto y a los desarrolladores. El objetivo será
planificar las siguientes entregas ordenando las historias de usuario que faltan por
desarrollar. Deberá ser el cliente quien dicte el orden de las historias de usuario, y
los desarrolladores quienes estimen el tiempo que les llevaría idealmente en
desarrollarlo. Las historias de usuario se suelen reflejar en tarjetas, que se van
agrupando y clasificando encima de la mesa durante la planificación.
El resultado deberá ser un conjunto de historias que tengan sentido, y que puedan
llevarse a cabo en poco tiempo. Para planificarlo, se puede hacer según dos
60
criterios, basándose en el tiempo hasta la siguiente entrega o en el alcance
(entendido como el número de funcionalidades) que se desea que tenga. Aquí
entra en juego, la velocidad del proyecto, esta velocidad nos servirá para decidir
cuántas historias de usuario vamos a incluir en la próxima entrega. La velocidad
del proyecto es simplemente el número de historias de usuario completada en la
iteración anterior, si se trata de la primera iteración, habrá que hacer una
estimación inicial.
Los desarrolladores convertirán las historias de usuario en tareas (: en lenguaje
técnico) de una duración máxima de tres días ideales de programación cada una.
Se escribirán en tarjetas y se pondrán encima de la mesa para agruparlas,
eliminar las repetidas, y asignarlas a cada programador.
Fase III Diseño. Durante la definición de la solución, así como en la de cada
historia de usuario, es recomendable mantener la simplicidad como clave de éxito
en el diseño, ya que a un diseño simple es más fácil agregar complejidad.
Es muy útil hacer una declaración de metáfora para definir el sistema. Es decir, un
proceso o sistema que todos conozcan y que puedan identificar con el proyecto
que se está desarrollando.
Encontrar una buena metáfora ayudará a tener una visión común, un vocabulario
compartido, generalizando, la metáfora puede sugerir nuevas ideas o soluciones.
En cuanto a la arquitectura, la metáfora dará forma al sistema, identificará los
objetos clave y sugerirá características de las interfaces.
Para el diseño del sistema, se utilizan de tarjetas CRC (clases, responsabilidad y
colaboraciones). En donde cada tarjeta representa un objeto del sistema, con un
nombre que la representa, las responsabilidades que contrae y los objetos con los
cuales colabora, en este fase es muy importante tener en cuenta el concepto de
refactorización el cual consiste en realizar cambios necesarios en las partes de
código que se considere necesario, sin modificar su funcionalidad o su interacción
con el resto del sistema.
Fase IV Desarrollo y pruebas. Antes de empezar a codificar se tienen que hacer
pruebas, es decir; crear test unitarios antes de desarrollar las funcionalidades,
estos test unitarios son pequeños trozos de código que prueban las
funcionalidades de un objeto, de modo que esa prueba pueda incorporarse a un
proceso de pruebas automatizado por lo cual cada vez que se quiera implementar
61
una parte de código, en XP, se tiene que escribir una prueba sencilla, y después
escribir el código para que la pase. Una vez pasada se amplía y se continúa.
Respecto a la integración, se deberá hacer una integración continua, es decir,
cada vez se va integrando pequeños fragmentos de código, para evitar que al
finalizar el proyecto se tenga que invertir grandes esfuerzos en la integración final.
62
5. DESARROLLO DEL PROYECTO
5.1 FASE I EXPLORATORIA
Historias de usuario.
Las historias de usuario no son casos de usos, estas
constituyen una muy útil mediante estas podemos obtener información valiosa
acerca de las necesidades más inmediatas el usuario.
HU-01: Consultar mapa: Permite al usuario confeccionar un mapa temático en
base a estadísticas disponibles en el sistema, ofreciendo algún criterio de
consulta.
HU-02: configurar mapa: El usuario tiene cierto grado de personalización del
mapa, en cuanto a los colores y técnicas de clasificación de datos y tipo de mapa
para la representación.
HU-03: Tipo de mapa: Permite al usuario la opción de crear mapas con gamas de
color o con diagramas de datos.
HU-04: Ver mapa: Es posible que el usuario pueda abrir y trabajar sobre varios
mapas.
HU-05: Mover mapa: Al mapa desplegado es posible aplicarle movimientos, para
poder ver regiones que no sean visibles en la pantalla actual.
HU-06: Navegar mapa: El usuario tiene a su disposición un conjunto de
herramientas que le facilitan la interacción con la imagen del mapa y los datos
asociados a este, tales como acercar o alejar la vista, mover vista, identificar y
restablecer.
HU-07: Registrar usuario: Permite a un usuario ingresar al sistema para consultar
mapas.
63
HU-08: Ingresar al sistema: El sistema solo puede ser accedido si el usuario se ha
registrado previamente.
HU-09: Salir del sistema: Cierra la sesión establecida al ingresar al sistema,
eliminando todos los datos de dicha sesión.
HU-10: Imprimir mapa: Permite al usuario que ha confeccionado un mapa,
guardarlo en varios formatos de imagen.
HU-11: administrar eje temático: Permite a un usuario administrador manejar los
datos de los que conforman un eje temático.
HU-12: administrar variables: Permite a un usuario administrador manejar los
datos de las variables que conforman un eje temático.
HU-13: administrar indicadores: Permite a un usuario administrador manejar los
datos de las indicadores que miden las diferentes variables.
HU-14: Estudio anual: Permite a un usuario administrador vincular el valor de un
indicadores a un municipio por año.
Roles participantes. Dado el tamaño del proyecto, este se compone de un grupo
pequeño de personas. A continuación se hace una descripción de las personas
que están involucradas en el proyecto.
Clientes: esta grupo está conformado por las personas directamente interesadas
en el desarrollo de este.
Ing. Nelson Beltrán G. Ingeniero de sistemas UFPS.
Ing. Claudia Gómez Ll. ingeniera de sistemas ORDICOP.
Director del Proyecto: Ingeniero Nelson Beltrán.
64
Responsables del Seguimiento: Francisco Javier Rada Niño – Omar Argenis
Duarte Maldonado.
Formador del Equipo: Francisco Javier Rada Niño – Omar Argenis Duarte
Maldonado.
Desarrolladores: Francisco Javier Rada Niño – Omar Argenis Duarte Maldonado.
Usuarios del sistema.
Administrador:
Este usuario es quien ingresa información a la base de datos
la cual más tarde será cruzada con la información geográfica para producir un
mapa.
Sus necesidades principales son:
Realizar las operaciones básicas de, inserción, eliminación, actualización y
consulta sobre la base de datos mediante una interfaz.
Acceder de forma segura a la aplicación mediante la asignación de un nombre de
usuario y una contraseña, aparte del perfil de acceso creado en la base de datos.
Visitante:
Este usuario desea obtener información estadística del
departamento, representada en un mapa, visualizar esta información en el visor de
mapas, imprimirla o descargarla a su computador.
Este usuario no necesita tener conocimientos avanzados en sistemas y en
computación, solo informática o computación básica (uso de un navegador).
En síntesis sus necesidades principales son:
Visualizar con facilidad un mapa aprovechando herramientas para: desplazarse
por el mapa, acercar o alejar la vista.
65
Consultar información en el mapa mediante alguna herramienta
Imprimir o descargar mapas.
Registrarse e identificarse en el sistema, para poder utilizar la aplicación.
Tecnologías y herramientas utilizadas. Para el desarrollo del sistema se
determino la necesidad de aplicar un conjunto de tecnologías tales como:
Un servidor de Base de Datos Espacial: el cual nos provee de una estructura de
almacenamiento consistente, atomicidad, persistencia e integridad en los datos,
además de proveernos de capacidades de cálculo y operaciones sobre el conjunto
de datos espaciales.
Un servidor Web: Para manejar las comunicaciones a un alto nivel entre el usuario
final y el proceso que sirve los mapas del lado servidor. Presenta una página Web
la cual contiene el propio mapa y las herramientas necesarias para manipularlo
(acercar, alejar la vista, mover, etc.).
Un servidor de Mapas: Es el mecanismo detrás de los mapas que se presentan en
la Web. El servidor de mapas necesita ser configurado para comunicarse con el
servidor Web para que este pueda producir una imagen apropiada a partir de los
datos geográficos.
PostgreSQL 8.2 + PostGIS 1.3.2 Las bases de datos espaciales proveen de un
almacenamiento extendido, además de proporcionar funciones para la
manipulación de datos espaciales.
Frente a otras soluciones de código abierto como MySQL, PostgreSQL provee un
soporte nativo para tipos de datos espaciales, además del costo de adquisición el
cual es nulo en comparación con las soluciones comerciales. PostgreSQL es un
Sistema Manejador de Bases de Datos Objeto-Relacional de Código Abierto,
desarrollado en la Universidad de California por el Departamento de Ciencias de la
Computación de Berkeley. Es pionero en muchos conceptos que solo han estado
disponibles en algunos Motores de Bases de Datos comerciales desde hace
tiempo. Es compatible con una gran parte del estándar SQL y ofrece muchas
características modernas:
66
Búsquedas complejas.
Integridad referencial.
Disparadores (Triggers).
Vistas.
Integridad de transacciones.
Control de concurrencia multiversion.
PostGIS es una extensión al sistema de base de datos objeto-relacional
PostgreSQL. Permite el uso de objetos GIS. PostGIS es desarrollado por la
empresa Refractions Research Inc. Como un proyecto de investigación en bases
de datos espaciales.
Figura 25. PostgreSQL / PostGIS
Fuente: MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006.
PostGIS ofrece una abstracción sobre el modelo de datos vectorial,
implementando tipos de datos que permiten manipular los elementos geométricos
básicos: POINT, POLYGON, LINE, así como otros derivados de la combinación de
estos para representaciones 3D, en particular PostGIS extiende los tipos que ya
existen en PostgreSQL cumpliendo con los estándares OGC (Open Geospatial
Consortium).
67
UMN MapServer. MapServer es un entorno de desarrollo en código abierto (Open
Source Initiative) para la creación de aplicaciones web que utilicen mapas con
datos espaciales ya sean vectoriales o raster, en otras palabras MapServer no es
un SIG, aunque incorpora algunas características básicas inherentes a uno.
MapServer fue diseñado para permitir crear mapas configurables mediante el
mapfile, el cual establece las fuentes de datos y la apariencia del mapa.
Figura 26. MapServer
Fuente: MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006.
Sus características principales son:
Ejecución bajo plataformas Linux/Apache y Windows.
Soporte para los formatos vectoriales: shapefiles, PostGIS, ArcSDE, GML y otros
muchos vía OGR.
Soporte para los formatos raster: JPG, PNG, GIF, TIFF/GeoTIFF, EPPL7 y otros
vía GDAL.
Fuentes TrueType.
Soporte para diferentes proyecciones del mapa.
Soporta el etiquetado de geometrías, y trata la colisión de etiquetas.
Soporte para scripting y entornos de desarrollo más populares (PHP, Python, Perl,
Ruby, Java y C#).
68
Totalmente configurable mediante el mapfile.
MapServer trabaja detrás del servidor web, este recibe las peticiones de
generación de mapas y se las pasa a MapServer el cual se encarga de construir el
mapa. MapServer abre todos los orígenes de datos que estén siendo
referenciados, los coloca en capas y genera una imagen ya sea JPEG, GIF, PNG,
etc. con las propiedad definidas en el mapfile y la entrega al servidor web, el cual
la transmite de vuelta al usuario que hizo la solicitud.
Figura 27. Funcionamiento del servidor de mapas MapServer
Fuente: MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006.
Quantum GIS. Quantum GIS (o QGIS) es un Sistema de Información Geográfica
(SIG) de código libre para plataformas Linux, Unix, Mac OS y Microsoft Windows.
Era uno de los primeros ocho proyectos de la Fundación OSGeo y en 2008
oficialmente graduó de la fase de incubación. Permite manejar formatos raster y
vectoriales, así como bases de datos. Algunas de sus características son:
Soporte para la extensión espacial de PostgreSQL, PostGIS.
Manejo de archivos vectoriales Shapefile, ArcInfo coverages, Mapinfo, GRASS
GIS, etc.
69
Soporte para un importante número de tipos de archivos raster (GRASS GIS,
GeoTIFF, TIFF, JPG, etc.)
Una de sus mayores ventajas es la posibilidad de usar Quantum GIS como GUI
del SIG GRASS, utilizando toda la potencia de análisis de este último en un
entorno de trabajo más amigable.
Entorno de desarrollo KA-MAP 1.0 Ka-map es un proyecto de código abierto
que provee una API javascript para el desarrollo de aplicaciones web de mapas
con interfaces altamente interactivas usando las características disponibles en los
navegadores modernos. Proporciona un conjunto de elementos tales como:
Movimiento (Panning) interactivo y continuo sin recargar la pagina.
Opciones de navegación con teclado (zooming, panning).
Manejo de vistas (Zooming) a escalas predefinidas.
Barra de escala interactiva, soporte para leyendas y mapas clave.
Control opcional de capas en el lado cliente.
Puesta en cache de imágenes en el lado servidor.
En una aplicación MapServer convencional, cada vez que un usuario realiza una
operación desde la más sencilla (pan) a una compleja (consulta) sobre la interfaz
del mapa, se desencadenan una serie de operaciones, que concluyen con la
presentación de la imagen del mapa.
En Ka-map, MapServer recolecta todos los datos una vez y fragmenta la imagen
en téselas (recuadros) de 200 pixeles de ancho y alto. Cada vez que un mapa es
cargado con Ka-Map en determinada escala, este controla el área exacta y
entrega los téselas para esa área.
70
Figura 28. Partición de imagen utilizando tiled cache
5.2 FASE II PLANIFICACION
Planificación de entregas. En este punto el cliente selecciona las historias de
usuario y las selecciona por prioridad ordenándolas dependiendo por prioridad,
hecho esto los programadores estiman el esfuerzo y la cantidad de tiempo que
será necesario invertir en cada historia.
En base a esta estimación se establece un cronograma y se pacta una fecha para
la próxima entrega.
Prioridad de las historias: La prioridad es establecida por el cliente, obedeciendo a
los siguientes criterios.
Prioridad Alta: La historia de usuario debe ser implementada para cumplir los
objetivos del negocio.
71
Prioridad Media: La historia de usuario tiene un impacto mediano sobre los
objetivos del negocio.
Prioridad Baja: La historia de usuario aumentará la satisfacción del cliente, pero no
está justificada explícitamente.
Las estimaciones son asignadas de acuerdo al esfuerzo de desarrollo de cada
Historia de Usuario, estas estimaciones se trabajan en puntos y cada punto
equivale a 40 horas de trabajo.
Cuadro 4. Asignación de prioridades a las historias de usuario
HISTORIA
HU-01
HU-02
HU-03
HU-04
NOMBRE
Consultar mapa
Configurar mapa
Tipo mapa
Ver mapa
HU-05
HU-06
HU-07
Mover mapa
Navegar mapa
Registrar usuario
HU-08
HU-09
HU-10
HU-11
HU-12
HU-13
HU-14
PRIORIDAD ESTIMACION HORAS
ALTA
3
120
MEDIA
1
40
MEDIA
1
40
MEDIA
1
40
MEDIA
MEDIA
BAJA
1
1
1
40
40
40
Ingresar al sistema
Salir del sistema
Imprimir mapa
BAJA
BAJA
ALTA
0,5
0,5
1
20
20
40
Administrar eje temático
Administrar variables
Administrar indicadores
Estudio anual
ALTA
ALTA
ALTA
ALTA
1
1
1
1
40
40
40
40
Cronograma de entregas. Una vez se ha establecido la prioridad para las
historias de usuario, asignamos una o un grupo de historias dependiendo de su
puntaje a una iteración de modo que no se exceda el plazo de entrega que es de
tres semanas por iteración.
72
SEMANA 15
SEMANA 14
SEMANA 13
SEMANA 12
SEMANA 10
SEMANA 11
ITERACION 5
SEMANA 9
ITERACION 4
SEMANA 8
ITERACION 3
SEMANA 7
SEMANA 6
SEMANA 5
SEMANA 4
SEMANA 3
ITERACION 2
SEMANA 2
HISTORIA
ITERACION 1
SEMANA 1
Cuadro 5. Cronograma de tareas por Iteraciones
HU-01
HU-02
HU-03
HU-04
HU-05
HU-06
HU-07
HU-08
HU-09
HU-10
HU-11
HU-12
HU-13
HU-14
Descripción de las historias de usuario.
Cuando se captura la información
en historias de usuario, esto se hace en las propias palabras del cliente,
posteriormente estas historias se catalogan y se escriben en términos más
formales recogiendo aspectos técnicos según la descripción del analista o el
programador.
73
Formato 6. Descripción de la historia de usuario consultar mapa
Historia de usuario
Numero: 01
Usuario: visitante
Nombre historia: Consultar mapa
Prioridad (:Alta/Media/Baja): ALTA
Puntaje: 3
Iteración: 1
Programador responsable: Francisco Javier Rada
Descripción:
Se proporciona al usuario la capacidad de construir un mapa temático,
partiendo de un conjunto de estadísticas previamente almacenadas en la base
de datos, agrupadas por eje temático (gobernabilidad, derechos humanos,
desarrollo socioeconómico) y clasificadas por variable, indicador y año
respectivamente.
Observaciones:
Cuando el usuario selecciona un valor de la lista, la lista que le sigue debe
cargarse con valores relacionados el seleccionado, mostrando la subcategoría, evitando consultas que no retornen datos.
Formato 7. Descripción de la historia de usuario configurar mapa
Historia de usuario
Numero: 02
Usuario: visitante
Nombre historia: Configurar mapa
Prioridad (:Alta/Media/Baja): MEDIA
Puntaje: 1
Iteración: 2
Programador responsable: Francisco Javier Rada
Descripción:
El usuario tiene cierto grado de personalización del mapa, este puede
configurar el esquema de colores seleccionando un color inicial y un color final
para construir un mapa de coropletas, también puede configurar la capa base
(limite departamento, limite municipio, limite región), también puede
seleccionar un método de clasificación de datos según su criterio (cuantiles,
corte natural o intervalos iguales).
Observaciones:
Se deben programar métodos de clasificación de datos que calculen los
intervalos de corte esto puede ser cuantiles, intervalos iguales y corte natural.
74
Formato 8. Descripción de la historia de usuario tipo de mapa
Historia de usuario
Numero: 03
Usuario: visitante
Nombre historia: Tipo de mapa
Prioridad (:Alta/Media/Baja): MEDIA
Puntaje: 1
Iteración: 2
Programador responsable: Francisco Javier Rada
Descripción:
Permite establecer al usuario la opción de crear mapas tipo coropleta (gamas
de color) para una sola serie de datos o tipo mapa-diagrama (diagramas de
datos) para representar entre 2 y 3 series de datos, los tipos diagramas se
pueden representar en barras o tortas.
Observaciones:
Es necesario evitar que el usuario construya mapas de diagramas con una sola
serie ya que genera una excepción en MapServer.
Formato 9. Descripción de la historia de usuario ver mapa
Historia de usuario
Numero: 04
Usuario: visitante
Nombre historia: Ver mapa
Prioridad (:Alta/Media/Baja): MEDIA
Puntaje: 1
Iteración: 2
Programador responsable: Francisco Javier Rada
Descripción:
Brinda la funcionalidad necesaria para que el usuario pueda crear múltiples
mapas y trabajar con estos simultáneamente, con el fin de brindarle la
posibilidad de comparar y analizar la información de los mapas
Observaciones:
Se deben programar métodos que permitan generar las interfaces de
navegación de mapa automáticamente evitando sobre escritura de valores.
75
Formato 10. Descripción de la historia de usuario mover mapa
Historia de usuario
Numero: 05
Usuario: visitante
Nombre historia: Mover mapa
Prioridad (:Alta/Media/Baja): MEDIA
Puntaje: 1
Iteración: 3
Programador responsable: Francisco Javier Rada
Descripción:
Al mapa desplegado es posible aplicarle movimientos, para poder ver regiones
que no sean visibles en la pantalla actual.
Observaciones:
Esta historia se encuentra previamente implementada en el framework ka-Map,
archivo kaHZoomer.js
Formato 11. Descripción de la historia de usuario navegar mapa
Historia de usuario
Numero: 06
Usuario: visitante
Nombre historia: Navegar mapa
Prioridad (:Alta/Media/Baja): MEDIA
Puntaje: 1
Iteración: 3
Programador responsable: Francisco Javier Rada
Descripción:
El usuario tiene a su disposición un conjunto de herramientas que le facilitan la
interacción con la imagen del mapa y los datos asociados a este, tales como
acercar o alejar la vista, mover vista, identificar y restablecer.
Observaciones:
Esta historia se encuentra previamente implementada en el framework ka-Map.
76
Formato 12. Descripción de la historia de usuario registrar usuario
Historia de usuario
Numero: 07
Usuario: visitante
Nombre historia: Registrar usuario
Prioridad (:Alta/Media/Baja): BAJA
Puntaje: 1
Iteración: 4
Programador responsable: Francisco Javier Rada, Omar Duarte
Descripción:
Permite a un usuario registrarse en el sistema para poder acceder a la
aplicación, el usuario ingresa algunos datos en un formulario y a cambio
obtiene unas credenciales de acceso a la aplicación (login y password) y se le
concede acceso mediante uno de los perfiles de conexión (administrador o
visitante).
Observaciones: Es necesario implementar controles para asegurar la validez
de la contraseña y del correo electrónico.
Formato 13. Descripción de la historia de usuario ingresar al sistema
Historia de usuario
Numero: 08
Usuario: visitante
Nombre historia: Ingresar al sistema
Prioridad (:Alta/Media/Baja): BAJA
Puntaje: 0,5
Iteración: 4
Programador responsable: Francisco Javier Rada, Omar Duarte
Descripción:
El sistema solo puede ser accedido si el usuario se ha registrado previamente,
este debe identificarse con su nombre de usuario (login) y su contraseña.
Observaciones:
Es necesario ofrecer un método de recuperación de contraseña en el caso de
que el usuario la olvide.
77
Formato 14. Descripción de la historia de usuario salir del sistema
Historia de usuario
Numero: 09
Usuario: visitante
Nombre historia: Salir del sistema
Prioridad (:Alta/Media/Baja): BAJA
Puntaje: 0,5
Iteración: 4
Programador responsable: Francisco Javier Rada, Omar Duarte
Descripción:
Cierra la sesión establecida al ingresar al sistema, eliminando todos los datos
de dicha sesión.
Observaciones:
Es necesario eliminar los datos de sesión como medida de seguridad.
Formato 15. Descripción de la historia de usuario imprimir mapa
Historia de usuario
Numero: 10
Usuario: visitante
Nombre historia: Imprimir mapa
Prioridad (:Alta/Media/Baja): ALTA
Puntaje: 1
Iteración: 3
Programador responsable: Francisco Javier Rada, Omar Duarte
Descripción:
Permite al usuario imprimir o guardar un mapa, en varios formatos de imagen y
también obtener un reporte más detallado acompañado de gráficos y la
descripción textual del mapa.
Observaciones:
Se admiten los formatos JPG, PNG, GIF para la imagen del mapa. Formato
PDF para el reporte completo.
78
Formato 16. Descripción de la historia de usuario administrar eje temático
Historia de usuario
Numero: 11
Usuario: Administrador
Nombre historia: administrar eje temático
Prioridad (:Alta/Media/Baja): ALTA
Puntaje: 1
Iteración: 4
Programador responsable: Omar Duarte
Descripción:
Permite a un usuario administrador manejar los datos de los que conforman un
eje temático, por lo cual debe poder utilizar una interfaz que le permita realizar
operaciones de consulta, inserción, eliminación y actualización sobre un eje
temático
Observaciones:
Debe evitarse la eliminación en cascada.
Formato 17. Descripción de la historia de usuario administrar variables
Historia de usuario
Numero: 12
Usuario: Administrador
Nombre historia: Administrar variable
Prioridad (:Alta/Media/Baja): ALTA
Puntaje: 1
Iteración: 5
Programador responsable: Omar Duarte
Descripción:
Permite a un usuario administrador manejar las variables que representan los
fenómenos estudiados, debe proporcionarse una interfaz que le permita
realizar operaciones de consulta, inserción, eliminación y actualización sobre
una variable vinculada a un eje temático
Observaciones:
Una variable debe estar siempre vinculada a un eje temático
79
Formato 18. Descripción de la historia de usuario administrar indicador
Historia de usuario
Numero: 13
Usuario: Administrador
Nombre historia: Administrar indicador
Prioridad (:Alta/Media/Baja): ALTA
Puntaje: 1
Iteración: 5
Programador responsable: Omar Duarte
Descripción:
Permite a un usuario administrador manejar los indicadores que van a
cuantificar representan las variables, debe proporcionarse una interfaz que le
permita realizar operaciones de consulta, inserción, eliminación y actualización
sobre un indicador de una variable.
Observaciones:
Formato 19. Descripción de la historia de usuario administrar estudio anual
Historia de usuario
Numero: 14
Nombre historia:
Usuario: visitante
Estudio anual
Prioridad (:Alta/Media/Baja): ALTA
Puntaje: 1
Iteración: 5
Programador responsable: Omar Duarte
Descripción:
Permite agregar el valor de un indicador a un municipio medido para un año.
Debe proporcionarse una interfaz que le permita realizar operaciones de
consulta, inserción, eliminación y actualización.
Observaciones:
Planificación de las iteraciones. Conforme al flujo de trabajo del proyecto se
debe hacer una planificación en iteraciones, que debe ser retocada al cabo de
unas cuantas iteraciones. Ya que en cada iteración hay que realizar la
planificación de la misma, es decir la planificación iterativa.
80
En esta se especifican las historias de los usuarios cuya implementación se
considera primordial y se añaden aquellas que no han pasado las pruebas de
aceptación de anteriores iteraciones. La planificación de una iteración también
hace uso de tarjetas en las que se escribirán tareas, que duraran entre uno y tres
días (la duración la deben decidir los propios desarrolladores), es decir tendrán
una duración de 3 puntos fijos de duración, esto equivale a 120 horas o 3
semanas ideales de programación. Por lo tanto la cantidad de historias asignadas
a una iteración no debe sobrepasar la suma de las estimaciones de las historias.
Cuadro 6. Planificación de iteraciones
Historia
Iteración
1
2
3
4
5
HU-01
HU-02 HU-03 HU-04
HU-05 HU-06 HU-10
HU-07 HU-08 HU-09 HU-11
HU-12 HU-13 HU-014
Primera iteración. En esta iteración se desarrollara la historia HU-01, el desarrollo
de esta historia va a permitir establecer la funcionalidad básica inicial, examinando
que tipo de consultas son las más apropiadas, la interfaz inicial (panel de consulta
e interfaz de presentación de resultados) y una forma apropiada para la
arquitectura además de establecer cómo será la comunicación entre
componentes.
Cuadro 7. Historias de la iteración 1
HISTORIA
HU-01
NOMBRE
Consultar mapa
PRIORIDAD
ESTIMACION
ALTA
3
Segunda iteración. Esta iteración extiende la funcionalidad de la Historia de
usuario implementada en la primera iteración, aportando nuevos elementos en las
interfaces graficas de usuario orientadas a proveer herramientas para la
personalización del resultado de consulta (imagen de mapa), e interfaces entre
componentes para el despliegue de datos (panel de consulta y navegador de
mapa).
81
Cuadro 8. Historias de la iteración 2
HISTORIA
HU-02
HU-03
HU-04
NOMBRE
Configurar mapa
Tipo mapa
Ver mapa
PRIORIDAD
MEDIA
MEDIA
MEDIA
ESTIMACION
1
1
1
Tercera iteración. La tercera iteración se centra en extender la funcionalidad de
la HU-04 agregando elementos de desplazamiento (HU-05) y vista de zoom (HU06) además de introducir una funcionalidad totalmente nueva como la herramienta
para impresión de mapa en varios formatos
Cuadro 9. Historias de la iteración 3
HISTORIA
HU-05
HU-06
HU-10
NOMBRE
Mover mapa
Navegar mapa
Imprimir mapa
PRIORIDAD
MEDIA
MEDIA
ALTA
ESTIMACION
1
1
1
Cuarta iteración. En esta iteración se introducen las funcionalidades relacionadas
con el manejo de la seguridad, los perfiles de acceso y de identificación de
usuarios. Y se comienza a desarrollar la interfaz para la administración de datos
temáticos.
Cuadro 10. Historias de la iteración 4
HISTORIA
HU-07
HU-08
HU-09
HU-11
NOMBRE
PRIORIDAD ESTIMACION
Registrar usuario
BAJA
1
Ingresar al sistema
BAJA
0,5
Salir del sistema
BAJA
0,5
Administrar eje temático
ALTA
1
Quinta iteración. En esta iteración se extiende la interfaz de administración de
datos agregando elementos que permiten gestionar la información de los
indicadores.
82
Cuadro 11. Historias de la iteración 5
HISTORIA
NOMBRE
PRIORIDAD
ESTIMACION
HU-12
Administrar variables
ALTA
1
HU-13
Administrar indicadores
ALTA
1
HU-14
Estudio anual
ALTA
1
Planificación de las tareas. Una vez se han organizado las historias de usuario
por iteraciones, es necesario especificar las tareas que han de llevarse a cabo
para lograr desarrollar la historia de usuario propuesta, en el siguiente cuadro se
establecen el conjunto de tareas a desarrollar y la asignación del puntaje (1 punto
= 40 horas).
Las tareas se han clasificado según el tipo de trabajo que debe hacerse y se
dividen en:
Documentación: tareas de investigación, lectura y adquisición de información.
Adaptación: tareas que implican extensión de funcionalidad a elementos
previamente
desarrollados,
adecuación,
instalación,
configuración,
compatibilización.
Desarrollo: tareas que implican el desarrollo de elementos totalmente nuevos.
Verificación: tareas que implican pruebas de funcionamiento a elementos
desarrollados o modificados.
83
Cuadro 12. Planificación de las tareas
Tarea
Descripción tarea
Iteración
Historia
Puntos
Horas
Total
HU
T-01
T-02
T-03
T-04
T-05
T-06
Estudio API php/mapscript
Migrar datos
interfaz de datos
generar mapfiles
Interfaz grafica de consulta
Probar mapfiles
Estudio métodos estadísticos de
clasificación de datos
Herramienta de cálculo intervalos de
datos.
Herramienta de selección de color
Verificación de intervalos
Agregar soporte para mapa diagrama
y mapa coropleta
Permitir selección de tipo de mapa
Interfaz para creación de mapa
diagrama
pruebas de funcionamiento
Estudio framework ka-map
Conectar el panel de consulta con el
navegador de mapas
pruebas de funcionamiento
configurar extensiones limite de los
mapas
implementar mover imagen de mapa
pruebas de funcionamiento
implementar herramienta identificar
implementar herramientas zoom in zoom out
implementar mapa de referencia
implementar Tabla de contenido
pruebas de funcionamiento
registro de usuario
interfaz de registro de usuario
pruebas de funcionamiento
autenticación de usuario
cerrar sesión y eliminación de datos
de sesión
descargar imagen mapa
I
I
I
I
I
I
HU-01
HU-01
HU-01
HU-01
HU-01
HU-01
0,2
0,1
0,4
1
1
0,3
8
4
16
40
40
12
120
II
HU-02
0,3
12
II
II
II
HU-02
HU-02
HU-02
0,4
0,1
0,2
16
4
8
II
II
HU-03
HU-03
0,4
0,2
16
8
II
II
II
HU-03
HU-03
HU-04
0,2
0,2
0,2
8
8
8
II
II
HU-04
HU-04
0,6
0,2
24
8
III
III
III
III
HU-05
HU-05
HU-05
HU-06
0,4
0,4
0,2
0,3
16
16
8
12
III
III
III
III
IV
IV
IV
IV
HU-06
HU-06
HU-06
HU-06
HU-07
HU-07
HU-07
HU-08
0,1
0,1
0,3
0,2
0,4
0,4
0,2
0,5
4
4
12
8
16
16
8
20
IV
III
HU-09
HU-10
0,5
0,1
20
4
T-01
T-02
T-03
T-04
T-01
T-02
T-03
T-04
T-01
T-02
T-03
T-01
T-02
T-03
T-01
T-02
T-03
T-04
T-05
T-01
T-02
T-03
T-01
T-01
T-01
84
40
40
40
40
40
40
20
20
Continuación. Cuadro 12. Planificación de las tareas
Total
HU
Tarea
Descripción tarea
Iteración
Historia
Puntos
Horas
T-02
T-03
T-04
T-01
T-02
diagramas de datos
generar mapa en pdf
pruebas de funcionamiento
interfaz de datos para eje temático
formularios CRUD
interfaz de datos para manejo de
variables
formularios CRUD
interfaz de datos para manejo de
indicadores
formularios CRUD
interfaz de datos para manejo de
estadística anual
formularios CRUD
pruebas de funcionamiento
III
III
III
IV
IV
HU-10
HU-10
HU-10
HU-11
HU-11
0,2
0,5
0,2
0,2
0,6
8
20
8
16
24
40
V
V
HU-12
HU-12
0,2
0,6
16
24
40
V
V
HU-13
HU-13
0,4
0,6
16
24
40
V
V
V
HU-14
HU-14
HU-14
0,2
0,6
0,2
8
24
8
T-01
T-02
T-01
T-02
T-01
T-02
T-03
TOTAL HORAS
40
40
600
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU01.
Cuadro 13. Tareas realizadas para HU-01
Tarea
T-01
T-02
T-03
T-04
Duración(Horas)
8
4
16
40
T-05
T-06
40
12
85
Formato 20. Descripción de la tarea T-01 para la historia HU-01
Tarea
Numero tarea:
T-01
Numero historia:
HU-01
Nombre tarea:
Estudio API php/MapScript
Tipo tarea:
Documentar
Puntos estimados:
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Mediante esta tarea se debe obtener conocimiento sobre al API Mapscript
para el lenguaje PHP, en aspectos como: carga de Mapfile, generación
elementos gráficos, metadatos, sistemas de proyecciones, programación de
layers, etiquetas, estilos y generación de Mapfile.
Formato 21. Descripción de la tarea T-02 para la historia HU-01
Tarea
Numero tarea:
T-02
Numero historia:
HU-01
Nombre tarea:
migrar datos
Tipo tarea:
Adaptación
Puntos estimados:
0,1
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Utilizar la herramienta spit (:shp2pgsl) del programa QUANTUM GIS para
migrar los datos geográficos a la base de datos de indicadores de ORDICOP.
86
Formato 22. Descripción de la tarea T-03 para la historia HU-01
Tarea
Numero tarea:
T-03
Numero historia:
HU-01
Nombre tarea:
interfaz de datos
Tipo tarea:
programación
Puntos estimados:
0,4
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se programa una interfaz que permite acceder a los datos en la base de datos
de indicadores.
Formato 23. Descripción de la tarea T-04 para la historia HU-01
Tarea
Numero tarea:
T-04
Numero historia:
HU-01
Nombre tarea:
generar Mapfile
Tipo tarea
Desarrollo
Puntos estimados:
1
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Se programa una clase que permite generar objetos mapfile y guardarlos en un
archivo de texto
87
Formato 24. Descripción de la tarea T-05 para la historia HU-01
Tarea
Numero tarea:
T-05
Numero historia:
HU-01
Nombre tarea:
Interfaz grafica de consultas
Tipo tarea
Desarrollo
Puntos estimados:
1
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Se crea una interfaz grafica de usuario que permite buscar información en la
base de datos de indicadores para generar una consulta que proporcione datos
a la clase generadora de Mapfile.
Formato 25. Descripción de la tarea T-06 para la historia HU-01
Tarea
Numero tarea:
T-06
Nombre tarea:
Probar mapfiles
Numero historia:
HU-01
Tipo tarea
Verificación
Puntos estimados:
0,3
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se verifica que se genere el archivo mapfiles y que la sintaxis de este sea
correcta en otras palabras que al ejecutar el mapfile este genere una imagen
del mapa.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU02.
88
Cuadro 14. Tareas realizadas para HU-02
Tarea
T-01
T-02
T-03
T-04
Duración(:Horas)
12
16
4
8
Formato 26. Descripción de la tarea T-01 para la historia HU-02
Tarea
Numero tarea:
Numero historia:
T-01
HU-02
Nombre tarea:
Estudio de métodos estadísticos de clasificación de datos
Tipo tarea:
Puntos estimados:
Documental
0,3
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se revisa la conceptualización y formulación matemática de los métodos de
clasificación estadística de datos. Se revisan conceptos como: desviación
estándar, media, mediana, moda, intervalos iguales, cuantiles, corte natural.
Formato 27. Descripción de la tarea T-02 para la historia HU-02
Tarea
Numero tarea:
Numero historia:
T-02
HU-02
Nombre tarea:
Herramienta de cálculo de intervalos de datos
Tipo tarea
Puntos estimados:
adaptación
0,4
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Se desarrolla la funcionalidad para calcular los intervalos de datos a partir de
los datos proveídos por la interfaz de datos. Estos intervalos calculados hacen
parte del mapfile.
89
Formato 28. Descripción de la tarea T-03 para la historia HU-02
Tarea
Numero tarea:
T-03
Numero historia:
HU-02
Nombre tarea:
Herramienta de selección de color
Tipo tarea:
Adecuación
Puntos estimados:
0,1
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Se configura la herramienta de selección de color en la interfaz grafica de
usuario desarrollada en la tarea T-05 de la HU-01 “interfaz de consulta de
mapa” y se agrega el soporte en el generador de mapfiles para configurar
estilos de color en los layers.
Formato 29. Descripción de la tarea T-04 para la historia HU-02
Tarea
Numero tarea:
T-04
Numero historia:
HU-02
Nombre tarea:
Verificar intervalos
Tipo tarea
Verificación
Puntos estimados:
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Se verifica que los intervalos de datos calculados sean correctos en el sentido
de que estos se ajusten a la distribución de los datos.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU03.
90
Cuadro 15. Tareas realizadas para HU-03
Tarea
T-01
T-02
T-03
T-04
Duración(:Horas)
16
8
8
8
Formato 30. Descripción de la tarea T-01 para la historia HU-03
Tarea
Numero tarea:
Numero historia:
T-01
HU-03
Nombre tarea:
Agregar soporte para mapa diagrama
Tipo tarea
Puntos estimados:
Desarrollo
0,4
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se obtienen las estadísticas que poseen más 2 dos valores en el tiempo (año),
para generar un mapa con diagramas.
Formato 31. Descripción de la tarea T-02 para la historia HU-03
Tarea
Numero tarea:
Numero historia:
T-02
HU-03
Nombre tarea:
Permitir selección de tipo de mapa
Tipo tarea
Puntos estimados:
Adaptación
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
se proporciona un elemento en la interfaz grafica de usuario de consulta de
mapa para crear uno de los tipos de mapas soportados
91
Formato 32. Descripción de la tarea T-03 para la historia HU-03
Tarea
Numero tarea:
T-03
Numero historia:
HU-03
Nombre tarea:
Interfaz para creación de mapa diagrama
Tipo tarea
Desarrollo
Puntos estimados:
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
se proporciona una interfaz para que el usuario decida el numero de series
(entre 2 y 3) y el año de comienzo en un mapa diagrama, ofrece dos tipos de
diagrama (Barra o torta)
Formato 33. Descripción de la tarea T-04 para la historia HU-03
Tarea
Numero tarea:
T-04
Numero historia:
HU-03
Nombre tarea:
Pruebas de funcionamiento
Tipo tarea
verificación
Puntos estimados:
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se escriben las pruebas unitarias necesarias para la aceptación de los
elementos de programa desarrollados durante la iteración 2.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU04.
92
Cuadro 16. Tareas realizadas para HU-04
Tarea
T-01
T-02
T-03
Duración(Horas)
8
24
8
Formato 34. Descripción de la tarea T-01 para la historia HU-04
Tarea
Numero tarea:
T-01
Numero historia:
HU-04
Nombre tarea:
Estudio framework ka-map
Tipo tarea
documentación
Puntos estimados:
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Revisar el API de la librería ka-map, que permitirá implementar las
herramientas de visualización y manipulación para la cartografía
Formato 35. Descripción de la tarea T-02 para la historia HU-04
Tarea
Numero tarea:
Numero historia:
T-02
HU-04
Nombre tarea:
Conectar el panel de consulta con el navegador de mapas
Tipo tarea
Puntos estimados:
Adaptación
0,6
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se muestra la consulta de construcción del mapa en una ventana emergente
que contiene la imagen del mapa fragmentada en teselas.
93
Formato 36. Descripción de la tarea T-03 para la historia HU-04
Tarea
Numero tarea:
T-03
Nombre tarea:
pruebas de funcionamiento
Tipo tarea
Numero historia:
HU-04
Puntos estimados:
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se escriben las pruebas necesarias para validar la creación de la cache del
mapfile y la carga del mapfile en ka-map.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU05.
Cuadro 17. Tareas realizadas para HU-05
Tarea
T-01
T-02
T-03
Duración(Horas)
16
16
8
Formato 37. Descripción de la tarea T-01 para la historia HU-05
Tarea
Numero tarea:
Numero historia:
T-01
HU-05
Nombre tarea:
configurar extensión limite de mapa
Tipo tarea
Puntos estimados:
Adaptación
0,4
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se establecen las escalas mínima y máxima para visualización del mapa, en el
visor ka-map de cartografía.
94
Formato 38. Descripción de la tarea T-02 para la historia HU-05
Tarea
Numero tarea:
T-02
Numero historia:
HU-05
Nombre tarea:
configurar mover imagen de mapa ( herramienta pan)
Tipo tarea
Adaptación
Puntos estimados:
0,4
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se configura la herramienta pan que permite mover el lienzo del mapa,
cargando solo las teselas necesarias.
Formato 39. Descripción de la tarea T-03 para la historia HU-05
Tarea
Numero tarea:
T-03
Numero historia:
HU-05
Nombre tarea:
pruebas de funcionamiento
Tipo tarea
Verificación
Puntos estimados:
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se verifican la coherencia de la escala, y la coherencia de las teselas
enviadas al lienzo del mapa, y el tamaño de las teselas.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU06.
95
Cuadro 18. Tareas realizadas para HU-06
Tarea
T-01
T-02
T-03
T-04
Duración(:Horas)
12
4
4
12
Formato 40. Descripción de la tarea T-01 para la historia HU-06
Tarea
Numero tarea:
Numero historia:
T-01
HU-06
Nombre tarea:
configurar herramienta identificar
Tipo tarea
Puntos estimados:
Adaptación
0,3
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se configura la herramienta identificar áreas del mapa, permitiendo consultar
información posando el cursor del mouse sobre la imagen del mapa.
Formato 41. Descripción de la tarea T-02 para la historia HU-06
Tarea
Numero tarea:
Numero historia:
T-02
HU-06
Nombre tarea:
configurar herramienta mapa de referencia
Tipo tarea
Puntos estimados:
Adaptación
0,1
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se diseñan las imágenes de mapa de referencia y se establece la extensión
en relación a la escala de la imagen del mapa (EXTENT), se establece el
mapa de referencia en la interfaz de navegación de cartografía.
96
Formato 42. Descripción de la tarea T-03 para la historia HU-06
Tarea
Numero tarea:
Numero historia:
T-03
HU-06
Nombre tarea:
configuración de la TDC (:tabla de contenido)
Tipo tarea
Adaptación
Puntos estimados:
0,3
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se establece la Tabla de contenido que permite visualizar el detalle (tipo capa,
nombre capa) de las capas (layers) que componen el mapa y que permiten
manipular las capas (opacar, apagar, cambiar de posición).
Formato 43. Descripción de la tarea T-04 para la historia HU-06
Tarea
Numero tarea:
T-04
Numero historia:
HU-06
Nombre tarea:
pruebas de funcionamiento
Tipo tarea
Verificación
Puntos estimados:
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Se verifica el funcionamiento de las herramientas configuradas (identificar,
mapa de referencia, TDC)
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU07.
97
Cuadro 19. Tareas realizadas para HU-07
Tarea
T-01
T-02
T-03
Duración(:Horas)
16
16
8
Formato 44. Descripción de la tarea T-01 para la historia HU-07
Tarea
Numero tarea:
Numero historia:
T-01
HU-07
Nombre tarea:
registro de usuario
Tipo tarea
Puntos estimados:
Desarrollo
0,4
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se debe consultar y guardar los datos del usuario que desea utilizar la
aplicación de consulta de mapas.
Formato 45. Descripción de la tarea T-02 para la historia HU-07
Tarea
Numero tarea:
T-02
Nombre tarea:
interfaz de registro de usuario
Tipo tarea
Numero historia:
HU-07
Puntos estimados:
0,4
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
se proporciona una interfaz grafica de usuario para que los visitantes se
registren y puedan acceder a la aplicación (:interfaz de consulta de mapa)
98
Formato 46. Descripción de la tarea T-03 para la historia HU-07
Tarea
Numero tarea:
T-03
Nombre tarea:
pruebas de funcionamiento
Tipo tarea
Verificación
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se verifica el registro de usuario.
Numero historia:
HU-07
Puntos estimados:
0,1
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU08.
Cuadro 20. Tareas realizadas para HU-08
Tarea
Duración(:Horas)
T-01
20
Formato 47. Descripción de la tarea T-01 para la historia HU-08
Tarea
Numero tarea:
Numero historia:
T-01
HU-08
Nombre tarea:
autenticación de usuario
Tipo tarea
Puntos estimados:
Desarrollo
0,5
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Se debe validar el acceso del usuario a la aplicación y se le debe conceder
una sesión en caso de que la validación sea acertada.
99
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU09.
Cuadro 21. Tareas realizadas para HU-09
Tarea
Duración(:Horas)
T-01
20
Formato 48. Descripción de la tarea T-01 para la historia HU-09
Tarea
Numero tarea:
Numero historia:
T-01
HU-09
Nombre tarea:
cerrar sesión
Puntos estimados: 0,5
Tipo tarea
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Eliminar los datos de sesión de usuario, y direccionar a este fuera de la
aplicación.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU10.
Cuadro 22. Tareas realizadas para HU-10
Tarea
T-01
T-02
T-03
T-04
Duración(:Horas)
4
8
20
8
100
Formato 49. Descripción de la tarea T-01 para la historia HU-10
Tarea
Numero tarea:
T-01
Numero historia:
HU-10
Nombre tarea:
descargar imagen de mapa
Tipo tarea
Desarrollo
Puntos estimados:
0,1
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Permitir al usuario guardar la vista actual de la imagen del mapa, en formato de
imagen JPG, PNG o GIF.
Formato 50. Descripción de la tarea T-02 para la historia HU-10
Tarea
Numero tarea:
T-02
Numero historia:
HU-10
Nombre tarea:
diagrama de datos
Tipo tarea
Desarrollo
Puntos estimados:
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Generar un diagrama de barras con los datos de la consulta de mapa del
usuario y adicionar este grafico al reporte PDF.
101
Formato 51. Descripción de la tarea T-03 para la historia HU-10
Tarea
Numero tarea:
Numero historia:
T-03
HU-10
Nombre tarea:
generar mapa en pdf
Tipo tarea
Puntos estimados:
Desarrollo
0,5
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Permitir al usuario guardar el mapa generado en archivo pdf, con un formato de
documento que muestre el titulo, la leyenda, la imagen del mapa, imagen de
mapa referencia, escala, sistema de referencia espacial, diagrama de barras y
tabla de datos.
Formato 52. Descripción de la tarea T-04 para la historia HU-10
Tarea
Numero tarea:
T-04
Numero historia:
HU-10
Nombre tarea:
pruebas de funcionamiento
Tipo tarea
Verificación
Puntos estimados:
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Comprobar la generación correcta de los informes en pdf y las imágenes de
mapa solicitados por el usuario
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU11.
102
Cuadro 23. Tareas realizadas para HU-11
Tarea
Duración(Horas)
T-01
T-02
16
24
Formato 53. Descripción de la tarea T-01 para la historia HU-11
Tarea
Numero tarea:
Numero historia:
T-01
HU-11
Nombre tarea:
Interfaz de datos para eje temático.
Tipo tarea
Puntos estimados:
Desarrollo
0,4
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Proporcionar una interfaz de datos que permita manipular los datos
relacionados a la tabla eje en la base de datos de indicadores.
Formato 54. Descripción de la tarea T-02 para la historia HU-11
Tarea
Numero tarea:
Numero historia:
T-02
HU-11
Nombre tarea:
implementar formularios CRUD
Tipo tarea
Puntos estimados:
Desarrollo
0,6
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Proporcionar una interfaz grafica de usuario que permita al administrador
manejar la información del eje temático.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU12.
103
Cuadro 24. Tareas realizadas para HU-12
Tarea
Duración(:Horas)
T-01
T-02
16
24
Formato 55. Descripción de la tarea T-01 para la historia HU-12
Tarea
Numero tarea:
Numero historia:
T-01
HU-12
Nombre tarea:
interfaz de datos para manejo de variables
Tipo tarea
Puntos estimados:
Desarrollo
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Proporcionar una interfaz de datos que permita manipular los datos
relacionados a la tabla de variables en la base de datos de indicadores.
Formato 56. Descripción de la tarea T-02 para la historia HU-12
Tarea
Numero tarea:
Numero historia:
T-02
HU-12
Nombre tarea:
implementar formularios CRUD
Tipo tarea
Puntos estimados:
Desarrollo
0,6
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Proporcionar una interfaz grafica de usuario que permita al administrador
manejar la información de las variables socioeconómicas.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU13.
104
Cuadro 25. Tareas realizadas para HU-13
Tarea
T-01
T-02
Duración(:Horas)
16
24
Formato 57. Descripción de la tarea T-01 para la historia HU-13
Tarea
Numero tarea:
Numero historia:
T-01
HU-13
Nombre tarea:
interfaz de datos para manejo de indicadores
Tipo tarea
Puntos estimados:
Desarrollo
0,2
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Proporcionar una interfaz de datos que permita manipular los datos
almacenados en la tabla indicadores en la base de datos.
Formato 58. Descripción de la tarea T-02 para la historia HU-13
Tarea
Numero tarea:
Numero historia:
T-02
HU-13
Nombre tarea:
implementar formularios CRUD
Tipo tarea
Puntos estimados:
Desarrollo
0,6
Programador responsable:
Francisco Rada, Omar Duarte
Descripción:
Proporcionar una interfaz grafica de usuario que permita al administrador
manejar la información de los indicadores de variables.
Descripción de tareas realizadas para el desarrollo de la historia de usuario HU14.
105
Cuadro 26. Tareas realizadas para HU-14
Tarea
T-01
T-02
T-03
Duración(:Horas)
8
24
8
Formato 59. Descripción de la tarea T-01 para la historia HU-14
Tarea
Numero tarea:
T-01
Numero historia:
HU-14
Nombre tarea:
interfaz de datos para manejo de estadística anual
Tipo tarea
Desarrollo
Puntos estimados:
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción: Proporcionar una interfaz de datos que permita manipular los
datos almacenados en la tabla estudio_anual en la base de datos de
indicadores.
Formato 60. Descripción de la tarea T-02 para la historia HU-14
Tarea
Numero tarea:
T-02
Numero historia:
HU-14
Nombre tarea:
implementar formularios CRUD
Tipo tarea
Puntos estimados:
Desarrollo
0,6
Programador responsable: Francisco Rada, Omar Duarte
Descripción: Proporcionar una interfaz grafica de usuario que permita al
administrador manejar la información de los indicadores en la tabla
estudio_anual.
106
Formato 61. Descripción de la tarea T-03 para la historia HU-14
Tarea
Numero tarea:
T-03
Numero historia:
HU-14
Nombre tarea:
pruebas de funcionamiento
Puntos estimados:
Verificación
0,2
Programador responsable: Francisco Rada, Omar Duarte
Descripción:
Realizar pruebas de verificación sobre los elementos desarrollados para las
historias HU-11, HU-12, HU-13, HU-14
Tipo tarea
107
6. CONCLUSIONES
Con la realización del presente proyecto se consiguió implementar un producto
que satisface los requerimientos planteados por ORDICOP, producto que se ha
denominado WebGIS VI el cual es una aplicación de Sistema de Información
Geográfico basada en la web, que combina diferentes tecnologías (MapServer,
PHP/MapScript, AJAX, PostGIS), para la elaboración de mapas temáticos del
Norte de Santander. Que tiene las características deseables de una aplicación
web moderna, como: alta interacción gracias a AJAX, un bajo costo de
implementación y alta usabilidad ya que los usuarios no necesitan aprender
extensos manuales.
WebGIS VI que quiere decir: sistema de información geográfico para variables e
indicadores, es una herramienta útil tanto para el Observatorio como para la
comunidad Norte santandereana, ya que permite evaluar factores clave de las
bases socioeconómicas del Departamento, trasladando a un mapa el valor del de
una serie de variables estadísticas, para poder explicar de una manera muy visual
como afecta la incidencia de dichas variables sobre el territorio.
Con la utilización de este tipo de aplicaciones SIG en internet ya sea para cubrir
funciones de análisis estadístico o para compartir información geográfica se
proporciona un medio para que la gente pueda obtener datos e información
geográfica elaborada de gran calidad, mediante procesos automatizados que de
otra forma, dadas las limitaciones tecnológicas, organizacionales y de
capacitación, serian difíciles de conseguir y elaborar.
108
7. RECOMENDACIONES
Posterior al proceso de desarrollo se plantearon posibles funcionalidades que se
podrían aplicar al proyecto en un futuro, algunas de ellas:
Utilizar un Software estadístico robusto como R-Statistical System: R- proyect es
un software de código abierto que ofrece múltiples capacidades de cálculo y
funciones de estadística sobre datos que pueden estar almacenados en diversas
fuentes, incluyendo la capacidad de interoperar con datos espaciales en
PostgreSQL. Este sistema proveería de mayores capacidades de cálculo así como
de precisión a la hora de realizar estimaciones sobre los indicadores.
Permitir al usuario realizar operaciones espaciales como unión e intersección
sobre varias capas: esta nueva funcionalidad le proporcionaría al usuario nuevas
capacidades de análisis al combinar información de capas de datos de diferentes
indicadores y de diferentes ejes temáticos que le permita observar relaciones entre
variables o analizar causas y efectos entre estas, por ejemplo un usuario podría
ver un mapa de un indicador de violencia combinado con un indicador de pobreza.
Ofrecer consultas a nivel veredal: se podría agregar información temática referente
al ámbito veredal y relacionar esta con la cartografía que ya existe en la base de
datos.
Obtener información desde otras fuentes de datos: conectarse a bases de datos
de otras organizaciones.
Descargar la cartografía en GML, SHP o KML para usuarios avanzados: esta
herramienta seria perfecta para aquellos usuarios que poseen conocimientos en
software SIG y quisieran ampliar el análisis de la información en su estación de
trabajo personal.
109
BIBLIOGRAFÍA
BECK, Kent. Extreme programing explained. Florida: Addison-wesley, 1999. 224 p.
BOSQUE SENDRA, J.
Hall, 1997. 345 p.
Sistemas de información geográfica.
Madrid: Prentice
GIBERT GINESTA, Marc. Ingeniería del software de entornos de software libre.
Barcelona: Universidad abierta de Cataluña, 2005. 326 p.
MESA ARTEAGA, Maria Silvana. Instalación y configuración de un servicio de
mapas online y desarrollo de una interfaz web que permita la visualización de
información geográfica de la ciudad de San José de Cúcuta sobre Internet. San
José de Cúcuta, 2004. 321 p. Trabajo de grado (Ingeniero de Sistemas).
Universidad Francisco de Paula Santander.
Facultad de Ingeniería.
Departamento de Sistemas.
MITCHELL, Tyler. Web mapping illustrated. New York: O`reilly, 2006. 368 p.
MORENO JIMÉNEZ, Antonio. Sistemas y análisis de la información geográfica,
Madrid: Alfaomega, 2006. 940 p.
OBSERVATORIO REGIONAL PARA EL DESARROLLO INTEGRAL Y LA
CONVIVENCIA PACÍFICA DE NORTE DE SANTANDER. Información general del
observatorio de paz. San José de Cúcuta: ORDICOP, 2009. 15 p.
PARRA SÁNCHEZ, Rodolfo. Sistemas de información geográfica base de la
gestión ambiental. Bogotá: Universidad Nacional de Colombia, 1997. 356 p.
ROBINSON, Arthur. Elementos de cartografía. Madrid: John Wiley, 1995. 734 p.
SILBERSCHATZ, Abraham. Fundamentos de base de datos. México: Prentice
Hall, 2003. 564 p.
110
ANEXOS
111
Anexo A. Fase III - diseño
Formulación de la metáfora del sistema. La metáfora del sistema es la visión
que se tiene del funcionamiento del sistema cuando este aun no ha sido
desarrollado, es un panorama que describe la funcionalidad del sistema por parte
del usuario, la siguiente es la definición de la metáfora del sistema:
WebGIS VI, es una aplicación Web a la cual se accede a través de Intranet o
Internet; es un sistema que posibilita la creación y visualización de mapas
temáticos del Departamento Norte de Santander, permitiendo observar la
incidencia de fenómenos sociales, económicos y de derechos humanos en un
mapa.
Arquitectura. Anteriormente se había referido a la metáfora como un instrumento
que permite
identificar los objetos clave y determinar ciertos aspectos
característicos de las interfaces. La metáfora da una forma inicial para la
arquitectura del sistema, esta brinda unas pautas y unas guías básicas acerca de
cómo va a ser la estructura, el funcionamiento y la interacción entre las partes del
software.
Forma para la arquitectura.
Cuando se escoge una forma para la arquitectura
se debe tener en cuenta, la metáfora, los objetivos trazados para el sistema, los de
tipo funcional, como mantenimiento, flexibilidad e interacción con otros sistemas
de información. De igual forma las restricciones derivadas de las tecnologías
disponibles para implementar el sistema. En este aspecto unas arquitecturas son
más recomendables de implementar con ciertas tecnologías mientras que otras
tecnologías no son aptas para determinadas arquitecturas.
Para este caso se opto por aplicar una forma de arquitectura de tres capas, en
este enfoque el que el objetivo primordial es la separación de la lógica de negocios
de la lógica de diseño, separar la capa de datos de la capa de presentación al
usuario. La ventaja principal de este enfoque es que el desarrollo se puede llevar a
cabo en varias capas y en caso de que se deba aplicar algún cambio, sólo se
aplica el cambio a la capa referida.
112
Arquitectura de tres capas de la aplicación.
Capa de presentación: Constituye la interfaz entre el usuario humano y
sistema, esta capa comunica la información al usuario y actúa como receptor,
capturar la información del usuario, realizando durante este proceso el filtrado y
validación del formato de los datos de entrada. Esta capa se comunica solo con
capa de negocio de forma directa.
el
al
la
la
En el caso de WebGIS VI dado que se trata de una aplicación web, esta capa está
constituida por el navegador de Internet del usuario (Internet Explorer, Mozilla
Firefox, etc.), en un nivel distinto.
Capa de negocio: Recibe este nombre porque es en esta capa donde se
establecen todas las reglas del negocio que deben cumplirse, esta capa se
comunica con la capa de presentación, para recibir las solicitudes y presentar los
resultados, y con la capa de datos, para solicitar al gestor de base de datos para
almacenar o recuperar datos de él. También se consideran aquí los programas de
aplicación.
Para la aplicación esta capa está representada por el servidor web Apache el cual
contiene los scripts de servidor en PHP y por otra parte el API MapScript que
permitirá atender las peticiones de generación de objetos geográficos y
transformar estos en imágenes de mapa.
113
Capa de datos: es donde residen los datos y es la encargada de acceder a los
mismos. Está formada por el gestor de bases de datos PostgreSQL extendido
espacialmente con PostGIS, que realiza todo el almacenamiento de datos, recibe
solicitudes de almacenamiento y recuperación de información desde la capa de
negocio.
Elementos que conforman la arquitectura de WebGIS VI
Patrón de diseño MVC. Un patrón de software es una solución generalizada a un
problema de diseño, un patrón se crea para dar respuesta a problemas comunes
en el desarrollo de software y el diseño de sus interfaces, ya que se aplico una
forma de arquitectura por capas, se escogió un patrón de diseño que se adapta a
esta, el patrón MVC (:Modelo-Vista-Controlador).
La forma más sencilla de implementar este patrón es pensando en capas, como
regla, los accesos a la base de datos se hacen en el modelo, la vista y el
controlador no deben de saber si se usa o no una base de datos. El controlador es
el que decide que vista se debe de imprimir y que información es la que se envía.
De esta forma vemos como cada parte de la arquitectura queda separa por cada
capa, controlándose la comunicación entre los componentes.
114
El patrón MVC
•
El Modelo representa la información con la que trabaja la aplicación, es decir,
su lógica de negocio.
•
La Vista transforma el modelo en una página web que permite al usuario
interactuar con ella.
•
El Controlador se encarga de procesar las interacciones del usuario y realiza
los cambios apropiados en el modelo o en la vista.
Vista de procesos. Modelar el proceso de negocio es una parte esencial de
cualquier proceso de desarrollo de software. Permite al analista capturar el
esquema general y los procedimientos que gobiernan el negocio. Este modelo
provee una descripción de dónde se va a ajustar el sistema de software
considerado dentro de la estructura organizacional y de las actividades habituales.
También provee la justificación para la construcción del sistema de software al
capturar las actividades manuales y los procedimientos automatizados habituales
que se incorporarán en nuevo sistema, con costos y beneficios asociados.
115
Descripción del Ambiente de negocio del sistema actual:
Para lograr un
buen resultado en la fase de recopilación de requerimientos es bueno conocer el
funcionamiento actual del negocio, esto se hace para poder ajustar el producto a
la estrategia de trabajo de la organización así mismo posibilita la reutilización de
procesos y medios tecnológicos lo cual va a redundar en un menor costo de
implantación. A continuación se realiza una descripción del flujo trabajo en los
procesos que se relacionan con el objetivo del producto:
a) Cada Eje Consultor interno del Observatorio se encarga de entregar la
información organizada de los indicadores que le corresponde según su
temática o su estudio, esto para cada uno de los municipios con los que trabaja
el Observatorio Regional de Paz.
b) El Ingeniero de Sistemas de ORDICOP recibe esta información de los Ejes
Consultores y la exporta a una base de datos en PostgreSQL para la
alimentación de la misma.
c) Esta información que se encuentra en una base de datos es usada por el
Grupo Técnico de ORDICOP para producir mapas o gráficos que señalen las
dinámicas de trascendencia y de análisis de los diferentes indicadores, ya que
se maneja información desde 1997 para 15 municipios de Norte de Santander.
d) La oficina de Planeación Departamental de Norte de Santander por medio de
un convenio interinstitucional entre La Gobernación de Norte de Santander, La
Universidad francisco de Paula Santander y ORDICOP está comprometida a
entregar al Ingeniero a cargo del Sistema de Información Cartográfico de
ORDICOP, bases de datos de información Cartográfica del Departamento.
e) El Ingeniero de Sistemas de ORDICOP recibe esta información, la trata y la
almacena en como proyecto utilizando el Software ArcView que tiene el
Observatorio Regional de Paz Norte de Santander.
f) El Ingeniero de Sistemas de ORDICOP convierte los mapas que tiene en
formato .SHP en formato .JPG y envía en un CD al Administrador de la página
Web de ORDICOP para que los publique en la sección de mapas, esto con el
fin de mostrarlos y ponerlos al servicio de la comunidad.
116
Diagrama BPM para el proceso de elaboración de cartografía
Vista estática.
Diagrama conceptual: La realización del diagrama de clases está en la
frontera entre el análisis y el diseño. Probablemente es el diagrama UML más
conocido, y permite identificar la estructura de clases del sistema incluyendo las
propiedades y métodos de cada clase. Este diagrama es una vista de alto nivel
que permite modelar los conceptos en el dominio del problema.
117
Diagrama conceptual inicial
Diagrama de clases:
El diagrama de Clases captura la estructura lógica del
sistema - las clases y cosas que constituyen el modelo -. Es un modelo estático,
describiendo lo que existe y qué atributos y comportamiento tiene, más que cómo
se hace algo. Los diagramas de Clases son los más útiles ya que dan una visión
de los aspectos estáticos del sistema, permitiendo realizar la abstracción de un
dominio formalizar el análisis de conceptos, definir una solución de diseño y
construir componentes de software.
Clases de la primera Iteración.
Clase dataConnector: esta clase extiende a la capa de base de datos abstraída
en la librería ADODB, esta clase trata todos los accesos a la base de datos de
indicadores. Implementa solo métodos de consulta de datos.
118
Clase dataConnector
Resultado de Prueba unitaria para la clase dataConnector
Resultado de la prueba para la clase dataConnector:
Test completos: 15 pasados, 0 fallos, 0 excepciones.
119
Prueba unitaria testDataConnector
Clase mapaTematico: esta clase contiene toda la lógica que permite generar
archivos mapfile que más tarde serán transformados en mapas temáticos cuando
sean convertidos en imágenes.
120
Clase mapaTematico.
Resultado de Prueba unitaria para la clase mapaTematico
121
Resultado de la prueba para la clase mapaTematico:
Test completos: 4 pasados, 0 fallos, 0 excepciones.
Prueba unitaria testMapaTematico.
Clases de la segunda iteración. Durante esta iteración se extiende la
funcionalidad de la clase mapaTematico agregando las funcionalidades para la
generación de los tipos de mapa coropleta y mapa-diagrama, además se agrega la
funcionalidad para calcular los intervalos estadísticos. También se programa la IU
para el panel de elaboración de mapas en javascript.
Clases de la tercera iteración.
Clase dataChart: esta clase contiene la lógica para recuperar los datos que se
utilizaran para crear un diagrama de barras, que se agregara el reporte PDF.
122
Clase dataChart.
Resultado de Prueba unitaria para la clase dataChart
Resultado de la prueba para la clase dataChart:
Test completos: 4 pasados, 0 fallos, 0 excepciones.
123
Prueba unitaria testDataChart.
Clase chart: esta clase contiene la lógica para recuperar los datos que se
utilizaran para crear un diagrama de barras, que se agregara el reporte PDF.
Clase chart.
124
Resultado de Prueba unitaria para la clase chart
Resultado de la prueba para la clase chart:
Test completos: 2 pasados, 0 fallos, 0 excepciones.
Prueba unitaria testChart.
125
Clases de la cuarta iteración.
Clase eje: esta clase contiene toda la funcionalidad necesaria para manipular los
datos almacenados en la tabla eje, esta clase permite acceder a dicha tabla para
consultar, guardar, eliminar o modificar valores en la tabla.
Clase eje
Resultado de Prueba unitaria para la clase eje
Resultado de la prueba para la clase eje:
Test completos: 16 pasados, 0 fallos, 0 excepciones.
126
Prueba unitaria testEje.
127
Clase variable: esta clase contiene toda la funcionalidad necesaria para
manipular los datos almacenados en la tabla eje, esta clase permite acceder a
dicha tabla para consultar, guardar, eliminar o modificar valores en la tabla.
Clase variable
Resultado de Prueba unitaria para la clase variable
Resultado de la prueba para la clase variable:
Test completos: 18 pasados, 0 fallos, 0 excepciones.
128
Prueba unitaria testVariable.
129
Clases de la quinta iteración.
Clase indicador: esta clase contiene toda la funcionalidad necesaria para
manipular los datos almacenados en la tabla indicador, esta clase permite acceder
a dicha tabla para consultar, guardar, eliminar o modificar valores relacionados
con la magnitud del indicador.
Clase indicador
Resultado de Prueba unitaria para la clase indicador
Resultado de la prueba para la clase variable:
Test completos: 16 pasados, 0 fallos, 0 excepciones.
130
Prueba unitaria para testIndicador.
Clase estudioAnual: esta clase contiene toda la funcionalidad necesaria para
manipular los datos almacenados en la tabla estudio_anual, esta clase permite
acceder a dicha tabla para consultar, guardar, eliminar o modificar valores que
permitirán asignar estadísticas a los municipios.
131
Clase estudioAnual
Resultado de Prueba unitaria para la clase indicador
Resultado de la prueba para la clase estudioAnual:
Test completos: 16 pasados, 0 fallos, 0 excepciones.
132
Prueba unitaria para testEstudioAnual.
133
Vista de datos.
Modelo entidad relación (MER): El modelo de datos entidad-relación (E-R) está
basado en una percepción del mundo real que consta de una colección de objetos
básicos, llamados entidades, y de relaciones entre estos objetos. Una entidad es
una cosa u objeto en el mundo real que es distinguible de otros objetos. Este
modelo es útil para representar la estructura de los datos en una base de datos
relacional.
En el anexo A “diccionario de datos” puede encontrar la referencia de la base de
datos, con la descripción textual de todas las tablas, relaciones y demás
entidades.
Diagrama entidad-relación
134
Vista de interacción.
Diagrama de secuencias: Los diagramas de secuencia se usan para mostrar la
interacción entre los usuarios, las pantallas y las instancias de los objetos en el
sistema. Proveen un mapa secuencial del paso de los mensajes entre los objetos
a lo largo del tiempo. Frecuentemente, estos diagramas se utilizan para ilustrar un
escenario, un conjunto de pasos comunes que se siguen en respuesta a un evento
externo y que genera un resultado. El modelo incluye qué inicia la actividad en el
sistema, qué procesamiento y cambios ocurren internamente y qué salidas se
generan.
Diagrama de secuencias para Consultar mapa
135
Flujo de eventos Consultar mapa
(:1) el usuario visitante accede a la interfaz de consulta de Mapas, (:2:) la UI
utilizando AJAX envía automáticamente una petición al objeto controlFormMapa,
(:3) el objeto controlFormMapa captura la petición de datos y la redirecciona
enviándola al objeto dataConnector ejecutando el método getEjes(), (:4) el objeto
dataConnector accede a la capa de datos y mediante el método getEjes()
encapsula los datos en formato JSON y los envía de vuelta al objeto
controlFormMapa, (:5) el objeto controlFormMapa recibe los datos en JSON y los
envía a la interfaz que hizo la petición, (:6) se captura el evento y se actualiza la
interfaz, (:7) el usuario selecciona uno de los Ejes temáticos de una lista
desplegable, (:8) la UI utilizando el motor AJAX envía una petición con el
parámetro cod_eje al objeto controlFormMapa, (:9) el objeto controlFormMapa
captura la petición y la redirecciona al objeto dataConnector ejecutando el método
getVarsDeEje(:cod_eje), (:10) el objeto dataConnector accede a la capa de datos
y usando el método getVarsDeEje() retorna el conjunto de valores en JSON al
objeto controlFormMapa, (:11) controlFormMapa envía los datos a la interfaz, (:12)
un evento actualiza la interfaz, (:13) el usuario selecciona una variable de una lista
desplegable, (:14) la UI utilizando el motor AJAX envía una petición con los
parámetros cod_eje y cod_var al objeto controlFormMapa, (:15) el objeto
controlFormMapa captura la petición y la redirecciona al objeto dataConnector
ejecutando el método getIndDeVar(:cod_eje, cod_var), (:16) el objeto
dataConnector accede a la capa de datos y usando el método getIndDeVar()
retorna el conjunto de valores en JSON al objeto controlFormMapa, (:17)
controlFormMapa envía los datos a la interfaz, (:18) un evento actualiza la interfaz,
(:19) el usuario selecciona un indicador de una lista desplegable, (:20) la UI
utilizando el motor AJAX envía una petición con los parámetros cod_eje, cod_var y
cod_ind al objeto controlFormMapa, (:21) el objeto controlFormMapa captura la
petición y la redirecciona al objeto dataConnector ejecutando el método
getAnyosDeInd(:cod_eje, cod_var, cod_ind), (:22) el objeto dataConnector accede
a la capa de datos y usando el método getAnyosDeInd () retorna el conjunto de
valores en JSON al objeto controlFormMapa, (:23) controlFormMapa envía los
datos a la interfaz, (:24) el usuario selecciona un año para la estadística de una
lista desplegable, (:25) la UI utilizando el motor AJAX envía una petición con los
parámetros cod_eje, cod_var, cod_ind y anyo al objeto controlFormMapa, (:26) el
objeto controlFormMapa captura la petición y la redirecciona al objeto
dataConnector ejecutando el método getdataStore(:cod_eje, cod_var, cod_ind,
anyo), (:27) el objeto dataConnector accede a la capa de datos y usando el
método getdataStore() retorna el conjunto de valores en JSON al objeto
controlFormMapa, (:28) controlFormMapa envía los datos a la interfaz, (:29) el
usuario selecciona el numero de clases y otros parámetros, (:30)
controlFormMapa captura la petición, (:31) entonces envía a un objeto
motorMapfile junto con los parámetros y el dataStore encapsulados en un array,
(:32) el objeto motorMapfile procesa los datos y genera un mapfile que guarda en
136
el disco duro para luego pasar su ruta al visor ka-Map.
Diagrama de secuencias para Imprimir mapa
Flujo de eventos Imprimir mapa. (:1)El usuario selecciona imprimir mapa de la
interfaz de navegación de mapa y selecciona uno de los formatos, (:2) la UI envía
la petición al objeto print, que recibe como parámetro el tipo de imagen y crea
esta, (:4) el objeto print envía una petición parametrizada de datos al objeto
dataChart, (::5) el objeto dataChart retorna un conjunto de valores en un array,
(::6) el objeto print envía una petición al objeto chart junto con el dataStore, (::7) el
objeto chart retorna una imagen con un diagrama de datos del dataStore recibido,
(::8) el objeto print crea una imagen de la leyenda del mapa, (:9) el objeto print
envía una petición al objeto tcpdf para crear un documento pdf con la imagen del
mapa, la escala , la leyenda de datos y el diagrama, (::10) el objeto tcpdf contesta
la petición, (::11) el objeto print devuelve el mapa en un formato de datos.
137
Diagrama de secuencias para Registro usuario
Flujo de eventos Registro usuario. (::1) el usuario accede a la interfaz y solicita
registrarse, (::2) la UI envía una petición de registro al sistema con los parámetros
entrados por el usuario, (::3) el objeto controlVisitante invoca el método save() del
objeto Visitante para registrar al usuario, (::4) el objeto Visitante confirma la
transacción, (::5) el objeto controlVisitante notifica a la UI acerca de la operación
de registro, (::6) el usuario solicita acceder al sistema, (::7) la UI envía una petición
de inicio de sesión, (::8) el objeto controlFormMapa envía una petición de
autenticación al objeto Visitante, (::9) el objeto visitante permite o deniega el
acceso, (::10) el objeto controlFormMapa notifica a la Ui del resultado de la
operación.
138
Diagrama de secuencias para Agregar eje
Flujo de eventos Agregar eje.
(:1) El usuario Administrador accede a la interfaz de agregar eje, (::2) la IU
Agregar eje envía la petición del código del máximo código eje al objeto
ControlFormEje, (::3) el objeto ControlFormEje recibe la petición y la redirecciona
al objeto Eje ejecutando el método maxEje(::), (::4) el objeto Eje accede a la capa
de datos obteniendo el máximo código eje luego lo encapsula en formato JSON y
retorna el código al objeto controlFormEje, (::5) el objeto controlFormEje recibe el
dato y lo retorna a la interfaz Agregar eje, (::6) la interfaz agregar eje actualiza el
combo eje con el dato recibido, (::7) El usuario selecciona el código del eje ingresa
la descripción del nuevo código y da clic en el botón guardar, (::8) la interfaz
Agregar eje valida los datos del formulario, (::9) si los datos están correctos envía
la petición al objeto controlFormEje para agregar un nuevo eje, (::10) el objeto
controlFormEje recibe la petición de la interfaz y la redirecciona al objeto eje
ejecutando el método saveEje(), (::11) el objeto eje recibe la petición y accede a la
capa de datos para agregar un nuevo eje enseguida retorna una confirmación
(::positiva ó negativa) de la acción, (:12) el objeto controlFormEje recibe la
confirmación y la retorna a la interfaz Agregar eje.
139
Diagrama de secuencias para Modificar eje
Flujo de eventos Modificar eje.
(:1) El usuario Administrador accede a la interfaz Modificar eje, (::2) la interfaz
modificar eje envía la petición ejes al objeto controlFormEje, (::3) el objeto
controlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (::4) el objeto Eje recibe la petición y accede a la capa de datos
para retornar la lista de ejes encapsulándolos en formato JSON y retornándolos al
objeto controlFormEje, (::5) el objeto controlFormEje recibe los datos y lo retorna a
la interfaz Modificar eje, (::6) la interfaz actualiza el combo cod_eje con los datos
recibidos, (::7) El Administrador selecciona el eje, ingresa la nueva descripción y
da clic en el botón modificar, (::8) la interfaz valida los datos del formulario, (::9) la
interfaz modificar eje realiza la petición de modificar el eje al objeto
controlFormEje, (::10) el objeto controlFormEje recibe la petición y la redirecciona
al objeto Eje ejecutando el método updateEje(::), (::11) El objeto eje recibe la
petición y accede a la capa de datos para modificar la descripción del eje luego
retorna la confirmación de la acción al objeto controlFormEje, (::12) el objeto
controlFormEje recibe la confirmación de la acción y la envía a la interfaz modificar
eje.
140
Diagrama de secuencias para Eliminar eje
Flujo de eventos Eliminar eje.
(:1) El usuario Administrador accede a la interfaz Eliminar eje, (:2) la interfaz
Eliminar eje envía la petición ejes al objeto controlFormEje, (:3) el objeto
controlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje recibe la petición y accede a la capa de datos
para retornar la lista de ejes encapsulándolos en formato JSON y retornándolos al
objeto controlFormEje, (:5) el objeto controlFormEje recibe los datos y lo retorna a
la interfaz Eliminar eje, (:6) la interfaz actualiza el combo cod_eje con los datos
recibidos, (:7) El Administrador selecciona el eje y da clic en el botón eliminar, (:8)
la interfaz valida los datos del formulario, (:9) la interfaz eliminar eje realiza la
petición de eliminar el eje al objeto controlFormEje, (:10) el objeto controlFormEje
recibe la petición y la redirecciona al objeto Eje ejecutando el método deleteEje(),
(:11) El objeto eje recibe la petición y accede a la capa de datos para eliminar el
eje luego retorna la confirmación de la acción al objeto controlFormEje, (:12) el
objeto controlFormEje recibe la confirmación de la acción y la envía a la interfaz
eliminar eje.
141
Diagrama de secuencias para Consultar eje.
Flujo de eventos Consultar eje.
(:1) El usuario Administrador accede a la interfaz Consultar eje, (:2) la interfaz
Consultar eje envía la petición ejes al objeto controlFormEje, (:3) el objeto
controlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje recibe la petición y accede a la capa de datos
para retornar la lista de ejes encapsulándolos en formato JSON y retornándolos al
objeto controlFormEje, (:5) el objeto controlFormEje recibe los datos y lo retorna a
la interfaz Consultar eje, (:6) la interfaz actualiza el datagrid con los datos
recibidos.
142
Diagrama de secuencias para Agregar variable.
Flujo de eventos Agregar variable.
(::1) El usuario Administrador accede a la interfaz de agregar variable, (:2) la IU
Flujo de eventos Agregar variable.
Agregar variable envía la petición de ejes al objeto ControlFormEje, (:3) el objeto
ControlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje accede a la capa de datos obteniendo el array
de ejes luego lo encapsula en formato JSON y lo retorna al objeto controlFormEje,
(:5) el objeto controlFormEje recibe los datos y los retorna a la interfaz Agregar
variable, (:6) la interfaz agregar variable actualiza el combo eje con los datos
recibidos, (:7) el usuario selecciona el código del eje, (:8) la interfaz agregar
variable realiza la petición del máximo código de la variable al objeto
143
ControlFormVariable, (:9) el objeto ControlFormVariable recibe la petición y la
redirecciona al objeto variable ejecutando el método getMax(), (:10) el objeto
variable accede a la capa de datos obteniendo el máximo código variable
encapsulando en formato JSON y retornándolo al objeto controlFormVariable,
(:11) el objeto ControlFormVariable recibe el dato y lo retorna a la interfaz agregar
variable, (:12) el administrador selecciona el código de la variable ingresa la
descripción de la nueva variable y da clic en el botón guardar, (:13) la interfaz
valida el formulario, (:14) la interfaz agregar variable realiza la petición de agregar
una nueva variable al objeto ControlFormVariable, (:15) el objeto
ControlFormVariable recibe la petición y la redirecciona al objeto variable
ejecutando el método saveVariable, (:16) el objeto variable accede a la capa de
datos para insertar una nueva variable y retorna la confirmación de la acción al
objeto ControlFormVariable, (:17) el objeto ControlFormVariable recibe la
confirmación y la envía a la interfaz agregar variable.
Diagrama de secuencias para Modificar variable.
Flujo de eventos Modificar variable.
(:1) El usuario Administrador accede a la interfaz de modificar variable, (:2) la IU
modificar variable envía la petición de ejes relacionados con la tabla variable al
objeto ControlFormEje, (:3) el objeto ControlFormEje recibe la petición y la re
144
direcciona al objeto Eje ejecutando el método getEjes(), (:4) el objeto Eje accede a
la capa de datos obteniendo el array de ejes luego lo encapsula en formato JSON
y lo retorna al objeto controlFormEje, (:5) el objeto controlFormEje recibe los datos
y los retorna a la interfaz modificar variable, (:6) la interfaz modificar variable
actualiza el combo eje con los datos recibidos, (:7) el usuario selecciona el código
del eje, (:8) la interfaz modificar variable realiza la petición de las variables
pertenecientes al eje seleccionado al objeto ControlFormVariable, (:9) el objeto
ControlFormVariable recibe la petición y la redirecciona al objeto variable
ejecutando el método getVarsDeEje(), (:10) el objeto variable accede a la capa de
datos obteniendo un array con las variables pertenecientes al eje encapsulando en
formato JSON y retornándolo al objeto controlFormVariable, (:11) el objeto
ControlFormVariable recibe los datos y los retorna a la interfaz modificar variable,
(:12) el administrador selecciona el código de la variable ingresa la nueva
descripción y da clic en el botón modificar, (:13) la interfaz valida el formulario,
(:14) la interfaz modificar variable realiza la petición de modificar una variable al
objeto ControlFormVariable, (:15) el objeto ControlFormVariable recibe la petición
y la redirecciona al objeto variable ejecutando el método updateVariable, (:16) el
objeto variable accede a la capa de datos para modificar la variable y retorna la
confirmación de la acción al objeto ControlFormVariable, (:17) el objeto
ControlFormVariable recibe la confirmación y la envía a la interfaz modificar
variable.
145
Diagrama de secuencias para Eliminar variable.
Flujo de eventos Eliminar variable.
(:1) El usuario Administrador accede a la interfaz eliminar variable, (:2) la IU
eliminar variable envía la petición de ejes al objeto ControlFormEje, (:3) el objeto
ControlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje accede a la capa de datos obteniendo el array
de ejes luego lo encapsula en formato JSON y lo retorna al objeto controlFormEje,
(:5) el objeto controlFormEje recibe los datos y los retorna a la interfaz eliminar
variable, (:6) la interfaz eliminar variable actualiza el combo eje con los datos
recibidos, (:7) el usuario selecciona el código del eje, (:8) la interfaz eliminar
variable realiza la petición de las variables pertenecientes al eje seleccionado al
objeto ControlFormVariable, (:9) el objeto ControlFormVariable recibe la petición y
la redirecciona al objeto variable ejecutando el método getVarsDeEje(), (:10) el
146
objeto variable accede a la capa de datos obteniendo un array con las variables
pertenecientes al eje encapsulándolo en formato JSON y retornándolo al objeto
controlFormVariable, (:11) el objeto ControlFormVariable recibe los datos y los
retorna a la interfaz eliminar variable, (:12) el administrador selecciona el código
de la variable y da clic en el botón eliminar, (:13) la interfaz valida el formulario,
(:14) la interfaz eliminar variable realiza la petición de eliminar una variable al
objeto ControlFormVariable, (:15) el objeto ControlFormVariable recibe la petición
y la redirecciona al objeto variable ejecutando el método deleteVariable, (:16) el
objeto variable accede a la capa de datos para eliminar la variable y retorna la
confirmación de la acción al objeto ControlFormVariable, (:17) el objeto
ControlFormVariable recibe la confirmación y la envía a la interfaz eliminar
variable.
Diagrama de secuencias para Consultar variable.
Consultar variable. (::1) El usuario Administrador accede a la interfaz Consultar
variable, (:2) la interfaz Consultar variable envía la petición variables al objeto
controlFormVariable, (:3) el objeto controlFormVariable recibe la petición y la
redirecciona al objeto Variable ejecutando el método getVariables(), (:4) el objeto
Variable recibe la petición y accede a la capa de datos para retornar la lista de
variables encapsulándolos en formato JSON y retornándolos al objeto
controlFormVariable, (:5) el objeto controlFormVariable recibe los datos y lo
retorna a la interfaz Consultar variable, (:6) la interfaz actualiza el datagrid con los
datos recibidos.
147
Diagrama de secuencias para Agregar indicador.
Flujo de eventos Agregar indicador. (:1) El usuario Administrador accede a la
interfaz de agregar indicador, (:2) la IU Agregar indicador envía la petición de ejes
presentes en la tabla variable al objeto ControlFormEje, (:3) el objeto
ControlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje accede a la capa de datos obteniendo el array
de ejes luego lo encapsula en formato JSON y lo retorna al objeto controlFormEje,
(:5) el objeto controlFormEje recibe los datos y los retorna a la interfaz Agregar
indicador, (:6) la interfaz agregar indicador actualiza el combo eje con los datos
recibidos, (:7) el usuario selecciona el código del eje, (:8) la interfaz agregar
indicador realiza la petición de las variables del eje seleccionado al objeto
ControlFormVariable, (:9) el objeto ControlFormVariable recibe la petición y la
redirecciona al objeto variable ejecutando el método getVarsDeEje(), (:10) el
objeto variable accede a la capa de datos obteniendo las variables del eje
encapsulándolos en formato JSON y retornándolos al objeto controlFormVariable,
(:11) el objeto ControlFormVariable recibe los datos y los retorna a la interfaz
agregar indicador, (:12) la interfaz agregar indicador actualiza el combo variable,
(:13) el administrador selecciona el código de la variable, (:14) la interfaz agregar
148
indicador realiza la petición del máximo código indicador para el eje y la variable
previamente seleccionado por el administrador al objeto controlFormIndicador,
(:15) el objeto controlFormIndicador recibe la petición y la redirecciona al objeto
Indicador ejecutando el método maxInd(), (:16) el objeto indicador accede a la
capa de datos obteniendo el máximo código indicador lo encapsula en formato
JSON y lo retorna al objeto controlFormIndicador, (:17) el objeto
controlFormIndicador recibe el dato y lo envía la interfaz agregar indicador, (:18) la
interfaz actualiza el valor del combo código indicador de acuerdo al dato recibido,
(:19) el usuario selecciona el código indicador e ingresa los datos indicador y
descripción luego da clic en el botón guardar, (:20) la interfaz valida el formulario,
(:21) la interfaz agregar indicador realiza la petición de agregar un nuevo indicador
al objeto controlFormIndicador, (:22) el objeto controlFormIndicador recibe la
petición y la redirecciona al objeto indicador ejecutando el método saveIndicador(),
(:23) el objeto indicador accede a la capa de datos para agregar un nuevo
indicador luego retorna la confirmación de la acción al objeto
controlFormIndicador, (:24) el objeto controlFormIndicador recibe la confirmación y
la retorna a la interfaz agregar indicador.
Diagrama de secuencias para Modificar indicador.
149
Flujo de eventos Modificar indicador.
(:1) El usuario Administrador accede a la interfaz de modificar indicador, (:2) la IU
modificar indicador envía la petición de ejes presentes en la tabla indicador al
objeto ControlFormEje, (:3) el objeto ControlFormEje recibe la petición y la
redirecciona al objeto Eje ejecutando el método getEjes(), (:4) el objeto Eje accede
a la capa de datos obteniendo el array de ejes luego lo encapsula en formato
JSON y lo retorna al objeto controlFormEje, (:5) el objeto controlFormEje recibe los
datos y los retorna a la interfaz modificar indicador, (:6) la interfaz modificar
indicador actualiza el combo eje con los datos recibidos, (:7) el usuario selecciona
el código del eje, (:8) la interfaz modificar indicador realiza la petición de las
variables del eje seleccionado al objeto ControlFormVariable, (:9) el objeto
ControlFormVariable recibe la petición y la redirecciona al objeto variable
ejecutando el método getVarsDeEje(), (:10) el objeto variable accede a la capa de
datos obteniendo las variables del eje encapsulándolos en formato JSON y
retornándolos al objeto controlFormVariable, (:11) el objeto ControlFormVariable
recibe los datos y los retorna a la interfaz modificar indicador, (:12) la interfaz
modificar indicador actualiza el combo variable, (:13) el administrador selecciona el
código de la variable, (:14) la interfaz modificar indicador realiza la petición del
indicador asociado a la variable al objeto controlFormIndicador, (:15) el objeto
controlFormIndicador recibe la petición y la redirecciona al objeto Indicador
ejecutando el método getIndDeVar(), (:16) el objeto indicador accede a la capa de
datos obteniendo los indicadores asociados a la variable seleccionada por el
administrador luego los encapsula en formato JSON y los retorna al objeto
controlFormIndicador, (:17) el objeto controlFormIndicador recibe los datos y los
envía la interfaz modificar indicador, (:18) la interfaz actualiza el valor del combo
código indicador de acuerdo al dato recibido, (:19) el usuario selecciona el código
indicador e ingresa la nueva descripción luego da clic en el botón guardar, (:20) la
interfaz valida el formulario, (:21) la interfaz modificar indicador realiza la petición
de modificar la descripción de un indicador al objeto controlFormIndicador, (:22) el
objeto controlFormIndicador recibe la petición y la redirecciona al objeto indicador
ejecutando el método updateIndicador(), (:23) el objeto indicador accede a la capa
de datos para modificar el indicador luego retorna la confirmación de la acción al
objeto controlFormIndicador, (:24) el objeto controlFormIndicador recibe la
confirmación y la retorna a la interfaz modificar indicador.
150
Diagrama de secuencias para Eliminar indicador
Flujo de eventos Eliminar indicador. (:1) El usuario Administrador accede a la
interfaz de eliminar indicador, (:2) la IU eliminar indicador envía la petición de ejes
presentes en la tabla indicador al objeto ControlFormEje, (:3) el objeto
ControlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje accede a la capa de datos obteniendo el array
de ejes luego lo encapsula en formato JSON y lo retorna al objeto controlFormEje,
(:5) el objeto controlFormEje recibe los datos y los retorna a la interfaz eliminar
indicador, (:6) la interfaz eliminar indicador actualiza el combo eje con los datos
recibidos, (:7) el usuario selecciona el código del eje, (:8) la interfaz eliminar
indicador realiza la petición de las variables del eje seleccionado al objeto
ControlFormVariable, (:9) el objeto ControlFormVariable recibe la petición y la
redirecciona al objeto variable ejecutando el método getVarsDeEje(), (:10) el
objeto variable accede a la capa de datos obteniendo las variables del eje luego
los encapsula en formato JSON y después los retorna al objeto
controlFormVariable, (:11) el objeto ControlFormVariable recibe los datos y los
retorna a la interfaz eliminar indicador, (:12) la interfaz eliminar indicador actualiza
151
el combo variable, (:13) el administrador selecciona el código de la variable, (:14)
la interfaz eliminar indicador realiza la petición del indicador asociado a la variable
al objeto controlFormIndicador, (:15) el objeto controlFormIndicador recibe la
petición y la redirecciona al objeto Indicador ejecutando el método getIndDeVar(),
(:16) el objeto indicador accede a la capa de datos obteniendo los indicadores
asociados a la variable seleccionada por el administrador luego los encapsula en
formato JSON y los retorna al objeto controlFormIndicador, (:17) el objeto
controlFormIndicador recibe los datos y los envía la interfaz eliminar indicador,
(:18) la interfaz actualiza el valor del combo código indicador de acuerdo al dato
recibido, (:19) el usuario selecciona el código indicador luego da clic en el botón
eliminar, (:20) la interfaz valida el formulario, (:21) la interfaz eliminar indicador
realiza la petición de eliminar el indicador al objeto controlFormIndicador, (:22) el
objeto controlFormIndicador recibe la petición y la redirecciona al objeto indicador
ejecutando el método deleteIndicador(), (:23) el objeto indicador accede a la capa
de datos para eliminar el indicador luego retorna la confirmación de la acción al
objeto controlFormIndicador, (:24) el objeto controlFormIndicador recibe la
confirmación y la retorna a la interfaz eliminar indicador.
Diagrama de secuencias para Consultar indicador.
Flujo de eventos Consultar indicador.(:1)El usuario Administrador accede a la
interfaz Consultar indicador, (:2) la interfaz Consultar indicador envía la petición
indicadores al objeto controlFormIndicador, (:3) el objeto controlFormIndicador
recibe la petición y la redirecciona al objeto Indicador ejecutando el método
getIndicadores(), (:4) el objeto Indicador recibe la petición y accede a la capa de
datos para retornar la lista de indicadores encapsulándolos en formato JSON y
retornándolos al objeto controlFormIndicador, (:5) el objeto controlFormIndicador
152
recibe los datos y lo retorna a la interfaz Consultar indicador, (:6) la interfaz
actualiza el datagrid con los datos recibidos.
Diagrama de secuencias para Agregar estudio anual.
Flujo de eventos Agregar estudio anual. (:1) El usuario Administrador accede a
la interfaz de agregar estudio anual, (:2) la IU Agregar estudio anual envía la
petición de ejes presentes en la tabla indicador al objeto ControlFormEje, (:3) el
objeto ControlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando
el método getEjes(), (:4) el objeto Eje accede a la capa de datos obteniendo el
array de ejes luego lo encapsula en formato JSON y lo retorna al objeto
controlFormEje, (:5) el objeto controlFormEje recibe los datos y los retorna a la
interfaz Agregar estudio anual, (:6) la interfaz agregar estudio anual actualiza el
combo eje con los datos recibidos, (:7) el usuario selecciona el código del eje, (:8)
la interfaz agregar estudio anual realiza la petición de las variables del eje
seleccionado al objeto ControlFormVariable, (:9) el objeto ControlFormVariable
153
recibe la petición y la redirecciona al objeto variable ejecutando el método
getVarsDeEje(), (:10) el objeto variable accede a la capa de datos obteniendo las
variables del eje encapsulándolos en formato JSON y retornándolos al objeto
controlFormVariable, (:11) el objeto ControlFormVariable recibe los datos y los
retorna a la interfaz agregar estudio anual, (:12) la interfaz agregar estudio anual
actualiza el combo variable, (:13) el administrador selecciona el código de la
variable, (:14) la interfaz agregar estudio anual realiza la petición del indicador
relacionado a la variable seleccionada por el administrador al objeto
controlFormIndicador, (:15) el objeto controlFormIndicador recibe la petición y la
redirecciona al objeto Indicador ejecutando el método getIndDeVar(), (:16) el
objeto indicador accede a la capa de datos obteniendo los indicadores después los
encapsula en formato JSON y luego los retorna al objeto controlFormIndicador,
(:17) el objeto controlFormIndicador recibe los datos y los envía la interfaz agregar
estudio anual, (:18) la interfaz actualiza el valor del combo código indicador de
acuerdo al dato recibido, (:19) el usuario selecciona el código indicador, (:20) la
interfaz agregar estudio anual realiza la petición de los municipios al objeto
controlFormEstudioAnual, (:21) el objeto controlFormEstudioAnual recibe la
petición y la redirecciona al objeto Estudio anual ejecutando el método
getMunicipios(), (:22) el objeto Estudio Anual accede a la capa de datos
obteniendo los municipios después los encapsula en formato JSON y luego los
retorna
al
objeto
controlFormEstudioAnual,
(:23)
el
objeto
controlFormEstudioAnual recibe los datos y los envía a la interfaz agregar estudio
anual, (:24) la interfaz actualiza el combo municipios, (:25) el administrador
selecciona un municipio, (:26) la interfaz agregar estudio anual realiza la petición
de los años (:dependiendo del eje, la variable, el indicador y el municipio
seleccionado por el administrador, años que no estén en la combinación de estos)
al objeto controlFormEstudioAnual, (:27) el objeto controlFormEstudioAnual recibe
la petición y la redirecciona al objeto Estudio anual ejecutando el método
getAnyos(), (:28) el objeto estudio anual accede a la base de datos obteniendo los
años después los encapsula en formato JSON y luego los retorna al objeto
controlFormEstudioAnual, (:29) el objeto controlFormEstudioAnual recibe los datos
y los envía a la interfaz agregar estudio anual, (:30) la interfaz agregar estudio
anual actualiza el combo años de acuerdo a los datos recibidos, (:31) el
administrador selecciona el año e ingresa la fuente, medida y valor para el nuevo
estudio anual y da clic en el botón agregar, (:32) la interfaz valida el formulario,
(:33) la interfaz agregar estudio anual envía la petición de agregar un nuevo
estudio
anual
al
objeto
controlFormEstudioAnual,
(:34)
el
objeto
controlFormEstudioAnual recibe la petición y la redirecciona al objeto estudio
anual ejecutando el método saveEstudioAnual, (:35) el objeto estudio anual
accede a la capa de datos para agregar el nuevo estudio anual luego retorna la
confirmación de la acción al objeto controlFormEstudioAnual, (:36) el objeto
controlFormEstudioAnual recibe la confirmación y la envía a la interfaz agregar
estudio anual.
154
Diagrama de secuencias para Modificar estudio anual.
Flujo de eventos Agregar eje. (:1) El usuario Administrador accede a la interfaz
de modificar estudio anual, (:2) la IU modificar estudio anual envía la petición de
ejes presentes en la tabla estudio anual al objeto ControlFormEje, (:3) el objeto
ControlFormEje recibe la petición y la redirecciona al objeto Eje ejecutando el
método getEjes(), (:4) el objeto Eje accede a la capa de datos obteniendo el array
de ejes luego lo encapsula en formato JSON y lo retorna al objeto controlFormEje,
(:5) el objeto controlFormEje recibe los datos y los retorna a la interfaz modificar
estudio anual, (:6) la interfaz modificar estudio anual actualiza el combo eje con los
datos recibidos, (:7) el usuario selecciona el código del eje, (:8) la interfaz
modificar estudio anual realiza la petición de las variables del eje seleccionado al
objeto ControlFormVariable, (:9) el objeto ControlFormVariable recibe la petición y
la redirecciona al objeto variable ejecutando el método getVarsDeEje(), (:10) el
objeto variable accede a la capa de datos obteniendo las variables del eje
encapsulándolos en formato JSON y retornándolos al objeto controlFormVariable,
(:11) el objeto ControlFormVariable recibe los datos y los retorna a la interfaz
modificar estudio anual, (:12) la interfaz modificar estudio anual actualiza el combo
variable, (:13) el administrador selecciona el código de la variable, (:14) la interfaz
agregar estudio anual realiza la petición del indicador relacionado a la variable
seleccionada por el administrador al objeto controlFormIndicador, (:15) el objeto
controlFormIndicador recibe la petición y la redirecciona al objeto Indicador
155
ejecutando el método getIndDeVar(), (:16) el objeto indicador accede a la capa de
datos obteniendo los indicadores después los encapsula en formato JSON y luego
los retorna al objeto controlFormIndicador, (:17) el objeto controlFormIndicador
recibe los datos y los envía la interfaz modificar estudio anual, (:18) la interfaz
actualiza el valor del combo código indicador de acuerdo al dato recibido, (:19) el
usuario selecciona el código indicador, (:20) la interfaz modificar estudio anual
realiza la petición de los municipios al objeto controlFormEstudioAnual, (:21) el
objeto controlFormEstudioAnual recibe la petición y la redirecciona al objeto
Estudio anual ejecutando el método getMunicipios(), (:22) el objeto Estudio Anual
accede a la capa de datos obteniendo los municipios después los encapsula en
formato JSON y luego los retorna al objeto controlFormEstudioAnual, (:23) el
objeto controlFormEstudioAnual recibe los datos y los envía a la interfaz modificar
estudio anual, (:24) la interfaz actualiza el combo municipios, (:25) el administrador
selecciona un municipio, (:26) la interfaz modificar estudio anual realiza la petición
de los años dependiendo del eje, variable, indicador y municipio previamente
seleccionado por el administrador al objeto controlFormEstudioAnual, (:27) el
objeto controlFormEstudioAnual recibe la petición y la redirecciona al objeto
Estudio anual ejecutando el método getAnyosEst(), (:28) el objeto estudio anual
accede a la base de datos obteniendo los años después los encapsula en formato
JSON y luego los retorna al objeto controlFormEstudioAnual, (:29) el objeto
controlFormEstudioAnual recibe los datos y los envía a la interfaz modificar
estudio anual, (:30) la interfaz modificar estudio anual actualiza el combo años de
acuerdo a los datos recibidos, (:31) el administrador selecciona el año e ingresa el
nuevo valor para el estudio anual y da clic en el botón modificar, (:32) la interfaz
valida el formulario, (:33) la interfaz modificar estudio anual envía la petición de
modificar el valor del estudio anual al objeto controlFormEstudioAnual, (:34) el
objeto controlFormEstudioAnual recibe la petición y la redirecciona al objeto
estudio anual ejecutando el método updateEstudioAnual, (:35) el objeto estudio
anual accede a la capa de datos para modificar el nuevo estudio anual luego
retorna la confirmación de la acción al objeto controlFormEstudioAnual, (:36) el
objeto controlFormEstudioAnual recibe la confirmación y la envía a la interfaz
modificar estudio anual.
156
Diagrama de secuencias para Eliminar estudio anual.
Flujo de eventos Eliminar estudio anual.
(:1) El usuario Administrador accede a la interfaz eliminar estudio anual, (:2) la IU
eliminar estudio anual envía la petición de ejes presentes en la tabla estudio anual
157
al objeto ControlFormEje, (:3) el objeto ControlFormEje recibe la petición y la
redirecciona al objeto Eje ejecutando el método getEjes(), (:4) el objeto Eje accede
a la capa de datos obteniendo el array de ejes luego lo encapsula en formato
JSON y lo retorna al objeto controlFormEje, (:5) el objeto controlFormEje recibe los
datos y los retorna a la interfaz eliminar estudio anual, (:6) la interfaz eliminar
estudio anual actualiza el combo eje con los datos recibidos, (:7) el usuario
selecciona el código del eje, (:8) la interfaz eliminar estudio anual realiza la
petición de las variables del eje seleccionado al objeto ControlFormVariable, (:9) el
objeto ControlFormVariable recibe la petición y la redirecciona al objeto variable
ejecutando el método getVarsDeEje(), (:10) el objeto variable accede a la capa de
datos obteniendo las variables del eje encapsulándolos en formato JSON y
retornándolos al objeto controlFormVariable, (:11) el objeto ControlFormVariable
recibe los datos y los retorna a la interfaz eliminar estudio anual, (:12) la interfaz
eliminar estudio anual actualiza el combo variable, (:13) el administrador
selecciona el código de la variable, (:14) la interfaz agregar estudio anual realiza la
petición del indicador relacionado a la variable seleccionada por el administrador al
objeto controlFormIndicador, (:15) el objeto controlFormIndicador recibe la petición
y la redirecciona al objeto Indicador ejecutando el método getIndDeVar(), (:16) el
objeto indicador accede a la capa de datos obteniendo los indicadores después los
encapsula en formato JSON y luego los retorna al objeto controlFormIndicador,
(:17) el objeto controlFormIndicador recibe los datos y los envía la interfaz eliminar
estudio anual, (:18) la interfaz actualiza el valor del combo código indicador de
acuerdo al dato recibido, (:19) el usuario selecciona el código indicador, (:20) la
interfaz eliminar estudio anual realiza la petición de los municipios al objeto
controlFormEstudioAnual, (:21) el objeto controlFormEstudioAnual recibe la
petición y la redirecciona al objeto Estudio anual ejecutando el método
getMunicipios(), (:22) el objeto Estudio Anual accede a la capa de datos
obteniendo los municipios después los encapsula en formato JSON y luego los
retorna
al
objeto
controlFormEstudioAnual,
(:23)
el
objeto
controlFormEstudioAnual recibe los datos y los envía a la interfaz modificar
estudio anual, (:24) la interfaz actualiza el combo municipios, (:25) el administrador
selecciona un municipio, (:26) la interfaz eliminar estudio anual realiza la petición
de los años dependiendo del eje, variable, indicador y municipio previamente
seleccionado por el administrador al objeto controlFormEstudioAnual, (:27) el
objeto controlFormEstudioAnual recibe la petición y la redirecciona al objeto
Estudio anual ejecutando el método getAnyosEst(), (:28) el objeto estudio anual
accede a la base de datos obteniendo los años después los encapsula en formato
JSON y luego los retorna al objeto controlFormEstudioAnual, (:29) el objeto
controlFormEstudioAnual recibe los datos y los envía a la interfaz eliminar estudio
anual, (:30) la interfaz eliminar estudio anual actualiza el combo años de acuerdo a
los datos recibidos, (:31) el administrador selecciona el año y da clic en el botón
eliminar, (:32) la interfaz valida el formulario, (:33) la interfaz eliminar estudio anual
envía la petición de eliminar el estudio anual al objeto controlFormEstudioAnual,
(:34) el objeto controlFormEstudioAnual recibe la petición y la redirecciona al
objeto estudio anual ejecutando el método deleteEstudioAnual, (:35) el objeto
158
estudio anual accede a la capa de datos para eliminar el estudio anual luego
retorna la confirmación de la acción al objeto controlFormEstudioAnual, (:36) el
objeto controlFormEstudioAnual recibe la confirmación y la envía a la interfaz
eliminar estudio anual.
Diagrama de secuencias para Consultar estudio anual.
Flujo de eventos Consultar estudio anual. (:1) El usuario Administrador accede
a la interfaz Consultar estudio anual, (:2) la interfaz Consultar estudio anual envía
la petición estudios anuales al objeto controlFormEstudioAnual, (:3) el objeto
controlFormEstudioAnual recibe la petición y la redirecciona al objeto estudio
anual ejecutando el método getEstudioAnuales(), (:4) el objeto estudio anual
recibe la petición y accede a la capa de datos para retornar la lista de estudios
anuales luego los encapsula en formato JSON y después los retorna al objeto
controlFormEstudioAnual, (:5) el objeto controlFormEstudioAnual recibe los datos
y lo retorna a la interfaz Consultar estudio anual, (:6) la interfaz actualiza el
datagrid con los datos recibidos.
Esquema navegacional: Para el diseño navegacional no se siguió una
metodología, más bien se procuro mantener la simplicidad en la navegación,
proporcionando una interfaz intuitiva y fácil de utilizar. El siguiente diagrama ilustra
de forma básica el esquema de acceso a las diferentes interfaces.
159
Esquema navegacional.
Vista de despliegue.
Diagrama de despliegue: Los diagramas de despliegue representan los nodos y
sus relaciones. Típicamente, los nodos son conectados por asociaciones de
comunicación tales como enlaces de red, conexiones TCP/IP, microondas, etc.
160
Diagrama de despliegue.
161
Anexo B. Fase IV desarrollo
Codificación. Durante la fase de desarrollo, se decido aplicar un conjunto
específico de tecnologías, esta selección se hizo atendiendo a criterios como
facilidad de aprendizaje, interoperabilidad con otros sistemas, escalabilidad,
rendimiento y tipo de licenciamiento. En la tabla 26 se hace una descripción del
software aplicado.
Software utilizado.
Artefacto Versión
Licencia
ka-map
LGPL
1.0
Descripción
Framework en javascript y PHP/mapscript,
provee de un entorno de trabajo para la
visualización de los mapas generados.
Librería en javascript, utilizada en las
GNU GPL interfaces de usuario, para capturar y
3.0
mostrar información, proporciona un entorno
de trabajo seguro y compatibilidad con
navegadores.
Ext-js
2.1
ADOdb
5.06
BSD and
LGPL
Tcpdf
4.6
GNU GPL
Librería escrita en PHP utilizada para la
2.1
generación de reportes en formato PDF.
Jpgraph
1.09
QPL
Librería escrita en PHP, proporciona
funciones de estandarización de base de
datos
Librería escrita en PHP para la generación
de diagramas
En esta fase se materializa el trabajo iniciado en la fase de planificación, a
continuación se da una vista de alto nivel sobre el funcionamiento de la parte
principal de la aplicación, la cual tiene como tarea construir y desplegar los mapas
creados por el usuario.
162
La figura muestra el funcionamiento de WebGIS VI; todos los datos temáticos son
filtrados y mostrados al usuario mediante una interfaz grafica de usuario, la cual
muestra varias listas desplegables con la información correspondiente a los ejes,
variables e indicadores y el año en que ocurre, además de esto, el usuario
selecciona los diferentes parámetros de configuración como esquema de color,
tipo de mapa y capa base, una vez se obtienen estos datos, el sistema crea un
objeto de la clase mapaTematico el cual mediante el método getMapfile() genera
un archivo mapfile .map que es guardado como temporal y que retorna una URL al
navegador de cartografía ka-Map. Una vez se ha construido el mapfile que
contiene todos los parámetros del mapa, todos los objetos (imagen del mapa,
leyenda y escala) en el mapfile son generados por MapServer, ka-Map fragmenta
la imagen del mapa en mosaicos y las despliega en la parte cliente (navegador
web).
Cómo funciona WebGIS VI.
Comunicación entre el Cliente y el Servidor. AJAX (Asynchronous JavaScript
And XML) es un importante y poderoso modelo de desarrollo de aplicaciones Web
interactivas. Particularmente brinda muchas facilidades para el desarrollo de
aplicaciones SIG en internet. Para la implementación de WebGIS se aplico el
modelo AJAX; que posibilita actualizar el contenido de una página Web, de forma
inmediata, sin tener que recargar la página completa, que de otro modo aplicando
solo tecnología del lado del servidor, por cada acción que el usuario efectué debe
esperar que se cargue una nueva página vía HTTP para obtener un resultado,
163
generando largas esperas y congestión en la red. Gracias a AJAX WebGIS VI
vence el esquema “solicitud-respuesta”. Logrando una mayor interactividad, una
mejor respuesta y se estrechando el vínculo “cliente-aplicación”.
Comunicación entre el cliente y el servidor.
El flujo de comunicación en la aplicación es bastante básico y se describe a
continuación:
•
(1) Una vez se ha cargado completamente la interfaz web, se lanza
automáticamente una petición AJAX por parte del navegador web, esta petición
es contestada con una lista que contiene todos los ejes de investigación que
tienen estadísticas, de modo tal que cada vez que se selecciona un eje
temático se lanza la petición y esta carga una lista de variables a su vez una
lista de indicadores y por ultimo una lista con años para ese indicador.
•
(2) aquí el usuario ya selecciono las estadísticas y otros parámetros tales
como: tipo de mapa, numero de clases o numero de series y el esquema de
color, el usuario pide crear un nuevo mapa, entonces se genera un archivo
mapfile para generar el mapa, la escala el mapa de referencia y otros
elementos que se desplegaran en la interfaz del mapa.
164
•
(3) una vez que el sistema crea el mapa carga la interfaz de navegación de
mapa (ka-Map) con el mapa creado y permitirá realizar consultas y
operaciones básicas sobre el mapa (zoom, identify, query).
Infraestructura de WebGIS VI.
Acceso a datos. Para el acceso a datos se utilizo la librería ADOdb para PHP, ya
que las funciones de acceso a base de datos en PHP no están estandarizadas,
esta librería esconde las diferencias entre cada API de base de datos para que se
pueda cambiar fácilmente de software de base de datos.
Perfiles de conexión. El acceso a la base de datos se realiza con dos perfiles de
acceso, un perfil que concede privilegios de acceso a los administradores, y otro
perfil para los usuarios visitantes. El cuadro muestra uno de los perfiles de
conexión.
165
<?php
/****************************************************************
Configura los parámetros de conexión para el perfil Visitante
*****************************************************************/
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_PORT', '5432');
DEFINE ('DB_NAME', 'basededatos');
DEFINE ('DB_USER', 'usuario');
DEFINE ('DB_PASSWORD', 'usuario');
DEFINE ('DSN', 'postgres://'.DB_USER.':'.DB_PASSWORD."@".DB_HOST."/".DB_NAME);
?>
Clase dataConnector. Esta clase ofrece métodos para conectarse y acceder a la
base de datos, para obtener los temas de investigación (ejes), las variables,
indicadores y los años para las estadísticas. Esta clase contiene 7 métodos:
•
getAnyosChart($ejeID, $varID, $indID): este método obtiene una lista de
años para un indicador para mapa tipo chart.
•
getAnyosDeInd($ejeID, $varID, $indID): este método obtiene una lista de
años para un indicador para un mapa tipo coropleta.
•
getDataStore($ejeID, $varID, $indID, $anyo): obtiene un array multimensional
con los datos para el mapa temático y el conjunto de valores.
•
getDataStoreChart($ejeID, $varID, $indID, $anyo): obtiene datos de la base
de datos y los transforma en un array multimensional con los datos para el
mapa temático y el conjunto de valores, este método se aplica cuando el
usuario crea un mapa diagrama (chart).
•
getEjes(): recupera de la base de datos los ejes tema de investigación que
tienen datos relacionados.
•
getIndDeVar($ejeID, $varID):obtiene una lista de indicadores vinculados a una
variable de un eje temático.
•
getVarsDeEje($ejeID): obtiene una lista de variables vinculadas e un eje de
investigación.
166
Instanciación de un objeto de la clase dataConnector.
//construir el conector a la BD
$dataConnector
= new dataConnector();
$dataStore
= $dataConnector->getDataStore( $ejeID, $varID, $indID, $anyo);
Clase mapaTematico. Los datos en la base datos de indicadores obtenidos por
los métodos de la clase dataConnector son encapsulados y pasados a la clase
mapaTematico junto con otros parámetros de entrada. Una vez que se solicita la
creación del mapa, la clase mapaTematico elabora un archivo mapfile, para ello
hay un archivo mapfile base ya definido de modo que este se carga y se modifica
con PHP/MapScript en tiempo de ejecución como se muestra en el cuadro a
continuación.
$jMap = ms_newMapObj(W G_MAPFILE_BASE_PATH);
La clase mapaTematico está conformada por los métodos:
•
colores($n): calcula la gama de colores para los intervalos de datos.
•
generarClasses(): haya los intervalos de datos dependiendo del método de
clasificación.
•
getJenksBreaks($list, $numclass): obtiene los intervalos de datos aplicando
el método de jenks-caspall
•
getMapfile(): carga el mapfile base y le agrega una nueva capa produciendo
un nuevo mapfile.
El archivo mapfile es un archivo de texto plano, que tiene una estructura jerárquica
de objetos como muestra la figura 81, en la cual el objeto map se encuentra en la
parte superior, el objeto map contiene ítems simples y estructurados, los simples
consisten de pares: clave, valor. Los ítems estructurados contienen a su vez otros
ítems simples o estructurados. El mapfile define como se dibujara el mapa, que
167
capas de datos, la ubicación de los datos entre otros.
Estructura jerárquica del mapfile
Proceso de carga del mapa
Para elaborar los mapfiles la clase mapaTematico carga un archivo mapfile base
el cual tiene la configuración primaria que se cargara en todos los mapfiles que se
producirán. Ya cargado el mapfile y dependiendo del tipo de mapa a producir, se
crea una nueva capa que contendrá la representación grafica de los datos. El
script que se muestra a continuación pertenece al mapfile base.
168
Mapfile base
MAP
NAME "mapfile"
# configura el nombre por defecto del mapa
# Map image size
SIZE 600 600
# Configura el tamaño de la imagen que sera dibujada
UNITS METERS
# Configura la unidad de medida , METERS, DD.
EXTENT 944523.403930 1227601.703840 1332524.846070 1534431.296160
PROJECTION
'proj=longlat'
'ellps=WGS84'
'datum=WGS84'
'no_defs'
END
FONTSET "../../data/fonts/fonts.txt"
IMAGECOLOR 242 239 233
IMAGEQUALITY 99
IMAGETYPE gif
REFERENCE
IMAGE refmap2.png
EXTENT 944523.403930 1227601.703840 1332524.846070 1534431.296160
STATUS ON
COLOR -1 -1 -1
OUTLINECOLOR 255 0 0
SIZE 223 213
END
OUTPUTFORMAT
NAME png
DRIVER "GD/PNG"
MIMETYPE "image/png"
IMAGEMODE PC256
EXTENSION "png"
END
LEGEND
STATUS ON
KEYSIZE 18 12
LABEL
TYPE BITMAP
SIZE MEDIUM
COLOR 0 0 89
END
END
WEB
IMAGEPATH 'c:/ms4w/tmp/ms_tmp'
IMAGEURL '/ms_tmp/'
METADATA
'max_extents' 'auto'
'version' '1'
'wms_title' 'Mapas ORDICOP'
'wms_onlineresource' 'http://my.host.com/cgi-bin/mapserv?map=wms.map&'
'wms_rs' 'EPSG:4326'
END
END
SCALEBAR
IMAGECOLOR 255 255 255
LABEL
COLOR 0 0 0
SIZE SMALL
END
SIZE 350 4
COLOR 255 255 255
BACKGROUNDCOLOR 0 0 0
OUTLINECOLOR 0 0 0
UNITS KILOMETERS
INTERVALS 5
STATUS ON
END
END# fin de MAP
169
Una vez se ha cargado el mapfile base, la clase mapaTematico procesa los
parámetros y determina a partir de estos el tipo de mapa que solicito el usuario y
la configuración de ese mapa.
En el caso de ser un mapa de tipo coropleta el siguiente código producirá una
capa de tipo “polygon” que contiene los datos temáticos representados en
coropletas (intervalos de datos), agregando esa capa al mapa.
$geoSQL="the_geom from
(SELECT GE.gid, GE.the_geom, GE.nom_muni, GE.cod_munici, GE.presencia, EA.medida_ind, EA.valor
FROM geo_municipio GE RIGHT JOIN estudio_anual EA ON GE.gid=EA.municipio
WHERE EA.cod_eje=$this->ejeID AND EA.cod_var=$this->varID
AND EA.cod_ind=$this->indID AND EA.anyo= $this->anyo
ORDER BY EA.valor)
as myQuery using srid=-1 using unique gid";
$this->generarClasses(); //invocar el metodo generador de los puntos de corte
$this->colores($this->numClases);
$jLayer = ms_newLayerObj($jMap); // definicion del objeto layer
$jLayer->set( "name", "$this->descMapa"." para "."$this->anyo");
$jLayer->set( "type", MS_LAYER_POLYGON); //establecer el tipo de geometria para la capa
$jLayer->set( "status", MS_ON);//establecer el status de la capa
$jLayer->set( "connectiontype",MS_POSTGIS);//especificar connectiontype
$jLayer->set( "connection",$perfilAcceso);
$jLayer->set( "data",$geoSQL);
$jLayer->set("labelitem", "nom_muni");
$jLayer->set( "group","$this->descMapa"." para "."$this->anyo");
$jLayer->setMetaData("DESCRIPTION","$this->descMapa");
$jLayer->setMetaData("RESULT_FIELDS","cod_munici nom_muni medida_ind valor");
$jLayer->setMetaData("QUERYABLE","true");
$jLayer->setMetaData("fields","cod_munici:Codigo nom_muni:Municipio medida_ind:Medida_indicador
valor:Valor_Indicador");
$jLayer->setMetaData("searchfield","nom_muni");
$jLayer->setMetaData("tile_source", "auto");
for($i=0;$i< $this->numClases; $i++){
$jClass = ms_newClassObj($jLayer);//definir expression y el rango de valores
$inferior = $this->classBreaks[$i]['limInferior'];
$superior = $this->classBreaks[$i]['limSuperior'];
$jClass->set(name, "$inferior : $superior");
$jClass->label->color->setRGB(0,0,0);
$jClass->label->set("font", WG_FONT_STYLE);
$jClass->label->set("type", MS_TRUETYPE);
$jClass->label->set("position", MS_CC);
$jClass->label->set("partials", MS_TRUE);
$jClass->label->set("size", WG_FONT_SIZE-1);
$jClass->label->set("buffer", 1);
$jClass->label->outlinecolor->setRGB(255,255,255);
$jClass->set("template","ttt_query.html");
$jClass->setExpression("(([valor]>= $inferior ) AND ([valor] <= $superior))");
$jStyle = ms_newStyleObj($jClass);//definir el esquema de colores
$jStyle->color->setRGB($this->classColors[$i][0], $this->classColors[$i][1], $this>classColors[$i][2]);
$jStyle->outlinecolor->setRGB(170, 170, 127);
170
El script mostrado en el recuadro representa una capa temática para coropletas
con intervalos de datos, nótese que aquí los intervalos se representan dentro del
objeto CLASS mediante el uso de “EXPRESSION”.
LAY ER
C O N N E C T IO N "u ser= wgis_visitante pa ssw ord= tester d bnam e= indicadores host= localhost"
C O N N E C T IO N T Y PE P O ST G IS
D AT A "the_geom from (SEL EC T G E.gid, G E .the_geom , G E.nom _m un i, G E .cod_m u nici, G E .presencia,
EA .m edida_in d, E A .valor
FR O M geo_ m unicipio G E R IG H T JO IN estudio_anual E A O N G E.gid= E A .m u nicipio
W H ER E E A .cod_eje=1 AN D E A.cod_ var= 3 A N D E A .cod_ind= 1
AN D E A.a nyo= 2008 O R D ER BY E A .valor)
as m yQ uery u sing srid= -1 using u nique gid"
G R O U P "D espla za m iento F orzado para 20 08"
L AB ELIT EM "nom _m u ni"
M ET AD AT A
"D E SC R IPT IO N "
"D espla za m iento F orzado "
"tile_source"
"auto"
"Q UE R Y AB L E"
"true"
"R ES ULT _FIELD S " "cod_m u nici nom _m uni m edida_ ind valor"
"searchfield "
"nom _m u ni"
"fields" "cod_m u nici:C odigo nom _ m uni:M unicipio m edida_ind:M edida_indica dor valor:Valor_Indicador"
EN D
N AM E "D espla za m iento F orzado para 2008"
ST AT U S O N
T Y PE PO LY G O N
UN IT S M ET ER S
C L A SS
N A M E "0 : 11 5"
E XP R ES SIO N (([va lor]> = 0 ) AN D ([valor] < = 115 ))
L AB E L
FO N T "sans"
SIZE 6
T Y PE T R UET Y P E
EN D
ST Y LE
C O LO R 2 55 255 153
O UT LIN EC O LO R 170 17 0 127
SY M B O L 0
EN D
EN D
EN D
Por otro parte si se detecta que el usuario solicito un mapa de tipo mapadiagrama, el siguiente script generara una capa de tipo chart, esta capa
representa un mapa de tipo mapa-diagrama y relaciona a cada entidad geográfica
un diagrama con un numero n de series mayor a uno.
171
$jLayer = ms_newLayerObj($jMap); // definicion del objeto layer
$jLayer->set( "name", "$this->descMapa");
$jLayer->set( "type", MS_LAYER_CHART); //establecer el tipo de geometria para la capa
$jLayer->set( "status", MS_ON);//establecer el status de la capa
$jLayer->set( "connectiontype",MS_POSTGIS);//especificar connectiontype
$jLayer->set( "connection",$perfilAcceso);
$Valores = array_values($this->dataStore['datos']);
$n=count($Valores);
$key=array_search($this->anyo,$Valores);
for($i=$key;$i<($this->numSeries+$key) and $i< $n;$i++){
$anyosChart[]=$Valores[$i];
}
$n =count($anyosChart);
for($i=0;$i<$n;$i++){
$SQL.=", sum(case EA.anyo when '$anyosChart[$i]' then EA.valor else 0 end) as anyo".$anyosChart[$i];
}
$geoSQL="the_geom from (
select G.the_geom,G.gid,G.nom_muni".$SQL."
from estudio_anual EA left join geo_municipio G ON (EA.municipio = G.gid)
where EA.cod_eje=$this->ejeID and EA.cod_var=$this->varID
and EA.cod_ind=$this->indID AND EA.anyo between ".min($anyosChart)."
AND ".max($anyosChart)."
group by G.the_geom,G.gid,G.nom_muni)
as myQuery using srid=-1 using unique gid";
$jLayer->set( "data",$geoSQL);
$jLayer->set( "group","$this->descMapa"." desde "."$this->anyo");
$jLayer->setMetaData("DESCRIPTION","$this->descMapa");
$jLayer->setMetaData("RESULT_FIELDS","nom_muni");
$jLayer->setMetaData("queryable","true");
$jLayer->setMetaData("fields","cod_munici:Codigo");
$jLayer->setMetaData("searchfield","nom_muni");
$jLayer->setMetaData("tile_source", "auto");
$jLayer->setMetaData("opacity", 65);
$jLayer->set("template","ttt_query.html");
if($this->tipoChart=='torta'){$processing="CHART_TYPE=pie";}
else $processing="CHART_TYPE=bar";
$jLayer->setprocessing($processing);
$jLayer->setprocessing("CHART_SIZE=30");
for($i=0;$i< $n; $i++){
$jClass = ms_newClassObj($jLayer);
$jClass->set(name, "Año "."$anyosChart[$i]");
$jStyle = ms_newStyleObj($jClass);//definir el esquema de colores
$jStyle->setbinding(SIZE, "anyo"."$anyosChart[$i]");
if($i==0)$jStyle->color->setRGB(255, 0, 0);//rojo
elseif($i==1)$jStyle->color->setRGB(0, 255, 0);//verde
elseif($i==2)$jStyle->color->setRGB(0, 0, 255);//azul
elseif($i==3)$jStyle->color->setRGB(255, 200, 0);//naranja
elseif($i==4)$jStyle->color->setRGB(255, 0, 255);
Otra capa de datos temáticos representada por la aplicación es la capa de tipo
chart generada por la clase mapaTematico, para esto se producen dos capas, la
capa de fondo tipo “polygon” que contiene las entidades geográficas y la capa
chart propiamente dicha. El cuadro ilustra la anatomía de una capa chart generada
por la clase mapaTematico.
172
LAYER
CONNECTION "user=wgis_visitante password=tester dbname=indicadores host=localhost"
CONNECTIONTYPE POSTGIS
DATA "the_geom from (
select G.the_geom,G.gid,G.nom_muni,
sum(case EA.anyo when '2007' then EA.valor else 0 end) as anyo2007, sum(case
EA.anyo when '2008' then EA.valor else 0 end) as anyo2008
from estudio_anual EA left join geo_municipio G ON (EA.municipio = G.gid)
where EA.cod_eje=1 and EA.cod_var=3 and EA.cod_ind=1
AND EA.anyo between 2007 AND 2008
group by G.the_geom,G.gid,G.nom_muni)
as myQuery using srid=-1 using unique gid"
GROUP "Desplazamiento Forzado desde 2007"
METADATA
"DESCRIPTION" "Desplazamiento Forzado "
"opacity" "65"
"tile_source"
"auto"
"queryable"
"true"
"RESULT_FIELDS" "nom_muni"
"searchfield"
"nom_muni"
"fields" "cod_munici:Codigo"
END
NAME "Desplazamiento Forzado "
PROCESSING "CHART_TYPE=pie"
PROCESSING "CHART_SIZE=30"
STATUS ON
TEMPLATE "ttt_query.html"
TYPE CHART
UNITS METERS
CLASS
NAME "Año 2007"
STYLE
ANGLE 360
COLOR 255 0 0
OPACITY 100
SIZE [anyo2007]
SYMBOL 0
END
END
CLASS
NAME "Año 2008"
STYLE
ANGLE 360
COLOR 0 255 0
OPACITY 100
SIZE [anyo2008]
SYMBOL 0
END
END
END
Bloque de código que genera un nuevo mapfile que contiene la capa con los datos
temáticos (coropleta, mapa-diagrama) el mapfile se guarda en disco y se transfiere
su ubicación
173
$mapFile = "mapf_".time()."_".mt_rand(1,1000).".map";
$mapFilePath=WG_PATH_MAPFILE_GEN.$mapFile;
$errorCode="{success: false, errors: { reason: 'No se pudo
crear mapa..' }}";
if($jMap->save($mapFilePath)==-1) return $errorCode;
else return $mapFilePath;
Desplegando el mapa. Esta parte de la aplicación en el archivo controlFormMapa
instancia un objeto de la clase mapaTematico y le transfiere los datos obtenidos
por la clase dataStore en un array multidimensional llamado $dataStore, y un array
que contiene los parámetros de configuración del mapa. Posteriormente se invoca
el método getMapfile que construye el mapfile y pasa la ubicación de este en el
disco duro, con esta ubicación y otros parámetros como: el nombre de la cache en
disco del mapa, las escalas visibles y el formato del la imagen del mapa, se
produce un array que es almacenado en una variable de sesión que es accedida
por ka-map para crear la cache y construir todos los elementos del mapa. El
fragmento de código a continuación ilustra el proceso.
$map = new mapaTematico($dataStore,$paramArray); /*nuevo mapa*/
$MapfilePath = $map->getMapfile();
if (!file_exists($MapfilePath)) {
echo "{success: false}";
}
else {
$thisTitle= $map->tituloMapa." ".$map->anyo;
$semilla = 'UFPS0123456789';
$szMap= str_shuffle($semilla);
$_SESSION['ArrayConfig'][$szMap]= array(
'title'
=> $thisTitle,
'path'
=> $MapfilePath,
'scales'=> array( 1200000, 900000,500000 ),
'format'=> 'PNG'
);
$_SESSION['szMap']= $szMap;
echo "{success: true}";
}
174
Anexo C. Fase V pruebas
El objetivo de esta fase es detectar y depurar los errores en el software. Para
lograr esto, se establece un plan y conforme a este se realizan una serie de pasos,
en el caso de XP se realizan; pruebas de unidad y pruebas de aceptación, aparte
de las de integración y del sistema. Las pruebas de unidad y de integración se
centran en la verificación funcional de cada módulo y en la incorporación de los
módulos en una estructura de programa. La prueba del sistema valida el software
una vez que se ha incorporado en un sistema superior.
Pruebas de unidad. Los test unitarios ayudan a la refactorización, ya que
asegurarán que los cambios que se hayan introducido en la iteración actual no
afecten a la funcionalidad.
Una prueba unitaria es una forma de probar el correcto funcionamiento de un
módulo de código. Esto sirve para asegurar que cada uno de los módulos funcione
correctamente por separado.
Para que una prueba unitaria sea buena se deben cumplir los siguientes
requisitos:
•
Automatizable: no debería requerirse una intervención manual. Esto es
especialmente útil para integración continúa.
•
Completas: deben cubrir la mayor cantidad de código.
•
Repetibles o Reutilizables: no se deben crear pruebas que sólo puedan ser
ejecutadas una sola vez. También es útil para integración continua.
•
Independientes: la ejecución de una prueba no debe afectar a la ejecución de
otra.
•
Profesionales: las pruebas deben ser consideradas igual que el código, con la
175
misma profesionalidad, documentación, etc.
Aunque estos requisitos no tienen que ser cumplidos al pie de la letra, se
recomienda seguirlos o de lo contrario las pruebas pierden parte de su función. Es
importante darse cuenta de que las pruebas unitarias no descubrirán todos los
errores del código. Por definición, sólo prueban las unidades por sí solas. Por lo
tanto, no descubrirán errores de integración, problemas de rendimiento y otros
problemas que afectan a todo el sistema en su conjunto. Además, puede no ser
trivial anticipar todos los casos especiales de entradas que puede recibir en
realidad la unidad de programa bajo estudio.
Para la ejecución de las pruebas de unidad se aplico el framework SimpleTest el
cual ofrece múltiples test para someter a prueba a las clases, con el objetivo de
verificar el buen funcionamiento de cada uno de los métodos desarrollados.
SimpleTest es un entorno para realizar pruebas de unidad para código
desarrollado en PHP, por lo que no se hace necesario aprender un nuevo lenguaje
para realizar las pruebas, además desarrolla una interfaz similar a Junit por lo que
se hace más familiar su uso.
En SimpleTest los test unitarios son escritos como extensiones de las clases base
de prueba cada uno ampliado con métodos que en realidad contienen el código de
prueba. Cada prueba está escrita para invocar diversas afirmaciones que el
desarrollador espera, como assertEqual() si el resultado es correcto indica que el
método está retornando el resultado que el desarrollador espera es decir el
método utilizado para la prueba está funcionando correctamente. Para el
desarrollo de las pruebas de unidad…véase el numeral 6.3.4…
Pruebas de aceptación. El objetivo de las pruebas de aceptación es validar que
un sistema cumple con el funcionamiento esperado y permitir al usuario de dicho
sistema que determine su aceptación, desde el punto de vista de su funcionalidad
y rendimiento. Las pruebas de aceptación son definidas por el usuario del sistema
y preparadas por el equipo de desarrollo, aunque la ejecución y aprobación final
corresponden al usuario.
La validación del sistema se consigue mediante la realización de pruebas de caja
negra que demuestran la conformidad con los requisitos y que se recogen en el
plan de pruebas, el cual define las verificaciones a realizar y los casos de prueba
asociados. Dicho plan está diseñado para asegurar que se satisfacen todos los
176
requisitos funcionales especificados por el usuario teniendo en cuenta también los
requisitos no funcionales relacionados con el rendimiento, seguridad de acceso al
sistema, a los datos y procesos, así como a los distintos recursos del sistema.
177

Documentos relacionados