Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Herramienta para La Generacion de Estilo
Herramienta para La Generacion de Estilo
Director de tesis:
Dr. Juan Gabriel González Serna
Co-Director de tesis:
Dr. Joaquín Pérez Ortega
Jurado:
Dr. René Santaolaya Salgado – Presidente
M.C. Andrea Magadán Salazar – Secretario
M.C. Humberto Hernández García – Vocal
Dr. Juan Gabriel González Serna – Vocal Suplente
A papá Dios:
Por su amor, por guiarme en el camino del bien,
poner a las personas adecuadas en mí camino y
darme fortaleza en todo momento. Sin duda me has
dado más de lo que merezco.
A mi madre Obdulia Alba Flores:
Por su amor, consejos y palabras de aliento. Por
respetar mis decisiones y ser quien nunca desistió en
que toda la familia saliera adelante a pesar de las
adversidades. Este trabajo es suyo madre. La quiero
mucho mamita chula.
A mi padre Juan García López (f):
Por el ejemplo académico que me brindó y sus
consejos de nunca dejar de seguir preparándome. Con
cariño le dedico este trabajo padre.
A mis hermanos Juan Adolfo, Oscar Sergio, José
Guadalupe, Alejandro, Arturo y Denis de Jesús: Por
creer en mí. Por estar cada uno a su manera
respaldándome económica y moralmente para lograr
mis objetivos. Gracias por sus consejos y momentos
agradables. Este trabajo se los dedico con mucho
cariño hermanitos chulos.
A mis cuñadas y amigas Rocío Navarro, Elizabeth
Montaño y Johana Silva:
Por su amistad, consejos y apoyo. Gracias cuñaditas
por los buenos momentos.
A mis sobrinos Moisés Adolfo, Diego David, Juan
Arón y Joselín:
Por traer alegría a la familia con sus ocurrencias y
travesuras. Porque con sus sonrisas cultivaron mi
alegría dándome motivos de seguir adelante. Los
amo.
A mi novio Jesús Fidel Borjas Díaz:
Por los cuidados, enseñanzas y gran paciencia
recibida de manera incondicional estos dos años. Por
su amor y respeto a mis decisiones. Por hacerme reír
a pesar de las circunstancias. Sin tu apoyo no lo
hubiera logrado “pacharrito”. Te amo.
AGRADECIMIENTOS
Este trabajo de investigación no hubiera sido posible realizarlo sin el apoyo del Consejo
Nacional de Ciencia y Tecnología (CONACYT), ya que la beca que me otorgó estos dos años
fue el sustento económico para poder solventar mis estudios de maestría. También quiero
agradecer al Centro Nacional de Investigación y Desarrollo Tecnológico (CENIDET) por la
oportunidad que me brindaron de realizar mis estudios de posgrado en sus instalaciones.
En estos dos años de investigación fueron muchas las personas que contribuyeron con sus
observaciones y consejos para que se lograra concluir satisfactoriamente este trabajo. A todos
ustedes les agradezco de todo corazón pero en especial:
A papá Dios por todo el amor que me ha dado, por estar conmigo en todo momento, ser mi
guía y cuidar a mis seres queridos y darles la tranquilidad de que seguía por el camino del bien
a pesar de la distancia.
A mi mamá y hermanos que siempre se han preocupado por mi bienestar. Les agradezco
mucho familia querida por todo lo que me han dado a lo largo de mi vida. Esta meta no se
hubiera concluido sin su amor y apoyo incondicional. Los amo.
A mi padre que a su manera me mostró su amor. Le agradezco por los momentos gratos que
pasamos y su consejo de seguir preparándome.
A mi director de tesis Dr. Juan Gabriel González Serna por su paciencia, buen trato y guiarme
a lo largo de la investigación.
A mis revisores de tesis: Dr. René Santaolaya Salgado, M.C. Andrea Magadán Salazar y al
M.C. Humberto Hernández García por el tiempo dedicado y observaciones constructivas que
enriquecieron el contenido del presente trabajo.
Al personal académico y administrativo de CENIDET, por compartir su conocimiento y buen
trato.
A mis compañeros y amigos de generación: Claudia, Deysy, Lalo y Richard. Por momentos
agradables y formar parte de esta experiencia. En especial a Deysy por aguantarnos
mutuamente durante un año al convivir en la misma casa, por esas pláticas que duraban horas
y por tu apoyo en los trámites de titulación. Sin tu ayuda esto hubiera sido complicado.
A mis compañeros de otras generaciones: Lirio, Adriana, Chucho, Pedro y Daniel de la
generación 2005-2007. Ruby, Janeth, Luis, Omar, Israel y Christian de la generación 2007-
2009. A todos gracias por compartir momentos agradables en el laboratorio de SD.
Quiero hacer un especial agradecimiento a mi novio Jesús Fidel Borjas Díaz, pues su apoyo,
amor y paciencia estos dos años fueron importantes para seguir adelante a pesar de estar lejos
de nuestras familias. Gracias amor por enseñarme a ser independiente y apoyarme en todos los
aspectos.
RESUMEN
Desde los orígenes de la humanidad, el interés del hombre por conocer el entorno que le rodea
y descubrir y dominar nuevos territorios, lo han conducido a elaborar modelos reducidos de
los lugares que ha habitado. Es así como nace la cartografía, como ciencia y arte de
representación del mundo. En principio materializada sobre distintas superficies y con
herramientas variadas, cambiando constantemente al experimentar una serie importante de
innovaciones gracias a los avances tecnológicos que se tienen en el presente.
~i~
3.1.2.2. Caso de uso: Autentificar Usuario.............................................................................. 42
3.1.2.3. Caso de uso: Diseñar Mapa ........................................................................................ 43
3.1.2.4. Caso de uso: Solicitad Mapa ...................................................................................... 45
3.1.2.5. Caso de uso: Aplicar Estilos ....................................................................................... 46
3.1.2.6. Caso de uso: Generar Código XML ........................................................................... 48
3.1.2.7. Caso de uso: Elegir Plantilla de Diseño ..................................................................... 49
3.1.2.8. Caso de uso: Publicar Aplicación Web ...................................................................... 51
3.1.2.9. Caso de uso: Visualizar Aplicación Web ................................................................... 52
3.2. DISEÑO ................................................................................................................................. 53
3.2.1. Diseño arquitectónico ..................................................................................................... 53
3.2.1.1 Clientes ........................................................................................................................... 54
3.2.1.2 Contenedor Web............................................................................................................. 54
3.2.1.3 Herramienta MapWeb Designer ..................................................................................... 54
3.2.1.4 Api visora de mapas ....................................................................................................... 55
3.2.1.5 Servidor de mapas (WMS por sus siglas en inglés). ..................................................... 56
3.2.1.6 Base de Datos (PostgreSQL). ......................................................................................... 56
3.2.2. Diagramas de clases ....................................................................................................... 56
3.2.2.1. Clases del caso de uso Registrar Usuario ................................................................... 57
3.2.2.2. Clases del caso de uso Autentificar Usuario .............................................................. 59
3.2.2.3. Clases del caso de uso Diseñar Mapa ......................................................................... 61
3.2.2.3.1. Clases del caso de uso Solicitar Mapa........................................................................ 61
3.2.2.3.2. Clases del caso de uso Aplicar Estilos y Generar Código XML ................................ 63
3.2.2.4. Clases del caso de uso Elegir Plantilla de Diseño y Publicar Aplicación Web .......... 65
3.2.2.5. Secuencia del Caso de uso Visualizar Aplicación Web ............................................. 67
3.2.3. Diseño de la Base de Datos. ........................................................................................... 67
~ ii ~
INDICE DE FIGURAS
Figura 1.1. Estudio del uso de comercio electrónico en México.............................................................. 3
Figura 1.2. Clasificación de la Geomática respecto al software libre ...................................................... 7
Figura 1.3. Interfaz de usuario de Click2Map .......................................................................................... 9
Figura 1.4. Publicación del mapa creado en Click2Map .......................................................................... 9
Figura 1.5. Interfaz de Map24 ................................................................................................................ 10
Figura 1.6. Interfaz de ZoomIn .............................................................................................................. 11
Figura 1.7. Interfaz de MapBuilder ........................................................................................................ 12
Figura 1.8. Interfaz de Google Maps...................................................................................................... 13
Figura 1.9. Interfaz de Yahoo Maps ....................................................................................................... 14
Figura 1.10. Interfaz de Virtual Earth .................................................................................................... 14
Figura 2.1. Capas que representan la realidad ........................................................................................ 18
Figura 2.2. Organización de la información en el modelo de datos ráster ............................................. 20
Figura 2.3. Información de un pixel ....................................................................................................... 20
Figura 2.4. Objetos geométricos del formato vectorial .......................................................................... 20
Figura 2.5. Resultado de solicitud GET a un WMS ............................................................................... 23
Figura 2.6. Código HTML de formulario para manejo de petición POST............................................. 24
Figura 2.7. Envío de petición HTTP POST............................................................................................ 24
Figura 2.8. Resultado de la petición HTTP POST ................................................................................. 25
Figura 2.9. Resultado de la petición GetCapabilities ............................................................................. 26
Figura 2.10. Resultado de la petición GetMap ....................................................................................... 27
Figura 2.11. Resultado de la petición GetFeatureInfo............................................................................ 29
Figura 2.12. Resultado de una petición al WMS utilizando el parámetro SLD y SLD_BODY ............ 30
Figura 2.13. Aplicaciones multinivel ..................................................................................................... 31
Figura 2.14. Interacción del patrón MVC .............................................................................................. 32
Figura 2.15. Funcionamiento de Struts .................................................................................................. 33
Figura 3.1. Diagrama general de casos de uso del sistema .................................................................... 40
Figura 3.2. Diagrama del caso de uso Registrar Usuario ....................................................................... 41
Figura 3.3. Diagrama de actividad de caso de uso Registrar Usuario .................................................... 42
Figura 3.4. Diagrama del caso de uso Autentificar Usuario................................................................... 42
Figura 3.5. Diagrama de actividad de caso de uso Autentificar Usuario ............................................... 43
Figura 3.6. Diagrama del caso de uso Diseñar Mapa ............................................................................. 44
Figura 3.7. Diagrama de actividad de caso de uso Diseñar Mapa .......................................................... 45
Figura 3.8. Diagrama de actividad de caso de uso Solicitar Mapa......................................................... 46
Figura 3.9. Diagrama de actividad de caso de uso Aplicar Estilos ........................................................ 48
Figura 3.10. Diagrama de actividad de caso de uso Generar Código XML ........................................... 49
Figura 3.11. Diagrama del caso de uso Elegir Plantilla de Diseño ........................................................ 49
Figura 3.12. Diagrama de actividad de caso de uso Elegir Plantilla de Diseño. .................................... 50
Figura 3.13. Diagrama del caso de uso Publicar Aplicación Web. ........................................................ 51
Figura 3.14. Diagrama de actividad del caso de uso Publicar Aplicación Web ..................................... 51
Figura 3.15. Diagrama del caso de uso Visualizar Aplicación Web ...................................................... 52
Figura 3.16. Diagrama de actividad de caso de uso Visualizar Aplicación Web ................................... 53
~ iii ~
Figura 3.17. Arquitectura general del sistema ........................................................................................ 54
Figura 3.18. Aplicación MapWeb Designer........................................................................................... 55
Figura 3.19. Paquetes del sistema MapWeb Designer ........................................................................... 56
Figura 3.20. Diagrama de clases de Registrar Usuario ......................................................................... 58
Figura 3.21. Diagrama de secuencias de Registrar Usuario .................................................................. 59
Figura 3.22. Diagrama de clases de Autentificar Usuario ..................................................................... 60
Figura 3.23. Diagrama de secuencias de Autentificar Usuario .............................................................. 61
Figura 3.24. Diagrama de secuencias de Solicitar Mapa ....................................................................... 62
Figura 3.25. Diagrama de clases de Solicitar Mapa............................................................................... 62
Figura 3.26. Diagrama de clases de Aplicar Estilos y generar código XML ......................................... 64
Figura 3.27. Diagrama de secuencias de Aplicar Estilos y generar código XML .................................. 65
Figura 3.28. Diagrama de clases de Elegir Plantilla de Diseño y Publicar Aplicación Web ................ 66
Figura 3.29. Diagrama de secuencias Elegir Plantilla de Diseño y Publicar Aplicación Web.............. 66
Figura 3.30. Diagrama de Secuencias de Visualizar Aplicación Web .................................................... 67
Figura 3.31. Diagrama Conceptual de la base de datos.......................................................................... 67
Figura 3.32. Diagrama Físico de la base de datos .................................................................................. 68
Figura 4.1. Clases del paquete mx.edu.cenidet.MapWebDesigner.Modelo.BaseDatos ......................... 70
Figura 4.2. Clase del paquete mx.edu.cenidet.MapWebDesigner.Modelo.ContextoCapas.................... 71
Figura 4.3. Clases del paquete mx.edu.cenidet.MapWebDesigner.Modelo.Logica................................ 71
Figura 4.4. Petición AJAX con acceso denegado al Servidor WMS ..................................................... 72
Figura 4.5. Clase del paquete mx.edu.cenidet.MapWebDesigner.Modelo.Proxy................................... 73
Figura 4.6. Petición AJAX con acceso denegado al Servidor WMS ..................................................... 73
Figura 5.1. Interfaz en la que se proporcionan los datos del usuario ..................................................... 77
Figura 5.2. Usuario registrado en la base de datos del sistema .............................................................. 77
Figura 5.3. Interfaz mostrada al registrar adecuadamente al usuario ..................................................... 78
Figura 5.4. Interfaz mostrada al ingresar un login registrado................................................................. 78
Figura 5.5. Ingreso al sistema................................................................................................................. 79
Figura 5.6. Interfaz de rechazo al ingreso del sistema ........................................................................... 80
Figura 5.7. Interfaz de error de conexión con la base de datos .............................................................. 80
Figura 5.8. Catálogo de mapas ............................................................................................................... 81
Figura 5.9. Visualización del mapa solicitado ....................................................................................... 82
Figura 5.10. Estado del mapa antes de ser estilizado ............................................................................. 83
Figura 5.11. Mapa después de aplicarle la configuración de línea sólida .............................................. 83
Figura 5.12. Mapa después de aplicarle la configuración de línea punteada ......................................... 84
Figura 5.13. Mapa de México antes de ser personalizado ...................................................................... 85
Figura 5.14. Mapa de México con estilo personalizado ......................................................................... 85
Figura 5.15. Puntos del mapa de México antes de ser personalizado .................................................... 86
Figura 5.16. Puntos con estilo personalizado ......................................................................................... 86
Figura 5.17. Puntos personalizados utilizando un gráfico...................................................................... 87
Figura 5.18. Mapa de México antes de personalizar el texto ................................................................. 88
Figura 5.19. Mapa con personalización de texto utilizando la ubicación PointPlacement. ................... 88
Figura 5.20. Mapa de México antes de aplicar la configuración de texto .............................................. 89
~ iv ~
Figura 5.21. Mapa de México que muestra el estilo de texto con rotación ............................................ 89
Figura 5.22. Mapa de la vialidad de Cuernavaca antes de aplicar estilo de texto .................................. 90
Figura 5.23. Mapa con personalización de texto utilizando la ubicación LinePlacement...................... 90
Figura 5.24. Mapa de Morelos que muestra la estilización del texto ..................................................... 91
Figura 5.25. Documento SLD ................................................................................................................ 92
Figura 5.26. Mapa que muestra el estilo descrito en el documento SLD ............................................... 92
Figura 5.27. Variable tempText que contiene la plantilla de aplicación Web y el mapa solicitado....... 93
Figura 5.28. Carpeta Web del usuario .................................................................................................... 93
Figura 5.29. Plantilla de estilo publicado en la Web .............................................................................. 94
Figura 5.30. Interfaz para iniciar sesión ................................................................................................. 95
Figura 5.31. Interfaz de opciones a elegir en una sesión activa ............................................................. 95
Figura 5.32. Interfaz del catálogo de mapas que provee el WMS .......................................................... 96
Figura 5.33. Mapa de México sin estilos definidos por el usuario ......................................................... 96
Figura 5.34. Estilización de puntos ........................................................................................................ 97
Figura 5.35. Estilización de líneas ......................................................................................................... 97
Figura 5.36. Estilización de polígonos ................................................................................................... 98
Figura 5.37. Estilización de texto ........................................................................................................... 98
Figura 5.38. Documento XML que describe los estilos definidos por el usuario .................................. 99
Figura 5.39. Elección de plantilla Web .................................................................................................. 99
Figura 5.40. Publicación del mapa en plantilla de aplicación Web...................................................... 100
Figura 5.41. Publicaciones realizadas por el usuario ........................................................................... 100
Figura A.1. Referencia a la librería msCross ....................................................................................... 110
Figura A.2. Definición de elemento DIV y solicitud a servidor de la NASA ...................................... 111
Figura A.3. Visualización de mapas..................................................................................................... 111
Figura A.4. Referencia a la librería OpenLayers.................................................................................. 112
Figura A.5. Creación de objeto mapa ................................................................................................... 112
Figura A.6. Solicitud al servidor Geoserver utilizando OpenLayers ................................................... 112
Figura A.7. Adición de la capa México al objeto map ......................................................................... 113
Figura A.8. Elemento DIV con identificador map ............................................................................... 113
Figura A.9. Llamada de la función init() .............................................................................................. 113
Figura A.10. Mapa de México visualizado utilizando OpenLayers ..................................................... 113
Figura A.11. Visualización de mapas con Ka-Map.............................................................................. 115
Figura A.12. Creación de petición a WMS. ......................................................................................... 116
Figura A.13. Definición de elemento DIV ........................................................................................... 116
Figura A.14. Definición de función init()............................................................................................. 116
Figura A.15. Invocación de función init() ............................................................................................ 116
Figura A.16. Mapa visualizado en WMS JavaScript Library .............................................................. 117
Figura A.17. Referencia a la librería Mapbuilder.js ............................................................................. 118
Figura A.18. Configuraciones utilizadas en documentos HTML o JSP............................................... 118
Figura A.19. Trozo de código XML del archivo config.xsd ................................................................ 119
Figura A.20. Archivo de configuración ............................................................................................... 119
Figura A.21. Trozo de código XML del archivo demisWorldMap.xml .............................................. 120
~v~
Figura A.22. Mapa visualizado en Mapbuilder .................................................................................... 120
Figura A.23. Gráfico comparativo de la evaluación de las APIs ......................................................... 122
Figura A.24. Resultados de la evaluación de APIs .............................................................................. 123
Figura B.1. Mapa visualizado en Degree. ........................................................................................... 127
Figura B.2. Ingreso a Configuración. ................................................................................................... 128
Figura B.3. Inicio de sesión en Geoserver............................................................................................ 128
Figura B.4. Ingreso a los datos de Geoserver. ...................................................................................... 128
Figura B.5. Configuración de espacio de nombres. ............................................................................. 129
Figura B.6. Creación del espacio de nombres. ..................................................................................... 129
Figura B.7. Visualización del espacio de nombre México creado. ...................................................... 129
Figura B.8. Creación de un nuevo almacén de datos. .......................................................................... 130
Figura B.9. Editor del almacén de datos .............................................................................................. 130
Figura. B.10. Entidades disponibles en Geoserver ............................................................................... 131
Figura B.11. Entidades disponibles en Geoserver ................................................................................ 131
Figura B.12. Visualización del mapa de México en Geoserver ........................................................... 132
Figura B.13. Archivo .map ................................................................................................................... 135
Figura B.14. Archivo de inicialización ejemplo2.html ........................................................................ 135
Figura B.15. Mapa visualizado en MapServer ..................................................................................... 136
Figura B.16. Gráfico comparativo de la evaluación de los servidores de mapas ................................. 137
Figura B.17. Resultados de la evaluación de servidores de mapas ...................................................... 140
Figura C.1. Diagrama de objetos SLD ................................................................................................. 142
Figura C.2. Diagrama de clases SLD ................................................................................................... 143
Figura D.1. Esquema SLD del elemento raíz ....................................................................................... 146
Figura D.2. Esquema de elemento NamedLayer .................................................................................. 147
Figura D.3. Esquema de elemento UserLayer ..................................................................................... 147
Figura D.4. Esquema de elemento RemoteOWS .................................................................................. 148
Figura D.5. Esquema XML para el elemento LayerFeatureConstraints ............................................. 148
Figura D.6. Ejemplo de capa definida por el usuario ........................................................................... 149
Figura D.7. Esquema XML del estilo definido por el usuario ............................................................. 149
Figura D.8. Ejemplo de UserStyle........................................................................................................ 150
Figura D.9. Esquema XML de FeatureTypeStyle ................................................................................ 150
Figura D.10. Esquema XML del elemento Rule .................................................................................. 151
Figura D.11. Esquema XML de LegendGraphic ................................................................................. 151
Figura D.12. Esquema XML para MinScaleDenominator y MaxScaleDenominator .......................... 152
Figura D.13. Ejemplo de Filter y ElseFilter ......................................................................................... 152
Figura D.14. Esquema XML de la simbolización Lineal ..................................................................... 153
Figura D.15. Esquema XML de Geometry .......................................................................................... 153
Figura D.16. Ejemplo de uso de Geometry .......................................................................................... 153
Figura D.17. Esquema XML de Stroke ................................................................................................ 154
Figura D.18. Esquema XML de CssParameter ................................................................................... 154
Figura D.19. Esquema XML de GraphicFill ....................................................................................... 154
Figura D.20. Esquema XML de GraphicStroke ................................................................................... 155
~ vi ~
Figura D.21. Ejemplo de LineSymbolizer ............................................................................................ 155
Figura D.22. Resultado al aplicar la simbolización LineSymbolizer definida en la figura (D.21) ....... 155
Figura D.23. Esquema XML de PolygonSymbolizer ........................................................................... 155
Figura D.24. Esquema XML de Fill .................................................................................................... 156
Figura D.25. Ejemplo de estilización poligonal ................................................................................... 156
Figura D.26. Resultado de la definición mostrada en la figura (D.25) ................................................ 156
Figura D.27. Esquema XML de PointSymbolizer ................................................................................ 156
Figura D.28. Esquema XML de Graphic y ExternalGraphic .............................................................. 157
Figura D.29. Esquema XML Mark ...................................................................................................... 158
Figura D.30. Ejemplo de estilización Puntual ...................................................................................... 158
Figura D.31. Resultado de la definición mostrada en la figura (D.30) ................................................ 158
Figura D.32. Esquema XML de TextSymbolizer.................................................................................. 159
Figura D.33. Esquema XML de Font................................................................................................... 159
Figura D.34. Esquema XML de LabelPlacement, PointPlacement y LinePlacement ......................... 160
Figura D.35. Esquema XML de AnchorPoint ...................................................................................... 160
Figura D.36. Valores que puede tomar AnchorPoint ........................................................................... 160
Figura D.37. Esquema XML de Halo .................................................................................................. 162
Figura D.38. Ejemplo de simbolización Texto ..................................................................................... 163
Figura D.39. Resultado de la definición mostrada en la figura (D.38) ................................................ 163
~ vii ~
INDICE DE TABLAS
Tabla 1.1. Comparativa de las aplicaciones Web estudiadas con la propuesta. ..................................... 15
Tabla 2.1. Caracteres reservados en WMS para una cadena de consulta ............................................... 21
Tabla 2.2. Estructura de petición HTTP GET ........................................................................................ 22
Tabla 2.3. Parámetros para la solicitud GetCapabilities ........................................................................ 25
Tabla 2.4. Parámetros para la solicitud GetMap .................................................................................... 26
Tabla 2.5. Parámetros para la solicitud GetFeatureInfo ........................................................................ 28
Tabla 3.1. Descripción de caso de uso Registrar Usuario ...................................................................... 41
Tabla 3.2. Descripción del caso de uso Autentificar Usuario ................................................................ 42
Tabla 3.3. Descripción de caso de uso Diseñar Mapa ............................................................................ 44
Tabla 3.4. Descripción de caso de uso Solicitar Mapa ........................................................................... 45
Tabla 3.5. Descripción de caso de uso Aplicar Estilos .......................................................................... 46
Tabla 3.6. Descripción de caso de uso Generar Código XML ............................................................... 48
Tabla 3.7. Descripción de caso de uso Elegir Plantilla de Diseño ......................................................... 50
Tabla 3.8. Descripción de caso de uso Publicar Aplicación Web .......................................................... 51
Tabla 3.9. Descripción de caso de uso Visualizar Aplicación Web ....................................................... 52
Tabla 3.10. Simbología utilizada en diagramas de secuencias............................................................... 57
Tabla 5.1. Caso de prueba MAPWEBDE-01.01 Registro de usuarios .................................................. 77
Tabla 5.2. Caso de prueba MAPWEBDE-01.02 Autentificación al sistema ......................................... 79
Tabla 5.3. Caso de prueba MAPWEBDE-01.03 Rechazo al inicio de sesión........................................ 79
Tabla 5.4. Caso de prueba MAPWEBDE-01.04 Acceso al sistema ...................................................... 81
Tabla 5.5. Caso de prueba MAPWEBDE-02 Solicitud y visualización de mapas................................. 82
Tabla 5.6. Caso de prueba MAPWEBDE-03.01 Estilizar líneas ........................................................... 82
Tabla 5.7. Caso de prueba MAPWEBDE-03.02 Estilizar polígonos ..................................................... 84
Tabla 5.8. Caso de prueba MAPWEBDE-03.03 Estilizar puntos .......................................................... 86
Tabla 5.9. Caso de prueba MAPWEBDE-03.04 Estilizar texto ............................................................. 87
Tabla 5.10. Caso de prueba MAPWEBDE-03.05 Generación de Código XML ................................... 91
Tabla 5.11. Caso de prueba MAPWEBDE-04 Asociar mapa a plantilla de página Web ...................... 93
Tabla 5.12. Caso de prueba MAPWEBDE-05 Publicación de la página Web ...................................... 93
Tabla 5.13. Caso de prueba MAPWEBDE-06 Visualización de la página Web ................................... 94
Tabla 5.14. PRUEBA DE INTEGRACION-Funcionamiento general del sistema ................................ 95
Tabla A.1. Navegadores soportados por Ka-Map ................................................................................ 114
Tabla A.2. Definición de criterios ........................................................................................................ 120
Tabla A.3. Asignación de ponderaciones a cada criterio ..................................................................... 121
Tabla A.4. Asignación de calificaciones a cada API de acuerdo a los criterios ................................... 121
Tabla A.5. Obtención de productos por criterio .................................................................................. 121
Tabla A.6. Obtención de sumatorias por API ...................................................................................... 121
Tabla A.7. Asignación de ponderaciones a cada criterio ..................................................................... 123
Tabla A.8. Matriz de evaluación .......................................................................................................... 124
Tabla B.1. Abstracto de etiquetas usadas en MapServer ..................................................................... 134
Tabla B.2. Definición de criterios ........................................................................................................ 136
Tabla B.3. Asignación de ponderaciones a cada criterio ..................................................................... 136
~ viii ~
Tabla B.4. Asignación de calificaciones a cada servidor de mapas de acuerdo a los criterios ............ 137
Tabla B.5. Obtención de productos por criterio .................................................................................. 137
Tabla B.6. Obtención de sumatorias por WMS.................................................................................... 137
Tabla B.7. Asignación de ponderaciones a cada criterio ..................................................................... 138
Tabla B.8. Comparativa de servidores ................................................................................................. 139
Tabla D.1. Ejemplos de ubicaciones puntuales .................................................................................... 161
Tabla D.2. Ejemplos de desplazamientos............................................................................................. 161
Tabla D.3. Ejemplos de rotación .......................................................................................................... 161
Tabla D.4. Ejemplos de localización lineal .......................................................................................... 162
Tabla E.1. Elementos de prueba ........................................................................................................... 167
Tabla E.2. Descripción de las tareas de prueba .................................................................................... 168
Tabla E.3. Requisitos ambientales ....................................................................................................... 169
Tabla E.4. Casos de prueba .................................................................................................................. 170
~ ix ~
GLOSARIO
AdSense Es un sistema de publicidad de Google que hace coincidir los anuncios con el
contenido de un sitio. Estos anuncios están administrados por Google y generan
ingresos basándose en los clics de los visitantes de la página y en las
visualizaciones de la misma [ADSENSE, 2008].
API Interfaz de Programación de Aplicaciones (Application Programming Interface
por sus siglas en inglés). Es el conjunto de funciones y procedimientos que
ofrece cierta biblioteca para ser utilizada por otro software como una capa de
abstracción. Representa una interfaz de comunicación entre componentes de
software [WIKIAPI, 2007].
Capa Unidad básica de información geográfica que puede solicitarse a un servidor
como un mapa [LOPEZ, 2006].
Cartografía La cartografía es la creación, la producción y el estudio de mapas. Se considera
una subdisciplina de la geografía [LEARNER 2003].
CVS Valores Separados por Coma (Comma-Separated Values por sus siglas en
inglés) es un tipo de documento sencillo para representar datos en forma de
tabla, en la que las columnas se separan por comas y las filas por saltos de línea
[RFC4180, 2005].
ESRI Instituto de Investigación de Sistemas Ambientales (Enviromental Systems
Research Institute por sus siglas en inglés) es una empresa dedicada al
desarrollo y comercialización de Sistemas de Información Geográfica [ESRI,
2008].
Geomática Es el término científico moderno que hace referencia a un conjunto de ciencias
en las cuales se integran los medios para la captura, tratamiento, análisis,
interpretación, difusión y almacenamiento de información geográfica. También
llamada información espacial o geoespacial. El término «geomática» está
compuesto por dos ramas "GEO" por Geoide, y MATICA por Informática, Es
decir estudio del Geoide o globo terrestre a través de la informática [DESIGE,
2008].
GeoRSS Es un conjunto de estándares para representar información geográfica y está
construido dentro de la familia de estándares RSS [GEORSS, 2007].
GML Lenguaje de Marcado Geográfico (Geography Markup Language por sus siglas
en inglés) es una gramática XML para transportar y expresar información
geográfica [OGCGML, 2007].
KML Lenguaje de Marcas de KeyHole (Keyhole Markup Language por sus siglas en
inglés), es una gramática XML y un formato de archivo para la creación de
modelos y el almacenamiento de funciones geográficas como puntos, líneas,
imágenes, polígonos y modelos que se muestran en Google Earth, Google Maps
y otras aplicaciones [POKML, 2008].
~x~
Mapa Representación de dos dimensiones de la distribución espacial de fenómenos o
de objetos. Por ejemplo, un mapa puede demostrar la localización de ciudades,
de gamas de la montaña, de los ríos, o de los tipos de roca en una región dada.
La mayoría de los mapas son planos, haciendo su producción, almacenamiento
y manipulación relativamente fácil. Los mapas presentan su información al
espectador en una escala reducida. Son más pequeños que el área que
representan y usan las relaciones matemáticas para mantener relaciones
geográficas proporcionalmente exactas entre los puntos. Los mapas muestran la
información usando los símbolos que se identifican en una leyenda
[LEWOTSKY, 2004].
MathML El Lenguaje de Marcado Matemático (Mathematical Markup Language por sus
siglas en inglés) es un lenguaje de marcado basado en XML cuyo objetivo es
expresar notación matemática de forma que distintas máquinas puedan
entenderla, para su uso en combinación con XHTML en páginas Web y para
intercambio de información entre programas de tipo matemático [WIKIMATH,
2009].
Mashup Aplicación Web híbrida que usa contenido de otras aplicaciones Web para crear
un nuevo contenido completo. El contenido de un mashup normalmente
proviene de sitios Web de terceros a través de una interfaz pública o usando una
API [WIKIMASH, 2009].
OGC El Consorcio Geoespacial Abierto (Open Geospatial Consortium por sus siglas
en inglés) es un consorcio internacional de la industria conformado por 369
compañías, agencias gubernamentales y universidades cuyo fin es la definición
de estándares abiertos e interoperables dentro de los Sistemas de Información
Geográfica para facilitar el intercambio de la información geográfica en
beneficio de los usuarios [OGC, 2008].
RSS Es una familia de los formatos XML para el intercambio de información.
Muchos sitios Web dinámicos, en especial Weblogs, proporcionan RSS para
difundir noticias o intercambiar contenido [GEORSS, 2007].
SGML Lenguaje de Marcado General Normalizado (Standard Generalized Markup
Language por sus siglas en inglés) utilizado para especificar las reglas de
etiquetado de documentos [W3CSGML, 2009]
ShapeFile Formato de tipo vectorial desarrollado por la compañía ESRI que almacena
elementos geográficos y atributos asociados a ellos. Está compuesto por
archivos .shp, .shx y .dbf [WIKISHP, 2008]
Sistema de Un sistema de referencia es un conjunto de coordenadas espacio-tiempo que
Referencia se requieren para poder determinar la posición de un punto [EDNEW, 2009].
SLD Descriptor de Estilo de Capa (Styled Layer Descriptor por sus siglas en inglés)
es un esquema XML propuesto por la OGC como lenguaje estándar para
describir los estilos que dan apariencia a un mapa [OGCSLD, 2002].
~ xi ~
WMS Servicio de Mapas en Web (Web Map Service por sus siglas en inglés) es una
especificación definida por la OGC caracterizada por ser un servicio que provee
mapas a través de la Web. Estos mapas tienen como fuente de información
datos vectoriales y ráster [OGCWMS, 2002].
WFS Servicio de Fenómenos en Web (Web Feature Service por sus siglas en inglés)
es un servicio que permite consultar objetos geográficos regresando el resultado
de la consulta en formato GML [OGCWFS, 2002].
Widget Pequeña aplicación o programa que realiza una función concreta, generalmente
de tipo visual, dentro de otras aplicaciones o sistemas operativos. Los widgets
pueden ser relojes vistosos en pantalla, nota, calculadoras, calendarios, agendas
o juegos [WIKIWIDG, 2009]
~ xii ~
CAPÍTULO 1
INTRODUCCIÓN
En el presente capítulo se expone la problemática que se abordó, el objetivo, la
justificación, beneficios, alcances y limitaciones del proyecto de tesis. Además se
muestra la investigación del estado del arte realizado y la organización general del
documento.
Capítulo 1 Introducción
1.1. Introducción
Desde hace muchos siglos el hombre ha representando su entorno a través de mapas
plasmados en materiales como: tablillas de arcilla, seda y papel. A través de los años los
métodos de representación de mapas fueron mejorando y dieron lugar a la ciencia que hoy se
conoce como la ciencia cartográfica.
Gracias a los avances tecnológicos y científicos que se han desarrollado en las últimas
décadas, la cartografía ha mejorado de manera sorprendente con la incorporación de nuevas
tecnologías denominadas Sistemas de Información Geográfica (GIS, Geographic Information
System por sus siglas en inglés), los cuales han permitido que las aplicaciones y utilidades
informáticas visualicen mapas geográficos de diferentes temáticas y permitan realizar
consultas espaciales a través de la computadora.
Por otro lado, Internet se ha convertido en un medio ideal para la publicación de mapas
geográficos, esto ha sido posible gracias al surgimiento de los Servicios de Mapas por Internet
(WMS, Web Map Service por sus siglas en inglés), quienes han permitido publicar mapas
digitales en formatos vectorial y ráster (en el capítulo 2 de marco teórico se describen cada
uno de estos formatos). En particular, los mapas vectoriales, antes de ser publicados pasan por
un proceso de estilización en el que se asignan propiedades como color, tamaño y estilo a cada
uno de los elementos representados en el mapa (por ejemplo: puntos, líneas y polígonos).
Dicho proceso se convierte en una tarea compleja debido a que no existen herramientas que
permitan estilizar mapas en un ambiente Web, por lo que el diseñador de mapas se vale de
herramientas de escritorio que a menudo suelen ser muy complicadas.
Por lo anterior y para dar una solución estándar (siguiendo la especificación SLD de la OGC),
surge la idea de crear una herramienta de software estilizadora de mapas que demuestre, que
es posible crear estilos personalizados por el diseñador de manera sencilla. Estos estilos se
verán reflejados mediante un archivo SLD basado en XML, el cual describirá detalladamente
los estilos aplicados a cada uno de los puntos, líneas y polígonos representados en un mapa
vectorial. Como resultado, se obtendrá un archivo SLD independiente del mapa vectorial
visualizado, el cual será asociado al mapa base al momento de ser publicado en un Servidor de
Mapas.
Página 2
Capítulo 1 Introducción
1.3. Objetivos
Contribuir a la creación de prototipos de aplicaciones Web de forma rápida, mediante la
implementación de una herramienta de software que proporcione servicios que permitan
diseñar la apariencia e interacción con mapas temáticos utilizando el estándar XML y APIs de
código abierto que incluyan servicios de acceso a servidores de mapas. El diseño y la
implementación de esta herramienta deben proporcionar servicios de interacción asíncronos
(AJAX) para optimizar la solicitud de mapas vectoriales a los servidores de mapas.
Objetivos específicos:
Seleccionar un servidor de mapas de software libre con la finalidad de utilizarlo como
gestor de mapas.
Utilizar componentes que permitan la interacción con mapas, por ejemplo, zoom in,
zoom out y paneo.
Colaborar con la configuración de objetos contenidos en mapas, como son: texto,
polígonos, líneas y puntos. A estos objetos se les deben definir el color, ancho de línea,
tipo de línea, contorno de las líneas de polígonos, color de relleno, nivel de
transparencia, y tipo de letra.
Generar de forma automática un archivo XML que describa los estilos que definen la
apariencia del mapa. Realizando esto de acuerdo a las propiedades asignadas a los
objetos punto, línea, polígono y texto del mapa
1.4. Justificación
De acuerdo a estadísticas publicadas por la Asociación Mexicana de Internet (AMIPCI), el uso
de la industria de Internet en México se mantiene en crecimiento. Según el estudio realizado
en el rubro de comercio electrónico, el crecimiento registrado del año 2006 al 2007 fue de un
78% equivalente a un importe de 955 millones de dólares en ventas electrónicas.
Pronosticando un 70% de crecimiento para el año 2008 (ver figura 1.1).
Página 3
Capítulo 1 Introducción
Lo anterior pone en evidencia que el desarrollo y uso de aplicaciones Web han mantenido su
crecimiento y con el pasar de los años, van buscando información más precisa en términos de
datos de ubicación que enriquezcan y visualicen sus servicios. Con los avances tecnológicos
actuales, es posible mostrar esta información a través de mapas para que los usuarios puedan
fácilmente ubicar y visualizar objetos, lugares de interés además de otros servicios vía Web
dependiendo de la temática del mapa. Para realizar esto, existen APIs y herramientas
disponibles en la Web de manera gratuita que proporcionan el servicio de visualización de
mapas.
La importancia de los mapas va desde saber donde se encuentra cierto servicio, hasta el de
salvar la vida a toda una población. Por ejemplo, un mapa de carreteras es una guía que
proporciona información de cómo llegar a otro lugar, un mapa meteorológico ayuda a los
científicos a ubicar dónde y hacia dónde van los huracanes, tornados, incendios, etc. Y con
ello poder alertar a la gente para que evacuen las zonas de riesgos y se salven vidas.
Por naturaleza el ser humano diferencia objetos por su forma, tamaño y también por su color.
Por ello la interpretación de un mapa no es sencilla si no posee colores y claves que describan
los objetos utilizados en un mapa. En particular la presente tesis se enfocó en la aplicación de
estilos a objetos punto, línea, polígono y texto de mapas vectoriales.
Por otra parte, desde el enfoque del diseñador de aplicaciones Web, existen aspectos
importantes que se mencionan a continuación y dieron pauta a la factibilidad de esta
investigación.
Para crear un mapa con las APIs disponibles de código abierto, se requiere de asimilar cada
una de ellas y después utilizar sólo las funciones que se necesiten de la API elegida. En esta
parte se requiere de tiempo suficiente para poder conocer la API e implementar el código que
permitirá la visualización del mapa.
Una vez que se tienen los mapas visualizados, resulta necesario diseñar la apariencia del mapa
de acuerdo a las necesidades que se presenten. Esta etapa resulta una limitante más, que
retarda la realización de mapas de manera rápida, pues la edición se hace de forma manual
insertando líneas de código en un archivo XML.
Existen herramientas de escritorio que permiten diseñar la apariencia de mapas geográficos,
pero estas herramientas aplican el estilo directamente en los archivos vectoriales. La
desventaja de esto es que si un usuario modifica el estilo del mapa a sus necesidades, otro
usuario que utilice el mismo mapa visualizará las modificaciones del usuario anterior.
1.5. Beneficios
El beneficio principal que se obtuvo de la presente tesis es una aplicación Web que
proporciona las siguientes funciones:
Componentes de estilo: estos componentes permiten aplicar estilos definidos por el
usuario a objetos tipo punto, línea, polígono y texto de un mapa. Todo esto haciéndolo
de manera transparente para el usuario, es decir, sin tener que introducir ni una sola
línea de código.
Página 4
Capítulo 1 Introducción
Página 5
Capítulo 1 Introducción
Servidores de mapas
Los servidores de mapas permiten publicar cartografía en la Web para que los usuarios puedan
interaccionar con información geográfica a través de Internet. La OGC proporciona la
especificación Web Map Service que describe los servicios que debe proporcionar un servidor
de mapas. Los proyectos de software libre que se han desarrollado para este grupo son UMN
MapServer, GeoServer, Degree y MapGuide OpenSource [MONTESINOS, 2007].
Herramientas de metadatos
Los servidores de catálogos son aplicaciones que permiten publicar en la red un conjunto de
metadatos sobre diferentes conjuntos de datos. Estos catálogos son expuestos como un portal
que permite hacer búsquedas mediante diferentes criterios. Los proyectos de software libre
que se han desarrollado bajo este rubro son Geonetwork y CaMDEdit [MONTESINOS, 2007].
Clientes pesados
Los clientes pesados son todas las aplicaciones de escritorio que han sido útiles para la gestión
de información geográfica. Las funciones que se tienen con estas herramientas son las de
edición, análisis y explotación de información geográfica. Existen muchos proyectos de
software libre en esta clasificación pero los más representativos son: Grass, Quantum GIS,
Página 6
Capítulo 1 Introducción
gvSIG, Saga y Sextante, MapWindow, World Wind, Open Jump , Kosmo, ILWIS y uDig
[MONTESINOS, 2007].
Clientes ligeros
Los clientes ligeros surgieron con la aparición de los servidores de mapas. Proporcionan un
conjunto de componentes o funciones que permiten a los desarrolladores de aplicaciones Web
crear páginas Web o aplicaciones Web con contenido espacial. Los proyectos más
representativos desarrollados bajo este rubro son: Ka-Map, Chamelon, CartoWeb,
OpenLayers, Mapbender, MapBuilder, msCross y WMS Java Script Library [MONTESINOS,
2007].
Página 7
Capítulo 1 Introducción
aplicaciones que permitieran estilizar los objetos del mapa visualizado, sólo se facilitaban
componentes que permitían dibujar líneas y polígonos sobre los mapas visualizados.
A continuación se exponen algunas aplicaciones Web disponibles en Internet que permiten
manipular información espacial, se describen sus característica más sobresalientes y se
mencionan las desventajas que presentan con el presente trabajo.
1.8.1. Click2Map
Es una aplicación Web que permite crear y publicar mapas de Google en línea. Cualquier
persona con acceso a Internet puede crear1 y publicar sus mapas en Internet sin tener que
codificar ni una sola línea de código [CLICK2MAP, 2008].
Servicios que proporciona:
1. Creación ilimitada de mapas con controles para manipularlo (“zoom in”, “zoom
out”, “paneo” y visualización del mapa en satelital, vectorial e hibrido).
2. Inserción ilimitada de marcadores que se pueden añadir en el mapa y permite
dibujar líneas y polígonos sobre el mapa con estilos definidos por el usuario.
3. Personalización de iconos de los marcadores.
4. Publicación del mapa como una página Web HTML.
5. Permite establecer cualquier mapa creado como widget ya que proporciona un
pequeño código en HTML el cual se puede copiar y pegar en una página Web
personal.
6. Si el usuario posee una cuenta de Adsense puede crear banners para poner
anuncios sobre sus mapas.
7. Permite borrar los anuncios de la página Web generada.
8. Importa o exporta marcadores de CSV, KML, GeoRSS y archivos XML.
9. Proporciona un API Web en la que se pueden manipular los marcadores de los
mapas en aplicaciones personales.
Click2Map gestiona cuatro tipos de usuarios: bronze, silver, gold y platinium.
Los usuarios de tipo bronze son aquellos que pueden utilizar el sistema de manera gratuita
pero limitado a las primeras cuatro funciones presentadas en la lista anterior. Los usuarios tipo
silver, gold y platinium son usuarios que pagan mensualmente una cantidad en dólares que van
desde los $9 dólares hasta $39 dólares para gozar de los demás servicios.
En la figura (1.3) se muestra la interfaz que proporciona la aplicación Click2Map.
1
El termino crear no significa que el usuario dibuja el mapa, sino que a partir de los mapas de Google el usuario
elige que porción del mapa o extensión territorial desea visualizar en la página Web que genera click2map. Esa
extensión territorial es un nuevo mapa que manipula la aplicación y por lo tanto lo considera como un mapa
creado por el usuario.
Página 8
Capítulo 1 Introducción
Página 9
Capítulo 1 Introducción
1.8.2. Map24
Es un buscador de direcciones disponible en la Web de manera gratuita [MAP24, 2008].
Servicios que proporciona:
1. Realiza búsquedas de direcciones y de puntos de interés.
2. Permite el cálculo de rutas.
3. Guarda un máximo de 10 direcciones en la libreta de direcciones de cada usuario.
4. Las direcciones antes de ser almacenadas pueden ser modificadas por el usuario.
5. Envía direcciones vía correo electrónico con un máximo de 10 remitentes.
6. Permite ver los mapas en tres dimensiones.
7. No permite agregar puntos de interés ni direcciones de empresas.
8. Proporciona dos tipos de mapas: estáticos y dinámicos.
9. Proporciona controles para manipular el mapa: “zoom in”, “zoom out”, “paneo” y
visualización de mapas en formato ráster y vectorial.
En la figura (1.5) se muestra la interfaz de map24.
1.8.3. ZoomIn
Esta aplicación Web proporciona los siguientes servicios [ZOOMIN, 2007]:
1. Permite realizar búsquedas de direcciones.
2. Explora lugares cercanos a un punto.
3. Los usuarios inscritos pueden realizar comentarios acerca de un lugar.
4. Permite subir fotografías a un lugar en específico.
Página 10
Capítulo 1 Introducción
1.8.4. MapBuilder
Es una aplicación gratuita vía Web que permite crear mapas de Google Maps.
[MAPBUILDER, 2007].
Servicios que proporciona:
1. Búsquedas de direcciones sobre el mapa.
2. Añade marcas sobre el mapa especificando información acerca del punto como
son: título, descripción, dirección, coordenadas y tipo de marca.
3. Genera código JavaScript y HTML para colocar el mapa en una aplicación Web
personal.
4. Los mapas creados se guardan en la cuenta del usuario.
5. Proporciona mecanismos para manipular el mapa. (“zoom in”, “zoom out” y
“paneo”)
La figura (1.7) muestra la interfaz de ésta aplicación web.
Página 11
Capítulo 1 Introducción
Página 12
Capítulo 1 Introducción
Página 13
Capítulo 1 Introducción
Página 14
Capítulo 1 Introducción
No, sólo
permite la No, sólo dibuja No, sólo dibuja Si, publica el
personalización líneas con polígonos con mapa pero el
Click2Map Sí No
de POIs estilos definidos estilos definidos usuario no elige
insertados por el usuario por el usuario. la página Web
sobre el mapa
Map24 Sí No No No No No
ZoomIn Sí No No No No No
Map Builder Sí No No No No Sí
No, utiliza KML
para describir
Google Maps Sí No No No Sí
los POIS
insertados
Yahoo Maps Sí No No No No Sí
No, únicamente No, sólo dibuja No, sólo dibuja
Live Search inserta puntos líneas sobre el polígonos sobre
Sí No No
Maps de interés y los mapa y los el mapa y los
exporta a KML exporta a KML exporta a KML
MapWeb
Designer Sí Sí Sí Sí Sí Sí
(TESIS)
Página 15
Capítulo 1 Introducción
Página 16
CAPÍTULO 2
MARCO TEÓRICO
En este capítulo se describen conceptos elementales de las tecnologías involucradas
en el desarrollo de la presente tesis.
Capítulo 2 Marco Teórico
Los sistemas de información geográfica requieren de varios componentes para poder funcionar
correctamente. Estos componentes son una colección organizada de hardware, software, datos
geográficos y personal. Diseñados para capturar, almacenar, manipular, analizar y desplegar
en todas sus formas la información geográficamente referenciada con el fin de resolver
problemas complejos de planificación y gestión [VON, 2005].
Hardware. Es el equipo donde opera el GIS. Hoy en día los programas GIS se pueden
ejecutar en gran número de equipos que van desde servidores hasta computadoras portátiles
usados en red o trabajando en modo desconectado [CARMONA, 2007].
Software. Los programas GIS proveen las funciones y las herramientas necesarias para
almacenar, analizar y desplegar la información geográfica. Los principales componentes de los
programas son [CARMONA, 2007]:
Herramientas para la entrada y manipulación de la información geográfica.
Un sistema de manejador de base de datos (DBMS)
Herramientas que permitan búsquedas geográficas, análisis y visualización.
Interface gráfica para el usuario (GUI) para acceder fácilmente a las herramientas.
Página 18
Capítulo 2 Marco Teórico
Datos geográficos. La parte más importante de un sistema de información geográfico son sus
datos. Los datos geográficos y tabulares pueden ser adquiridos por quien implementa el
sistema de información, así como por terceros que ya los tienen disponibles. El sistema de
información geográfico integra los datos espaciales con otros recursos de datos y puede
incluso utilizar los manejadores de base de datos más comunes para manejar la información
geográfica [CARMONA, 2007].
Personal. La tecnología de los GIS está limitada si no se cuenta con el personal que opera,
desarrolla y administra el sistema y que establece planes para aplicarlo en problemas del
mundo real [CARMONA, 2007].
Una segunda definición más concreta es la que se proporciona en [LBSPRO, 2007]: Un
sistema de información geográfico brinda funcionalidades para análisis y consultas espaciales.
Los tipos de preguntas que puede responder un GIS son las siguientes [LBSPRO, 2007]:
¿Qué se encuentra en...? (Pregunta de ubicación. Qué existe en una ubicación
particular)
¿Dónde está...? (Pregunta condicional. Qué ubicación satisface ciertas condiciones)
¿Cuáles datos están relacionados...? (Pregunta relacional. Analiza la relación espacial
entre objetos de atributos geográficos)
¿Qué pasaría si...? (Pregunta de simulación. Computa y despliega una ruta óptima, un
terreno apropiado, una área de riesgo para desastres basado en un modelo)
Existen dos tipos de información que manipulan los sistemas GIS:
Información ráster.
Información vectorial.
Página 19
Capítulo 2 Marco Teórico
Página 20
Capítulo 2 Marco Teórico
Página 21
Capítulo 2 Marco Teórico
Página 22
Capítulo 2 Marco Teórico
Página 23
Capítulo 2 Marco Teórico
Página 24
Capítulo 2 Marco Teórico
Página 25
Capítulo 2 Marco Teórico
Ejemplo [CSGWMS2008]:
A continuación se muestra la solicitud de las características del servicio “IDEE-Base”.
El resultado de la petición se observa en la figura (2.9).
http://www.idee.es/wms/IDEE-Base/IDEE-
Base?VERSION=1.1.0&REQUEST=GetCapabilities&SERVICE=WMS
GetMap (Obligatoria)
Esta operación proporciona como resultado un mapa el cual refleja una imagen de los
datos almacenados. La tabla (2.4) describe cada parámetro necesario para realizar una
petición GetMap.
Tabla 2.4. Parámetros para la solicitud GetMap
Fuente: tomado de [OGCWMS, 2002]
Página 26
Capítulo 2 Marco Teórico
Página 27
Capítulo 2 Marco Teórico
GetFeatureInfo (Opcional)
GetFeatureInfo es una operación que captura y proporciona información contenida en
un mapa, tal como el valor de un objeto en una posición determinada. Es sólo
soportada por aquellas capas que tienen el atributo queryable=1 que ha sido definido o
heredado.
Un cliente no puede emitir una solicitud GetFeatureInfo para capas que tienen el
atributo queryable=0.
En la tabla (2.5) se describe los parámetros para realizar una petición GetFeatureInfo.
Ejemplo [CSGWMS2008]:
A continuación se muestra una solicitud HTTP GET que solicita las características de
un vértice de la capa redroi (Red de Orden Inferior) situado en el pixel x=250, y=300
del servicio Sistema de Referencia.
http://www.idee.es/wms/IDEE-Referencia/IDEE-
Referencia?SERVICES=WMS&VERSION=1.1.0&REQUEST=GetFeatureInfo&LAYERS=redro
i&STYLES=default&SRS=EPSG:4230&BBox=-5.4650655,38.4137,-
1.62939155,42.13107&WIDTH=400&HEIGHT=500&FORMAT=image/png&OPAQUE&QUER
Y_LAYERS=redroi&FEATURE_COUNT=1&X=250&Y=300
El resultado de la solicitud anterior se ilustra en la figura (2.11).
Página 28
Capítulo 2 Marco Teórico
SLD_BODY: incluye el archivo que define el nuevo estilo. Para cargarlo es necesario
codificar el texto XML de forma que pueda enviarse vía URL.
http://www.idee.es/BCN25-OWS/ogcwebservice?REQUEST=GetMap&VERSION=1.1.0&
SERVICE=WMS&SRS=EPSG:4326&BBOX=-5.93125,37.33968,-5.87504,37.3865&WIDTH=
1000&HEIGHT=833&FORMAT=image/gif&SLD_BODY=%3CStyledLayerDescriptor+version
%3D%221%2E0%2E0%22%0D%0Axmlns%3D%22http%3A%2F%2Fwww%2Eopengis%2
Enet%2Fsld%22%0D%0Axmlns%3Axlink%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%
2F1999%2Fxlink%22+xmlns%3Axsi%3D%22http%3A%2F%2Fwww%2Ew3%2Eorg%2F
Página 29
Capítulo 2 Marco Teórico
2001%2FXMLSchema%2Dinstance%22%0D%0Axsi%3AschemaLocation%3D%22http%3A
%2F%2Fschemas%2Eopengis%2Enet%2Fsld%2F1%2E0%2E0%2FStyledLayerDescriptor
%2Exsd%22+xmlns%3Ase%3D%22http%3A%2F%2Fwww%2Eopengis%2Enet%2Fse%22
+xmlns%3Abcn%3D%22http%3A%2F%2Fwww%2Eign%2Ees%2Fbcn25%22%3E+%0D%
0A%3CNamedLayer%3E%0D%0A%3CName%3EViaComunicacionLinea%3C%2FName%3
E%0D%0A%3CUserStyle%3E%0D%0A%3CFeatureTypeStyle%3E%0D%0A%3Cse%3A
FeatureTypeName%3Ebcn%3AViaComunicacionLinea%3C%2Fse%3AFeatureTypeName
%3E%0D%0A%3CRule%3E%0D%0A%3CLineSymbolizer%3E%0D%0A%3CStroke%3E%0
D%0A%3CCssParameter+name%3D%22stroke%22%3E%23aaaaff%3C%2FCssParameter
%3E%0D%0A%3CCssParameter+name%3D%22stroke%2Dwidth%22%3E5%2E0%3C%2F
CssParameter%3E%0D%0A%3C%2FStroke%3E%0D%0A%3C%2FLineSymbolizer%3E%
0D%0A%3C%2FRule%3E%0D%0A%3C%2FFeatureTypeStyle%3E%0D%0A%3C%2F
UserStyle%3E%0D%0A%3C%2FNamedLayer%3E%0D%0A%3C%2F
StyledLayerDescriptor%3E
El resultado de las peticiones anteriores es el mismo, lo que difiere es la forma de
solicitar el mapa. En la figura (2.12) se muestra el resultado de las peticiones
anteriores.
Figura 2.12. Resultado de una petición al WMS utilizando el parámetro SLD y SLD_BODY
Página 30
Capítulo 2 Marco Teórico
Por estas razones se define la especificación J2EE la cual permite diseñar y desarrollar
aplicaciones empresariales de manera rápida.
La especificación J2EE permite implementar aplicaciones empresariales usando Java y
tecnologías de Internet y define los siguientes componentes:
Los que se ejecutan en el cliente (clientes Web, applets y aplicaciones de escritorio).
Los que se ejecutan en el servidor (Java Servlets y JavaServlet Pages).
Componentes de negocio que se ejecutan en el servidor (Enterprise Java Beans).
Los componentes J2EE se escriben en lenguaje Java y se compilan de la misma manera que
cualquier programa. La diferencia entre componentes J2EE y clases Java estándar es que los
primeros son agrupados en una aplicación J2EE. Se verifica que estén bien formados y que
cumplan con la especificación J2EE y se despliegan en el servidor J2EE para ser controlados y
gestionados [ARMSTRONG, 2007].
Una aplicación J2EE no está atada a un producto o interfaz de programación de un fabricante
y puede constar de tres o cuatro niveles, como lo muestra la figura (2.13).
Página 31
Capítulo 2 Marco Teórico
El procesamiento del MVC se lleva a cabo entre los tres componentes. El controlador recibe
una orden y decide quién la lleva a cabo en el modelo. Una vez que el modelo termina sus
operaciones devuelve el flujo al controlador y éste envía el resultado a la capa de presentación
(vista).
En la figura (2.14) se ilustra la interacción entre el modelo, la vista y el controlador.
Página 32
Capítulo 2 Marco Teórico
Página 33
Capítulo 2 Marco Teórico
Página 34
Capítulo 2 Marco Teórico
Página 35
Capítulo 2 Marco Teórico
Página 36
CAPÍTULO 3
ANÁLISIS Y DISEÑO
En este capítulo se detalla el análisis y diseño realizado para desarrollar el sistema.
Para ello se presenta el documento de especificaciones y posteriormente los
diagramas de casos de uso, diagramas de actividad, diagramas de secuencia y
diagramas de clases.
Capítulo 3 Análisis y Diseño
3.1. ANÁLISIS
La obtención de los requisitos es parte de la fase de análisis del proceso de desarrollo de
software. Esta fase se vale de todo un proceso de descubrimiento, refinamiento, modelado y
especificación. Los requisitos son la descripción de los servicios proporcionados por el
sistema. En esta sección, se expone el documento de especificación de requerimientos y los
modelos (diagramas de casos de uso y diagramas de actividad) que se desarrollaron durante el
análisis de requisitos con la finalidad de comprender mejor el sistema que se desarrolló.
3.1.1.1. Ámbito
MapWeb Designer será una herramienta de software destinada a la generación de páginas
Web que contengan mapas de tipo vectorial dentro de un entorno que integre la estilización de
mapas geográficos con la publicación del mapa estilizado en la Web. Toda esta infraestructura
estará diseñada para su funcionamiento en la Web y constará de cinco módulos principales:
Control de usuarios.
Componentes para la estilización de los mapas.
Generación de código XML siguiendo el estándar SLD, el cual define la estilización de
los mapas.
Catálogo de plantillas Web.
Publicación de páginas Web.
Página 38
Capítulo 3 Análisis y Diseño
Página 39
Capítulo 3 Análisis y Diseño
CU-1 Registrar
Usuario
CU-2 Autentificar
Usuario
CU-5 Publicar
Aplicación Web
CU-6 Visualizar
Aplicación Web
Página 40
Capítulo 3 Análisis y Diseño
CU-1 Registrar
Usuario
Diseñador
Página 41
Capítulo 3 Análisis y Diseño
Notificar duplicación
de login
Notificar error
No Si
MapWeb Designer
Fin
CU-2 Autentificar
Usuario
Diseñador
Página 42
Capítulo 3 Análisis y Diseño
Inicio
Introducir Login
Diseñador
Rechazar ingreso al
Realizar la conexión
sistema
con la base de datos
MapWeb Designer
¿Base de No
datos
disponible?
No
Si
¿Login y Si Ingresar al
password sistema
Validar login y
correctos?
passw ord
Fin
Página 43
Capítulo 3 Análisis y Diseño
CU-3.1 Solicitar
Mapa
«include»
Diseñador
«include» «include»
CU-3.2 Aplicar
Estilos
Página 44
Capítulo 3 Análisis y Diseño
Inicio
Realizar petición
GetCapabilities al WMS
¿Catálogo No
de mapas
disponible?
MapWeb Designer
Si
Generar Código
Construir cadena de
XML
solicitud y env iar la
petición al WMS
Diseñador
Fin
Página 45
Capítulo 3 Análisis y Diseño
Inicio
Diseñador
se desea v isualizar solicitado
Si
Fin
Página 46
Capítulo 3 Análisis y Diseño
Página 47
Capítulo 3 Análisis y Diseño
Inicio
Seleccionar tipo de
Configurar propiedades
geometría a estilizar (punto,
Diseñador
de estilo
línea, polígono o texto)
No
¿WMS
responde
solicitud?
Si
Fin
Página 48
Capítulo 3 Análisis y Diseño
Inicio
Diseñador
Configurar opciones
de estilo Mostrar SLD
Notificar Error asociado al mapa
Procesar solicitud
GetMap
Fin
Diseñador
Página 49
Capítulo 3 Análisis y Diseño
Inicio
¿Catálogo No
de plantillas
visualizado?
Diseñador
Notificar Error
Si
Seleccionar Plantilla
No
MapWebDesigner
Si
Fin
Página 50
Capítulo 3 Análisis y Diseño
CU-5 Publicar
Aplicación Web
Diseñador
Inicio
MapWeb Designer
¿Archivos
Copiar Archiv os a Copiados Si
Contenedor Web Redirigir a página
Correctamente? publicada
No
Diseñador
Notificar Error
Fin
Figura 3.14. Diagrama de actividad del caso de uso Publicar Aplicación Web
Página 51
Capítulo 3 Análisis y Diseño
CU-6 Visualizar
Aplicación Web
Página 52
Capítulo 3 Análisis y Diseño
Inicio
Diseñador/Usuario
Introducir el path de la
Abrir Nav egador página Web publicada
en el nav egador
Notificar Error
MapWeb Designer
Si
¿Respuesta
Env iar petición GetMap del WMS
almacenada en la recibida?
aplicación publicada
Si
WMS
Procesar solicitud
GetMap
Fin
3.2. DISEÑO
En el proceso de ingeniería de software, una vez que se especifica y analizan los requisitos del
sistema se procede a realizar el diseño. En esta fase se toma en cuenta el análisis de requisitos
para poder describir de forma técnica el funcionamiento del sistema.
En la presente sección de diseño, se muestra el diseño arquitectónico que representa los
componentes con los que interactúa el sistema. Después se presentan los diagramas de clases
(para representar la estructura del sistema mostrando los atributos, métodos y relaciones) y
diagramas de secuencias (para mostrar las interacciones entre objetos). Finalmente para
describir la forma en que se organizan los datos que almacena el sistema, se expone el diseño
de la base de datos mediante el diagrama entidad relación.
3.2.1. Diseño arquitectónico
El proceso de diseño arquitectónico está relacionado con el establecimiento de un marco
estructural básico que identifica los principales componentes de un sistema y las
comunicaciones entre estos componentes. Hacer explícita la arquitectura del sistema en una
etapa temprana del desarrollo del sistema, requiere realizar algún análisis. [SOMMERVILLE,
2005]
De acuerdo a la descripción del problema de la tesis, se definió la arquitectura general del
sistema que muestra los componentes con los cuales interactúa. En la figura (3.17) se muestra
la arquitectura del sistema.
Página 53
Capítulo 3 Análisis y Diseño
3.2.1.1 Clientes
El cliente es la terminal de computadora desde la cual se solicita el servicio de la herramienta
MapWeb Designer por medio de peticiones HTTP. Por lo general quien solicitará el servicio
será un diseñador de aplicaciones Web. Los usuarios finales son quienes únicamente
visualizan la aplicación Web en Internet.
Página 54
Capítulo 3 Análisis y Diseño
petición GetMap al WMS para visualizar los mapas con los estilos aplicados por el
diseñador.
Petición GetFeatureInfo: la API visualizadora de mapas y el proxy que se implementó
en MapWeb Designer, permiten realizar la comunicación con el WMS para obtener
atributos asociados a los objetos punto, línea y polígono del mapa. Esto con el objetivo
de aplicar estilos a objetos específicos del mapa.
El desarrollo de la aplicación MapWeb Designer sigue la especificación J2EE y la
implementación del patrón MVC de Java, por lo que se programó la aplicación en Java
utilizando Struts [APACHE, 2008]. Siguiendo el patrón MVC en la figura (3.18) se
muestra cómo se organiza la aplicación.
Página 55
Capítulo 3 Análisis y Diseño
Página 56
Capítulo 3 Análisis y Diseño
La relación existente entre los paquetes anteriores es de dependencia (ver figura 3.19). El
paquete mx.edu.cenidet.MapWebDesigner.Acciones requiere invocar objetos del paquete
mx.edu.cenidet.MapWebDesigner.Vista para obtener datos provenientes de la interfaz de usuario y
posteriormente invocar objetos del paquete mx.edu.cenidet.MapWebDesigner.Modelo para procesar
los datos de mx.edu.cenidet.MapWebDesigner.Vista y devolver un resultado.
A continuación se describen las clases y diagramas de secuencias que se definieron para el
desarrollo del sistema. La simbología utilizada en los diagramas de secuencia se presenta en la
tabla (3.10).
Tabla 3.10. Simbología utilizada en diagramas de secuencias
DSec-Registrar_Usuario
NOMBRE SIMBOLO DESCRIPCION
Clase Representa los elementos de software, tales como pantallas, informes, formularios,
Frontera
reportes, páginas HTML, o sistema de interfaces que interactúan con los actores.
(Boundary)
sd DSec-Registrar_Usuario
Control Boundary También se denomina elementos de la interfaz.
Clase Representa un proceso de control. Coordina los eventos necesarios para llevar a cabo
Control sd DSec-Registrar_... el comportamiento que se especifica en el caso de uso.
Control Boundary
Actor sd DSec-Registrar_Usuario
Representa al usuario del sistema.
Actor
Clase
Clase Representa las clases del sistema.
Control Boundary
Página 57
Capítulo 3 Análisis y Diseño
org.apache.struts.action.ActionForm Action
Vista::RegistraUsuarioForm Acciones::RegistraUsuarioAction
Página 58
Capítulo 3 Análisis y Diseño
sd DSec-Registrar_Usuario
Direcciona getTxFnombre()
Conectar a
Instanciar modelo Base de
Datos
InicializarDatosConfiguracion(path)
Lee el archivo
PropiedadesBD.properties
para obtener los datos de
la conexión a la BD.
setArchivo(path)
Datos conexion :
bd,user,passwd
RealizaConexion(path)
El valor entero que
regresa la función
BuscaUsuarioDuplicado
getConexion() :Connection define lo siguiente:
1= Usuario duplicado
BuscaUsuarioDuplicado(login) :int 2= Usuario no duplicado
Ejecutar Query
encriptarPasswd :String
RegistraUsuarioenBD(String,String,String,String,String,String,String,String,String) :int
Ejecutar Query
CreaDirectorioWeb(login,path) :boolean
Mapear acción
Direcciona
Mostrar resultado Numero diferente de 4
Comparar estado :false
Direcciona
Mapear acción
Direcciona
Mostrar resultado
Página 59
Capítulo 3 Análisis y Diseño
MODELO
AutentificaUsuarioModelo: esta clase permite verificar que el login y password
proporcionados por el usuario correspondan a un registro de la base de datos del
sistema.
Los métodos correspondientes a esta clase son:
o desencriptarPasswd: este método permite descifrar el password almacenado en la
base de datos.
o esValido: este método invoca a desencriptarPasswd y después se conecta a la base
de datos por medio de una instancia a la clase conectaBD ( ver caso de uso
Registrar Usuario para la descripción de esta clase) y buscar que el usuario y la
contraseña introducidos coincidan con los datos registrados en la Base de datos.
class DC-AutentificaUsuario
org.apache.struts.action.ActionForm Action
Vista::AutentificaUsuarioForm Acciones::AutentificaUsuarioAction
+ AutentificaUsuarioForm()
+ getTxFpasswd() : String
+ getTxFusuario() : String Logica::AutentificaUsuarioModelo
+ reset(ActionMapping, HttpServletRequest) : void
+ setTxFpasswd(String) : void - conexion: Connection
+ setTxFusuario(String) : void - PasswdForma: String
+ validate(ActionMapping, HttpServletRequest) : ActionErrors - UsuarioForma: String
+ AutentificaUsuarioModelo()
BaseDatos::ConfiguraBD + desencriptarPasswd(String) : String
+ esValido(String, String, String) : int
- appRuta: String
- appServidor: String
- archivo: String
- bdNombre: String
BaseDatos::ConectaBD
- bdPassword: String
- bdPuerto: String - baseDatos: String
- bdServidor: String - conexion: Connection
- bdUsuario: String - password: String
- Configuracion: Properties - puerto: String
- messages: MessageResources = MessageResource... - servidor: String
- url: String
+ ConfiguraBD() - usuario: String
+ setArchivo(String) : void
«property get» + ConectaBD()
+ getbdNombre() : String + getConexion() : Connection
+ getbdPassword() : String + InicializarDatosConfiguracion(String) : void
+ getbdPuerto() : String + RealizaConexion(String) : Connection
+ getbdServidor() : String
+ getbdUsuario() : String
Página 60
Capítulo 3 Análisis y Diseño
sd DSec-Autentificar_Usuario
Direcciona
Mapear acción
Direcciona getTxFusuario()
getTxFpasswd()
Instanciar modelo
desencriptarPasswd(password) :String
Conectar a Base
de Datos
InicializarDatosConfiguracion(path)
Lee el archivo
PropiedadesBD.properties
para obtener los datos de
la conexión a la BD.
setArchivo(path)
Datos conexion :
bd,user,passwd
RealizaConexion(path)
getConexion() :
Connection
El valor entero que regresa la
esValido(login,password) :int función esValido define lo
Ejecutar Query siguiente:
4= login y password correctos
otro numero= ocurrió un error
4
Direcciona UsuarioVálido :true
Mapear acción
Direcciona
Mostrar resultado numero diferente de 4
UsuarioVálido :false
Direcciona
Mapear acción
Página 61
Capítulo 3 Análisis y Diseño
VISTA
RealizaPeticionGeoserverForm: esta clase se encarga de inicializar las variables
CapasSeleccionadas y srs con los datos introducidos en la interfaz de usuario.
CONTROL
PeticionGeoserverAction: esta clase invoca métodos de RealizaPeticionGeoserverForm
para recuperar el sistema de referencia y las capas seleccionadas por el usuario.
En la figura (3.24) se presenta el diagrama de secuencias y en la figura (3.25) se muestra el
diagrama de clases correspondientes al presente caso de uso.
sd DSec-SolicitarMapa
RealizaPeticionGeoserverForm PeticionGeoserverAction
Direcciona
Mapear acción
getSrs_seleccionado()
Direcciona getCapasSeleccionadas()
Direcciona
Mapear acción
Direcciona
Recupera SRS y
CapasSeleccionadas de
la sesión del usuario
Enviar Cadena
de Solicitud
Realizar Solicitud de Mapa
Procesa solicitud
Mostrar mapa
Mostrar resultado
org.apache.struts.action.ActionForm
org.apache.struts.action.Action
Vista::RealizaPeticionGeoserv erForm
Acciones::PeticionGeoserv erAction
- CapasSeleccionadas: String ([]) = null
- srs_seleccionado: String + execute(ActionMapping, ActionForm, HttpServletRequest, HttpServletResponse) : ActionForward
+ getSrs_seleccionado() : String
+ RealizaPeticionGeoserverForm()
+ reset(ActionMapping, HttpServletRequest) : void
+ setSrs_seleccionado(String) : void
+ validate(ActionMapping, HttpServletRequest) : ActionErrors
«property get»
+ getCapasSeleccionadas() : String[]
«property set»
+ setCapasSeleccionadas(String[]) : void
Página 62
Capítulo 3 Análisis y Diseño
3.2.2.3.2. Clases del caso de uso Aplicar Estilos y Generar Código XML
El objetivo de estos casos de uso es configurar componentes de estilo que permitan estilizar un
mapa previamente solicitado y generar el código SLD que represente la estilización
configurada.
En el caso particular del texto, para realizar su personalización se requiere conocer los
atributos del mapa y para ello es necesario realizar una petición GetFeatureInfo al WMS para
obtener esta información. Esta función es realizada por la clase Proxy que se encuentra en el
paquete mx.edu.cenidet.MapWebDesigner.Modelo.Proxy (En el capítulo de implementación se
describe a detalle la función de la clase).
Las clases involucradas en estos casos de uso son:
VISTA
creaSLDForm: esta clase se encarga de inicializar las variables correspondientes a la
configuración de estilo realizada por el usuario.
CONTROL
creaSLDAction: esta clase invoca métodos de las clases creaSLDForm y creaSLDModelo
para controlar el flujo de la información.
MODELO
creaSLDModelo: clase que contiene métodos para la creación de objetos que
corresponden al documento SLD.
CreaTagsSLDModelo: permite la creación de tags XML.
Para la creación del documento SLD se realizó el diseño en objetos del cual a partir de éste se
generaron las clases que permiten crear los objetos del SLD. En el anexo C se muestran estos
diagramas.
Página 63
Capítulo 3 Análisis y Diseño
Página 64
Capítulo 3 Análisis y Diseño
sd DSec-AplicarEstilos
setNombreCapa(String)
setTipogeometria(String)
Direcciona Se obtiene la
información de
Mapear acción las variables
inicializadas.
Direcciona getNombreCapa()
getTipogeometria()
Instanciar modelo
Construir objetos SLD
Enviar objetos
Construir documento SLD
Documento SLD
Documento SLD
Direcciona
Mapear acción
Direcciona
Enviar cadena
solicitud
Realizar solicitud de mapa con estilo creado
Procesa solicitud
Mostrar resultado
3.2.2.4. Clases del caso de uso Elegir Plantilla de Diseño y Publicar Aplicación Web
El objetivo de estos casos de uso es asociar el mapa estilizado a una plantilla de página Web
para publicarlo en la Web.
Las clases involucradas en estos casos de uso son:
VISTA
CatalogoPlantillasForm: esta clase implementa el método setPlantilla la cual se
encarga de inicializar la variable numPlantilla que se recibe de la interfaz de usuario.
Esta variable se encarga de identificar las plantillas disponibles con un número.
CONTROL
AsociarPlantillaAction: esta clase invoca métodos de CatalogoPlantillasForm y de
AsociaMapaPlantillaModelo.
MODELO
AsociaMapaPlantillaModelo: los principales métodos que implementa esta clase son:
Página 65
Capítulo 3 Análisis y Diseño
org.apache.struts.action.Action
Acciones::AsociarPlantillaAction
org.apache.struts.action.ActionForm Logica::AsociaMapaPlantillaModelo
Vista::CatalogoPlantillasForm
- conexion: Connection
- template: String ~ num: int = 0
Figura 3.28. Diagrama de clases de Elegir Plantilla de Diseño y Publicar Aplicación Web
sd DSec-ElegirPlantilladeDiseño
Direcciona setPlantilla(String)
Direcciona
Mapear accón
Direcciona
getPlantilla()
Instanciar modelo
AsociarMapaPlantilla(String,String[],String[],String[])
publicaPlantillaconMapa(String,String,String)
GuardaSLDenBD(String[] ,String,String,String,String,String,String)
path de publicación
Direcciona
Mapear acción
Direcciona
Mostrar resultado
Figura 3.29. Diagrama de secuencias Elegir Plantilla de Diseño y Publicar Aplicación Web
Página 66
Capítulo 3 Análisis y Diseño
respuestaServidor :200
respuestaServidor :500
El servidor no encuentra el recurso solicitado
USUARIO MAPA
idUser <pi> Serial <M> estiliza es estilizado idMapa <pi> Serial <M>
nombre Variable characters (254) nombreMapa Variable characters (254)
tiene
apPat Variable characters (254) bbox Variable characters (254)
apMat Variable characters (254) srs Integer
organizacion Variable characters (254) servidor Variable characters (254)
pais Variable characters (254) idMapa <pi>
email Variable characters (254)
nombrelogin Variable characters (254)
passwd Variable characters (254) contiene
idUser <pi>
ESTILO
idEstilo <pi> Serial <M>
nombreEstilo Variable characters (254)
pertenece
sld Text TIENE
idEstilo <pi>
Página 67
Capítulo 3 Análisis y Diseño
MAPA
USUARIO idMapa SERIAL <pk>
idUser SERIAL <pk> estiliza es estilizado idUser INT4 <fk>
nombre VARCHAR(254) nombreMapa VARCHAR(254)
FK_MAPA_TIENE_USUARIO
apPat VARCHAR(254) bbox VARCHAR(254)
apMat VARCHAR(254) srs INT4
organizacion VARCHAR(254) servidor VARCHAR(254)
pais VARCHAR(254)
email VARCHAR(254)
contiene
nombrelogin VARCHAR(254)
passwd VARCHAR(254)
ESTILO
idEstilo SERIAL <pk> pertenece
idMapa INT4 <fk>
FK_ESTILO_TIENE_MAPA
nombreEstilo VARCHAR(254)
sld TEXT
Página 68
CAPÍTULO 4
IMPLEMENTACION
En este capítulo se describen las clases implementadas que muestran la
funcionalidad del sistema.
Capítulo 4 Implementación
ConectaBD ConfiguraBD
Página 70
Capítulo 4 Implementación
pkg mx.edu.cenidet.MapWebDesigner.Modelo.Con...
ServletContextListener
ContextListenerCapas
{leaf}
+ contextDestroyed(ServletContextEvent) : void
+ contextInitialized(ServletContextEvent) : void
Capa
-CatalogoOrdenado LeeArchiv oXMLGetCapabilities
- capa: String = null
- CatalogoOrdenado: Capa ([])
- maxx: String = null
- misCapas: Collection
- maxy: String = null
- NumCapas: int = 0
- minx: String = null AsociaMapaPlantillaModelo
- miny: String = null
- conexion: Connection + contabiliza_srs(Capa[]) : Collection
- pathPublicacion: String = null
~ num: int = 0 + LeeArchivoXMLGetCapabilities()
- SLD: String = null
+ leeXML(String) : Collection
- srs: String = null
+ AsociarMapaPlantilla(String, String[], String[], String[]) : String + muestra_resultados(int, String[][]) : void
+ copia(String, String) : void + ordena_capas(int, Capa[]) : Capa[]
+ getCapa() : String
+ getMaxx() : String + copiarCSSaCarpetaUser(String, String) : boolean
+ getMaxy() : String + CreaDirectorioWeb(String, String) : boolean
+ getMinx() : String + crear_id(String) : int
+ getMiny() : String + GuardaSLDenBD(String[], String, String, String, String, String, String) : boolean
+ getPathPublicacion() : String + obtieneIDusuario(String, String) : int
+ getSrs() : String + obtieneProyectosUser(int, String) : Collection
+ setCapa(String) : void + publicaPlantillaconMapa(String, String, String) : String
+ setMaxx(String) : void + si_existeFile(String, String) : String
+ setMaxy(String) : void
+ setMinx(String) : void
+ setMiny(String) : void RegistraUsuarioModelo
AutentificaUsuarioModelo
+ setPathPublicacion(String) : void - conexion: Connection
+ setSrs(String) : void - conexion: Connection
- PasswdForma: String
«property get» + BuscaUsuarioDuplicado(String) : int
- UsuarioForma: String
+ getSLD() : String + CreaDirectorioWeb(String, String) : boolean
«property set» + crear_idUser() : int
+ AutentificaUsuarioModelo()
+ setSLD(String) : void + encriptarPasswd(String) : String
+ desencriptarPasswd(String) : String
+ RegistraUsuarioenBD(String, String, String, String, String, String, String, String, String) : int
+ esValido(String, String, String) : int
+ RegistraUsuarioModelo()
CreaSLDModelo
Página 71
Capítulo 4 Implementación
Se puede observar que las clases son independientes sin ninguna relación entre ellas. Esto
porque que realizan tareas distintas y por la forma en que se programó la aplicación (struts). A
continuación se describe cada clase.
Capa: clase utilizada como tipo de dato del Collection que almacena las capas devueltas
por el servidor de mapas.
LeeArchivoXMLGetCapabilities: contiene funciones que procesan el documento
GetCapabilities devuelto por el servidor de mapas. Utiliza la clase Capa como tipo de
dato de la colección que almacena las capas.
RegistraUsuarioModelo: implementa funciones que permiten registrar a los usuarios y
construir su correspondiente carpeta Web en la que se almacenarán sus publicaciones.
AutentificaUsuarioModelo: contiene funciones que permite verificar si el login y password
corresponden a un usuario almacenado en la base de datos.
AsociaMapaPlantillaModelo: contiene funciones que permiten asociar el mapa estilizado a
una plantilla de página Web y publicarla en la carpeta Web del usuario.
CreaSLDModelo:implementa funciones para la creación de objetos que corresponden a
los tags XML del documento SLD.
CreaTagsSLDModelo: contiene funciones sobrecargadas que permiten traducir los
objetos creados por CreaSLDModelo a tags XML.
4.4 Consulta de atributos del mapa
Para realizar la estilización del texto de objetos de un mapa, se requiere consultar los datos
asociados a ellos. Para ello se realiza una petición GetFeatureInfo al servidor de mapas con el
objetivo de abstraer esos datos. La abstracción de los datos se hace mediante un objeto AJAX
para mejorar la interacción de la aplicación.
Considerando que MapWeb Designer se ejecuta en el navegador y el servidor de mapas se
encuentra en un dominio externo ajeno al del contenedor Web que almacena la aplicación
MapWeb Designer. No es posible crear un objeto XMLHttpRequest que se comunique de
manera directa con el servidor de mapas (ver figura 4.4).
Página 72
Capítulo 4 Implementación
Partiendo de lo anterior se implementó la clase miProxy que recibe los objetos XMLHttpRequest
con la finalidad de obtener comunicación con el WMS de manera transparente. Esta clase se
implementó en el paquete mx.edu.cenidet.MapWebDesigner.Modelo.Proxy (ver figura 4.5).
pkg mx.edu.cenidet.MapWebDesigner.Modelo.Proxy
HttpServlet
miProxy
Página 73
Capítulo 4 Implementación
Página 74
CAPÍTULO 5
PRUEBAS
En este capítulo se presentan los resultados de las pruebas realizadas al sistema.
Capítulo 5 Pruebas
Una de las últimas fases del ciclo de vida del software antes de entregar un programa para su
explotación, es la fase de pruebas.
El proceso de pruebas es un esfuerzo por parte del proyecto para asegurar que el software no
tenga defectos. El plan de pruebas define el proceso, las estrategias y asigna los roles
primordiales en la ejecución de pruebas.
En el caso de MapWeb Designer las características que se probaron del sistema son las
siguientes:
Gestión de acceso al sistema: se probó que se realizara correctamente el registro de
usuarios del sistema así como el acceso y denegación al mismo.
Solicitud y visualización de mapas: se verificó que las solicitudes de mapas fueran
correctas y que se visualizaran los mapas solicitados en el visor de mapas de la
aplicación.
Aplicación de estilos al mapa: se probó que la configuración de estilos definidos por el
usuario y la generación del código XML correspondiente a la estilización del mapa se
realizaran correctamente.
Asociar mapa a plantilla de aplicación Web: se verificó que la plantilla Web elegida
del catálogo de plantillas fuera creada conteniendo el mapa estilizado
Publicación de la aplicación Web: se probó que los archivos necesarios para la
ejecución de la aplicación en la Web fueran copiados en el contenedor Web.
Visualización de la aplicación Web: se verificó la correcta ejecución y visualización de
la aplicación Web publicada.
Los casos de prueba que se presentan en este capítulo se encuentran descritos en el plan de
pruebas del anexo E.
Página 76
Capítulo 5 Pruebas
En la figura (5.3) se ilustra la interfaz que se le proporciona al usuario cuando no ocurre ningún error al
registrarse.
Página 77
Capítulo 5 Pruebas
Página 78
Capítulo 5 Pruebas
Página 79
Capítulo 5 Pruebas
Página 80
Capítulo 5 Pruebas
Página 81
Capítulo 5 Pruebas
Página 82
Capítulo 5 Pruebas
En la figura (5.12) se muestra la segunda prueba aplicada al sistema con un estilo punteado, de color
azul, con un nivel de transparencia de 1.0 y con un grosor de 2 puntos.
Página 83
Capítulo 5 Pruebas
En esta prueba se requirió aumentar la escala del mapa para poder apreciar el punteado de las líneas
Página 84
Capítulo 5 Pruebas
Página 85
Capítulo 5 Pruebas
Página 86
Capítulo 5 Pruebas
OBSERVACIONES:
Para cumplir con esta prueba se realizaron dos configuraciones de estilo: la primera contempló
una configuración utilizando “nombres bien conocidos” por la especificación SLD (ver
esquema XML de Mark en anexo D) y la segunda contempló la configuración de estilo puntual
utilizando símbolos gráficos (ver esquema XML de ExternalGraphic en anexo D ).
Para aplicar esta prueba se seleccionó el mapa de México.
RESPONSABLE DE LA PRUEBA: Janet de Jesús García Alba
Página 87
Capítulo 5 Pruebas
En la figura (5.18) se observa el mapa de México antes de estilizar el texto y en la figura (5.19) se
presenta el mapa de México con la aplicación del estilo textual definido en la configuración 1.
Página 88
Capítulo 5 Pruebas
En la figura (5.20) se observa el mapa de México antes de estilizar el texto y en la figura (5.21) se
presenta el mapa de México después de aplicar el estilo textual definido en la configuración 2.
Figura 5.21. Mapa de México que muestra el estilo de texto con rotación
Página 89
Capítulo 5 Pruebas
Página 90
Capítulo 5 Pruebas
En la figura (5.24) se muestra la vialidad de Cuernavaca a una escala mayor para apreciar mejor la
posición del texto
Página 91
Capítulo 5 Pruebas
OBSERVACIONES:
Para aplicar esta prueba se aplicó una configuración de estilo al mapa de México.
RESPONSABLE DE LA PRUEBA: Janet de Jesús García Alba
Página 92
Capítulo 5 Pruebas
Tabla 5.11. Caso de prueba MAPWEBDE-04 Asociar mapa a plantilla de página Web
CASO DE PRUEBA: MAPWEBDE-04 Asociar mapa a plantilla de página Web
RESULTADO: El sistema creó el código de la plantilla con el mapa asociado de forma satisfactoria.
En la figura (5.27) se muestra el valor de la variable tempText que almacena el código de la página que
contiene el mapa estilizado.
Figura 5.27. Variable tempText que contiene la plantilla de aplicación Web y el mapa solicitado
OBSERVACIONES:
En el debug realizado al sistema se pudo verificar que se creó el código de la plantilla con el
mapa asociado.
OBSERVACIONES:
Cada publicación que realiza un usuario se almacena en la carpeta Web personal.
RESPONSABLE DE LA PRUEBA: Janet de Jesús García Alba
Página 93
Capítulo 5 Pruebas
Página 94
Capítulo 5 Pruebas
Página 95
Capítulo 5 Pruebas
Si el usuario desea crear un nuevo proyecto se le proporciona el catálogo de mapas (ver figura 5.32).
En caso contrario si desea abrir un proyecto existente, se le proporciona la interfaz de la figura (5.41).
En la figura (5.32) se observa que el usuario eligió el mapa llamado Mexico:AliasMexico.
Página 96
Capítulo 5 Pruebas
En la figura (5.34) se observa el resultado de la configuración de estilo de tipo PUNTO realizada por el
usuario.
Página 97
Capítulo 5 Pruebas
En la figura (5.37) se muestra el resultado de la configuración tipo TEXTO realizada por el usuario.
Las configuraciones de estilo aplicadas al mapa de México se ven reflejadas en un documento XML
que sigue la especificación SLD. En la figura (5.38) se muestra una parte del documento.
Página 98
Capítulo 5 Pruebas
Figura 5.38. Documento XML que describe los estilos definidos por el usuario
Cuando el usuario termina de estilizar el mapa, el sistema le proporciona un catálogo de plantillas de
aplicaciones Web para que pueda publicarlo en la red. En la figura (5.39) se muestra las plantillas
disponibles en el sistema.
Una vez que el usuario elige la plantilla procede a asociar el mapa y publicarlo en la Web. En la figura
(5.40) se muestra el mapa publicado.
Página 99
Capítulo 5 Pruebas
Página 100
Capítulo 5 Pruebas
Página 101
Capítulo 5 Pruebas
Página 102
CAPÍTULO 6
CONCLUSIONES
En este capítulo se exponen las conclusiones a las que se llegaron al desarrollar el
presente proyecto de tesis. Se mencionan también las aportaciones y trabajos
futuros.
Capítulo 6 Conclusiones
Página 104
Capítulo 6 Conclusiones
Aportaciones
Las aportaciones del presente trabajo de tesis son:
Haber programado una aplicación Web estilizadora y publicadora de mapas
geográficos que hasta el momento no se encuentra en el mercado. Esta aplicación
genera de manera automática un archivo SLD que describe los estilos aplicados a un
mapa en particular. Está programada siguiendo el patrón MVC de Java (Struts) con la
finalidad de reducir costos de depuración y pruebas. Además fue desarrollada
utilizando exclusivamente software libre
Se contribuyó con la investigación de tecnologías geográficas las cuales son
importantes de conocer para todo aquél que desee trabajar con información espacial.
Se programó un proxy que permite acceder a los atributos de un mapa. Este proxy se
implementó en un servlet el cual aporta más ventajas que el CGI que sugiere
OpenLayers.
Trabajos futuros
El presente trabajo cumplió con el objetivo de estilizar y publicar mapas geográficos a través
de la Web. Sin embargo se le pueden incluir más servicios que convendría en un futuro se
pudieran implementar:
Implementar filtros avanzados mediante la incorporación de la especificación Filter
Encoding para poder definir reglas de estilo que afecten de manera individual a cada
característica del mapa. Con esto se obtendría un mapa estilizado con simbologías
complejas.
Creación de interfaces que permitan realizar consultas georeferenciables y no
georeferenciables sobre el mapa para poder encontrar puntos de interés cercanos a una
ubicación.
Creación de mecanismos para la búsqueda de rutas óptimas.
Generación de código que permita introducir los mapas estilizados en forma de Widget
a cualquier página personal.
Incorporación de componentes que permitan dibujar objetos sobre los mapas
visualizados.
Implementar la funcionalidad de almacenar los estilos definidos por el usuario al
servidor.
Página 105
Capítulo 6 Conclusiones
Página 106
ANEXOS
ANEXOS
Página 108
ANEXO A
Evaluación de APIs visoras de mapas
Anexo A. Evaluación de APIs visoras de mapas
1. Introducción
El presente documento reporta la evaluación de APIs visoras de mapas las cuales permiten visualizar
mapas provenientes de servidores de mapas.
El objetivo de esta actividad fue elegir la API que se integrará en el sistema MapWeb Designer.
Para cumplir con el objetivo se instalaron las APIs y se realizaron pruebas de solicitud de mapas a
servidores.
Para visualizar un mapa en msCross es necesario tener instalado MapServer o bien conocer la
ruta de los servidores MapServer externos para hacer la petición. Una vez cumpliendo este
requisito se siguen los siguientes pasos:
1. Crear un documento HTML o JSP e incluir la librería msCross (ver figura A.1).
Página 110
Anexo A. Evaluación de APIs visoras de mapas
Página 111
Anexo A. Evaluación de APIs visoras de mapas
No requiere instalación.
Soporta WMS, WFS, WFS-T, SLD del la OGC.
En su versión más reciente (versión 2.6) incorpora características muy potentes que mejoran la
interacción con el usuario. Estas mejoras son: soporta reproyección del lado del cliente; soporta
la lectura y escritura de varias versiones de WMC; y el paneo de las capas comerciales lo hace
como Google Maps y Yahoo Maps; (The OpenLayers Team, 2008).
A continuación se ejemplifica la solicitud de un mapa por medio de OpenLayers.
La solicitud de mapas utilizando OpenLayers se realiza de la siguiente manera:
1. Crear un documento HTML o JSP e incluir la librería OpenLayers.js (ver figura A.4).
2. En una función crear un objeto tipo mapa con opciones de configuración (por ejemplo:
sistema de referencia y extensión territorial). Al objeto mapa se le asignarán las capas
que se deseen (ver figura A.5).
4. Añadir la solicitud anterior al objeto mapa creado en el paso 2 (ver figura A.7).
Página 112
Anexo A. Evaluación de APIs visoras de mapas
Página 113
Anexo A. Evaluación de APIs visoras de mapas
Ka-Map es un API creada para visualizar mapas de UMN MapServer. Este servidor se encarga
del tratamiento, programación y generación de mapas en el cual una serie de scripts PHP
proporcionados por Ka-Map gestionan las respuestas de MapServer. Ka-Map por su parte,
proporciona un API en JavaScript para realizar las peticiones de datos desde una variedad de
navegadores (ver tabla A.1).
Página 114
Anexo A. Evaluación de APIs visoras de mapas
Es una librería inspirada por Ka-Map y la API de Google Maps. Visualiza mapas provenientes
de servidores MapServer y Geoserver. Además utiliza Prototype.js el cual es utilizado para
crear aplicaciones web dinámicas.
Página 115
Anexo A. Evaluación de APIs visoras de mapas
La documentación que presenta en su sitio es nula pues únicamente muestra cinco ejemplos de
solicitudes de mapas y las funciones del API no están documentadas.
2. En el documento HTML ó JSP, según sea el caso, definir un elemento DIV con un
identificador (en este caso map) para indicar que en ése lugar del documento será
mostrado el mapa (ver figura A.13).
3. Definir una función llamada init() en el que se definirá el objeto mapa para que éste
invoque la capa definida anteriormente (ver figura A.14).
4. Finalmente invocar la función init() en el evento onload del elemento body (ver figura
A.15).
Página 116
Anexo A. Evaluación de APIs visoras de mapas
2.5.Mapbuilder
MapBuilder permite añadir mapas dinámicos e información de muchas otras fuentes para un
sitio Web. La filosofía de diseño de MapBuilder es minimizar los requisitos del servidor, pero
para una aplicación Web es necesario un servidor Web para servir las páginas como mínimo.
MapBuilder es una librería JavaScript que implementa el patrón de diseño Modelo-Vista-
Controlador (MVC). Los objetos Modelo, Vista y Controlador que se utilizarán en la página
Web se configura en un archivo XML. [MAPBUILDER, 2007]
Las principales características son [HONCEVAR, 2007]:
● Cliente ligero de cartografía.
● Soporta estándares del Open Geospatial Consortium (OGC).
● Dibuja mapas provenientes de Web Map Services (WMS), Web Feature Services
(WFS), GeoRSS y Google Maps.
● Soporta funciones de edición de mapas mediante el uso de Web Features Services
(WFS-T).
● Permite a los usuarios construir sus propios mapas, guardarlos y compartirlos
utilizando Web Map Context (WMC, Solo soportado para mapas proporcionados por
un WMS) y Open Web Services Context (OWS Context es similar a WMC sólo que
puede almacenar más capas WMS. Las capas pueden provenir de WMS, WFS, GML,
GeoRSS y posiblemente fuentes externas).
● Es rápido e interactivo pues fue construido usando AJAX.
● Funciona con la mayoría de los navegadores modernos (Firefox 1.0+, Internet
Explorer 6.0+, Mozilla 1.3+, Navigator 6+)
● Personalizable y fácil de extender.
● De código abierto bajo la licencia LGPL.
Página 117
Anexo A. Evaluación de APIs visoras de mapas
● No requiere plugins.
En su versión más reciente (versión 1.5) incorpora OpenLayers para la renderización de los
mapas. Esto debido a que en septiembre de 2006 durante el FOSS4G (Free and Open Source
Software for Geospatial) varios proyectos de WebMapping se reunieron y decidieron en una
sola biblioteca para renderizar mapas. Como consecuencia de ello MapBuilder sustituye su
biblioteca MapPane.js y MapPane2.js por MapPaneOL.js.
Para visualizar mapas utilizando la API Mapbuilder se siguen los siguientes pasos:
1. En un archivo HMTL o JSP se incluye la librería Mapbuilder.js (ver figura A.17).
2. Posteriormente se crea un elemento DIV con identificador (en este caso se usó
mainMapPane ) y en el evento onload de la etiqueta body se manda llamar la función
mbDoLoad() la cual es una función de Mapbuilder que se encarga de abrir y leer el
archivo de configuración (en el paso 3 se describe el archivo de configuración) . Este
archivo se referencía asignando la URL a la variable mbConfigUrl (ver figura A.18).
Página 118
Anexo A. Evaluación de APIs visoras de mapas
Página 119
Anexo A. Evaluación de APIs visoras de mapas
Página 120
Anexo A. Evaluación de APIs visoras de mapas
3. Evaluar cada API de acuerdo a los criterios que se definieron en el paso 1. La forma de evaluar
cada característica es asignar una calificación del 1 al 10 de acuerdo a que tanto cumple con los
requerimientos (ver tabla A.4) y si se desea se pueden incluir observaciones en cada asignación
de calificación.
Tabla A.4. Asignación de calificaciones a cada API de acuerdo a los criterios
API-1 API-2
CRITERIOS PESO CALIFICACIÓN CALIFICACIÓN
Característica 1 5 10 1
Característica 2 3 5 4
Característica N 1 8 2
10: más importante, 1: menos importante
4. Obtener el producto de cada una de las características y ponderaciones asignadas a las mismas
para obtener un subtotal (ver tabla A.5).
Tabla A.5. Obtención de productos por criterio
API 1 API 2
CRITERIOS PESO
Calific. Subtotal Califiic. Subtotal
Característica 1 5 10 50 1 5
Característica 2 3 5 15 4 12
Característica N 1 8 8 2 2
5. Realizar la sumatoria por API de los subtotales obtenidos en el paso 4 (ver tabla A.6).
Tabla A.6. Obtención de sumatorias por API
API 1 API 2
CRITERIOS PESO
Calific. Subtotal Califiic. Subtotal
Característica 1 5 10 50 1 5
Característica 2 3 5 15 4 12
Característica N 1 8 8 2 2
TOTAL - 73 19
6. Comparar los resultados del paso 5 y elegir la API que más puntaje tenga (ver figura A.23).
Página 121
Anexo A. Evaluación de APIs visoras de mapas
Página 122
Anexo A. Evaluación de APIs visoras de mapas
Gráfica de resultados
300
250
250
230
200
181
150 168 171
100
50
0
msCross OpenLayers Ka-Map WMS Mapbuilder
JavaScript
Library
Página 123
Anexo A
Permite bajar el
Permite bajar el Permite bajar el Permite bajar el Permite bajar el
Código abierto 5 10 código del API en 50 10 50 10 50 10 50 10 50
código del API código del API código del API código del API
su sitio Web
Codificado en Está escrito en Está escrito en Está escrito en Java Está escrito en Está escrito en
5 10 50 10 50 5 25 10 50 10 50
Java JavaScript JavaScript y PHP JavaScript JavaScript
C: calificación
S: subtotal
Obser: observaciones
Página 124
ANEXO B
Evaluación de Servidores de Mapas
Anexo B. Evaluación de servidores de mapas
1. Introducción
El presente documento reporta la evaluación de los servidores de mapas disponibles de manera
gratuita. Para realizar la evaluación se instalaron cada uno de los servidores y se valoró en base a cinco
criterios con un peso determinado a cada uno.
Los servidores que se analizaron fueron: Degree; Geoserver y MapServer. A continuación se describe
cada servidor de mapas.
Degree es un servidor Framework de Java que se puede desplegar sobre cualquier servidor que
cumpla la especificación J2EE. Destaca por su elevado número de especificaciones OGC e ISO
Technical Committee 211 – Geographic Information/Geoinformation (ISO/TC 211) que afirma
cumplir.
Los formatos vectoriales, ráster y conexiones a bases de datos que soporta son:
PostgreSQL/PostGIS, Oracle, bases de datos que permiten conexiones JDBC, ESRI Shapefiles,
GML2, JPEG, GIF, PNG, TIFF, GeoTiff.
Alrededor de este servidor se han ido desarrollando otros proyectos complementarios como
Degree iGeoPortal, Degree iGeoSecurity, Degree iGeo3D, deeJUMP. [DEGREE, 2008]
Degree se instala con conjuntos de datos muestra, todos esos datos se extraen automáticamente
cuando se desempaqueta el demo de Degree WMS.
Para mostrar uno de los mapas predeterminados en Degree se realiza la siguiente petición
HTTP GET:
http://localhost:8080/deegree-
wms/services?REQUEST=GetMap&SERVICE=WMS&VERSION=1.1.1&WIDTH=603&HE
IGHT=476&LAYERS=Vegetation,Lake,Roads&TRANSPARENT=TRUE&FORMAT=image
/png&BBOX=372233.9342431239,4460438,489069,4552689&SRS=EPSG:26912&STYLES
=default,default,default
Página 126
Anexo B. Evaluación de servidores de mapas
Es usado en conjunción con clientes tales como OpenLayers para páginas Web, Google Earth,
Udig, GVSig y otros. El uso de estándares permite que la información de Geoserver pueda ser
fácilmente combinada con otros datos geográficos.
Página 127
Anexo B. Evaluación de servidores de mapas
2. Iniciar sesión en el sistema con nombre de usuario= admin y contraseña= geoserver (ver
figura B.3).
4. Dar clic en Espacios de nombres y en la página resultante dar clic en Nuevo (ver figura
B.5).
Página 128
Anexo B. Evaluación de servidores de mapas
6. Verificar que el espacio de nombres se haya creado como lo muestra la figura (B.7) y
pulsar aplicar y guardar para hacer efectivos los cambios en el servidor.
Página 129
Anexo B. Evaluación de servidores de mapas
8. En el Editor del almacén de datos se ingresa el espacio de nombres Mexico, la URL donde
se encuentra el archivo Shape que se desea publicar, en este caso se ingresa
file:data/janet/States_region.shp, el cual corresponde a el path C:/Program
Files/GeoServer 1.6.2/data_dir/data/janet. En la carpeta data de Geoserver, se copian los
archivos Shape que se desean visualizar. Finalmente se da clic en Enviar (ver figura B.9).
9. Al dar clic en Enviar se abre el Editor de entidades. En él se ingresa el alias del mapa, en
este caso ingresamos AliasMexico, se ingresa el Estilo que se desea aplicar a el mapa, en
este caso se crea un nuevo estilo llamado States_Region_Style. Se indica el sistema de
referencia a trabajar. En nuestro caso es 4326 el cual es el identificador del sistema de
referencia WGS84. Se da clic en el botón Generar para crear las longitudes máximas y
mínimas en las que se visualizará el mapa. Finalmente se da clic en Enviar. Y se verifica
en Entidades que se haya agregado correctamente la entidad (ver figura B.10).
Página 130
Anexo B. Evaluación de servidores de mapas
Página 131
Anexo B. Evaluación de servidores de mapas
Página 132
Anexo B. Evaluación de servidores de mapas
Como ejecutable CGI. Se trata de un ejecutable que puede ser invocado desde páginas
Web para generar de forma dinámica imágenes.
Como biblioteca (MapScript). La necesidad de realizar tareas específicas en el lado del
servidor obligó a publicar las funcionalidades en este servidor en diferentes lenguajes
de programación (PHP, Python, Perl, Ruby, Java y C#) para poder realizar tareas con
un alto contenido dinámico.
Generalmente funciona como una aplicación CGI (CGI es una norma para establecer
comunicación entre un servidor Web y un programa, de modo que el programa pueda
interactuar en internet) y corre dentro de un servidor http.
Página 133
Anexo B. Evaluación de servidores de mapas
SHAPEPATH Esta es la ruta en la que se localizan los archivos Shapefile que se desean visualizar.
Este es el color de fondo del mapa, los valores son RGB y valores como 255 Red, 255 Green y 255 Blue resultan en un
IMAGECOLOR
fondo de color blanco.
Marca el inicio de un objeto LAYER dentro de un objeto MAP. En MapServer se puede especificar los layers que se
LAYER deseen y el límite de capas (se proporcionan 100 por default). Para modificar el límite de capas a visualizar se requiere
recompilar el CGI Map Server.
NAME Este es el identificador del nombre de cada uno de los layers especificados.
El nombre del dato (Shapefile en este caso). Map Server soporta formatos vectoriales y otros Shapefiles que ESRI usa
DATA
de ORG library (parte del GDAL software).
Se usa para especificar el tipo de dato que se va a visualizar el cual puede ser: POLYGON; LINE o POINT para
TYPE
formatos vectoriales.
Los layers pueden ser colocados en ON u OFF basados en su STATUS. DEFAULT es siempre en ON o visible. ON u
STATUS
OFF funciona cuando el nombre del LAYER es pasado como parte del parámetro del query string.
Marca el inicio de un objeto CLASS dentro de un objeto LAYER. Se pueden especificar muchas clases en un layer y
CLASS
por default se permiten 50. Para cambiar este valor se requiere recompilar el CGI Map Server.
Este es el color de relleno del polígono. En caso de que el TYPE sea LINE, este es el color de línea. Los valores son en
COLOR
formato RGB.
OUTLINECOLOR Este es el color de línea de salida de los polígonos. Este valor esta dado en RGB.
CLASSITEM Esta palabra clave es usada para especificar que atributos se usan para separar un objeto de la clase.
Por cada clase, se requiere especificar qué valores de atributos se utilizan. Esta es la forma simple del valor
EXPRESSION
EXPRESSION. EXPRESSION puede ser más complejo incluso que esto.
Aquí se especifica la ruta completa de el archivo truetype fontlist (lista de fuentes). Este archivo lista cada una de las
FONSET
fuentes disponibles.
LABELITEM Este especifica que atributos de datos se usa para el etiquetado. LABELITEM es un parámetro del objeto LAYER.
Marca el inicio del objeto LABEL. El objeto label puede ser usado bajo otros objetos (Ejemplo: El objeto
LABEL
SCALEBAR).
COLOR En el objeto LABEL, COLOR especifica el control de etiqueta de texto.
Especifica el tamaño de la sombra. El valor correspondiente para las variables X e Y en pixeles. Para “2 2” quiere decir
SHADOWSIZE
dos pixeles de ancho y dos pixeles de alto.
En el objeto LABEL, TYPE especifica qué tipo de fuente se va a usar. Es posible escoger entre TRUETYPE o Bitmap
TYPE
(el constructor en fuentes).
Si se especifica TYPE como TRUETYPE, éste necesita especificar qué fuente usará. El valor de esta es el “alias” en el
FONT
archivo de lista de fuentes.
SIZE Si se usan fuentes truetype, el valor del tamaño es en pixeles. Si es bitmap, se puede escribir “small” o “large”.
Indica la posición de la etiqueta de texto con relación a los puntos de label. Los valores son una combinación de
posiciones verticales y horizontales. Se puede elegir para una alineación vertical: C para el centro, L para la izquierda y
POSITION
R para la derecha. Para la alineación de la etiqueta de texto en el centro del label ID se debe usar el valor “CC” (center-
center). O si se quiere por abajo del ID se debe usar el “LL”.
En la figura (B.13) se ilustra el archivo MAP utilizado para publicar el mapa de México en
MapServer.
Página 134
Anexo B. Evaluación de servidores de mapas
Una vez que se configura el archivo .map se procede a crear el archivo de inicialización. Este
archivo mandará los parámetros a MapServer. El archivo de inicialización del archivo
MAPFILE mostrado en la figura anterior se ilustra en la figura (B.14).
Página 135
Anexo B. Evaluación de servidores de mapas
1. Definir criterios de evaluación, es decir, qué características debe cumplir el servidor de mapas
para utilizarlo como proveedor de mapas en el proyecto (ver tabla B.2).
3. Evaluar cada servidor de acuerdo a los criterios que se definieron en el paso 1. La forma de
evaluar cada característica es asignar una calificación del 1 al 10 de acuerdo a que tanto
cumple con los requerimientos (ver tabla B.4) y si se desea se pueden incluir observaciones en
cada asignación de calificación.
Página 136
Anexo B. Evaluación de servidores de mapas
Tabla B.4. Asignación de calificaciones a cada servidor de mapas de acuerdo a los criterios
WMS-1 WMS-2
CRITERIOS PESO CALIFICACIÓN CALIFICACIÓN
Característica 1 5 10 1
Característica 2 3 5 4
Característica N 1 8 2
10: más importante, 1: menos importante
5. Realizar la sumatoria por servidor de los subtotales obtenidos en el paso 4 (ver tabla B.6).
Tabla B.6. Obtención de sumatorias por WMS
WMS-1 WMS- 2
CRITERIOS PESO
Calific. Subtotal Califiic. Subtotal
Característica 1 5 10 50 1 5
Característica 2 3 5 15 4 12
Característica N 1 8 8 2 2
TOTAL - 73 19
6. Comparar los resultados del paso 5 y elegir el servidor de mapas que mayor puntaje tenga (ver
figura B.16).
Página 137
Anexo B. Evaluación de servidores de mapas
Para elegir el servidor de mapas que se usará en el proyecto, se definieron los siguientes criterios a
evaluar:
Código abierto: el servidor de mapas debe de tener disponible su código fuente para tener total
libertad de utilizarlo y modificarlo en caso de que se requiera.
Fácil de instalar y manejar: se requiere que el servidor de mapas sea sencillo de manejar para
no invertir mucho tiempo en la instalación y manipulación del servidor.
Codificado en JAVA: el servidor de mapas debe estar codificado en Java para cumplir con las
especificaciones del proyecto de tesis.
Implementar las especificaciones de la OGC: el servidor de mapas debe cumplir con
especificaciones OGC en especial WMS, WFS y SLD ya que la estandarización aporta
beneficios en términos de migración de datos.
Soportar el formato Shapefile: el servidor de mapas a elegir debe ser capaz de visualizar
archivos vectoriales (shp) ya que es el formato en el que se basa el proyecto de tesis.
Paso 2. Asignación de ponderaciones
De acuerdo al nivel de importancia que tienen los criterios mencionados en el paso 1, se asignan los
siguientes pesos:
Página 138
Anexo B. Evaluación de servidores de mapas
P
DEGREE GEOSERVER MAPSERVER
E
CRITERIOS
S
C Observaciones S C Observaciones S C Observaciones S
O
Se puede descargar el código en Es posible descargar el código fuente Permite descargar el código fuente
Código abierto 5 10 50 10 50 10 50
un archivo.jar de la página oficial. de la página oficial.
Implementar las Implementa una amplia gama de Cumple con varias especificaciones y Cumple con varias
especificaciones 5 10 especificaciones entre ellas están 50 10 entre ellas se encuentran WMS, WFS 50 10 especificaciones y entre ellas se 50
OGC WMS, WFS y SLD y SLD encuentran WMS, WFS y SLD
C: calificación
S: subtotal
Página 139
Anexo B. Evaluación de servidores de mapas
De los servidores de mapas analizados, Geoserver es el servidor que implementa las especificaciones
OGC que se requieren en el proyecto y permite publicar los mapas por medio de interfaces gráficas,
por lo que resulta sencilla su manipulación.
Por otro lado Degree y Mapserver no cumplen con la característica de facilidad de manejo, esto debido
a que se requiere codificar manualmente los archivos necesarios para la publicación de un mapa.
Por lo tanto, como el objetivo de la tesis no se enfoca en la profundización del funcionamiento de los
servidores de mapas, Geoserver es la mejor alternativa de servidor para publicar mapas en la Web.
Gráfica de resultados
250
200 220
180
150 160
100
50
0
DEGREE GEOSERVER MAPSERVER
Página 140
ANEXO C
Diseño de objetos para el documento SLD
Anexo C. Diseño de objetos para el documento SLD
UserStyle
- Name : java.lang.String
- Title : java.lang.String
- Abstracts : java.lang.String 1..1
- IsDefault : boolean
1..1
1..*
SymbolizerType
{abstract}
Label
Halo
- Label : java.lang.String
- Radius : float
0..1 + <<Getter>> getLabel () : java.lang.String
+ <<Getter>> getRadius () : float + <<Setter>> setLabel (java.lang.String newLabel) : void
+ <<Setter>> setRadius (float newRadius) : void
1..1
1..1 0..1
LabelPlacement
1..1 1..1 1..1 1..1 1..1 1..1
1..1 1..1
0..1
1..1 0..1
ExpressionType Stroke 0..1
0..1
{abstract}
1..1 1..1 LinePlacement
- expression : java.lang.String PointPlacement 1..1
1..1 - Rotation : float 1..1
+ <<Getter>> getExpression () : java.lang.String
+ <<Setter>> setExpression (java.lang.String newExpression) : void 0..1 + <<Getter>> getRotation () : float
+ <<Setter>> setRotation (float newRotation) : void
0..1 0..1
0..*
CssParameter Font
0..* 0..1
- name : java.lang.String
1..1
- valor : java.lang.String
+ <<Getter>> getName () : java.lang.String
+ <<Setter>> setName (java.lang.String newName) : void
0..1 0..1
+ <<Getter>> getValor () : java.lang.String
+ <<Setter>> setValor (java.lang.String newValor) : void
GraphicStroke
Graphic
0..1
- Opacity : java.lang.String 0..1 0..*
- Size : java.lang.String
- Rotation : java.lang.String 0..1
0..1
+ <<Getter>> getOpacity () : java.lang.String
+ <<Setter>> setOpacity (java.lang.String newOpacity) : void Fill
0..1
+ <<Getter>> getSize () : java.lang.String 1..1
+ <<Setter>> setSize (java.lang.String newSize) : void
+ <<Getter>> getRotation () : java.lang.String 0..1
1..1
+ <<Setter>> setRotation (java.lang.String newRotation) : void
0..1
1..1 1..1 1..1
Mark
1..1
- WellKnownName : java.lang.String
0..*
+ <<Getter>> getWellKnownName () : java.lang.String
0..* + <<Setter>> setWellKnownName (java.lang.String newWellKnownName) : void
ExternalGraphic SimpleLink
- OnlineResource : SimpleLink - type : java.lang.String = simple
- Format : java.lang.String - href : java.lang.String
+ <<Getter>> getOnlineResource () : SimpleLink + <<Getter>> getType () : java.lang.String
+ <<Setter>> setOnlineResource (SimpleLink newOnlineResource) : void + <<Setter>> setType (java.lang.String newType) : void
+ <<Getter>> getFormat () : java.lang.String + <<Getter>> getHref () : java.lang.String
+ <<Setter>> setFormat (java.lang.String newFormat) : void + <<Setter>> setHref (java.lang.String newHref) : void
Página 142
Anexo C. Diseño de objetos para el documento SLD
class SLD
+font +label
Halo Mark
PolygonSymbolizer LineSymbolizer PointSymbolizer
+ fill: Fill + fill: Fill
- radius: float + stroke: Stroke + fill: Fill + geometry: Geometry + geometry: Geometry
- wellKnownName: java.lang.String + geometry: Geometry + stroke: Stroke + graphic: Graphic
+ getRadius() : float + stroke: Stroke
+ setRadius(float) : void + getWellKnownName() : java.lang.String
+ setWellKnownName(java.lang.String) : void
+halo
TextSymbolizer
+ fill: Fill
+ font: Font
+ geometry: Geometry SymbolizerType
+ halo: Halo
+ label: Label
+ labelPlacement: LabelPlacement
Página 143
Anexo C. Diseño de objetos para el documento SLD
Página 144
ANEXO D
Síntesis de la Especificación SLD
-Styled Layer Descriptor Versión 1.0.0-
Anexo D. Síntesis de la especificación SLD
1. Introducción
La presente especificación describe de manera general el esquema del lenguaje de estilizado de mapas
para producir mapas geográficos con estilos definidos por el usuario.
2. Especificación SLD
Styled Layer Descriptor (SLD por sus siglas en inglés) es un lenguaje XML para personalizar la
apariencia de un mapa. Tiene una estructura propia, formado por el elemento principal
StyledLayerDescriptor el cual contiene una secuencia de definiciones de estilo para los mapas.
En la figura (D.1) se puede apreciar que la cabecera está formada por los elementos NamedLayer
y UserLayer. El atributo version es utilizado para indicar la versión del documento SLD. Por
ejemplo un documento SLD basado en la presente especificación debería tener la cadena “1.0.0”
asignada en el atributo version.
Es importante tener en cuenta que el orden en que aparezcan las capas en el documento SLD será
el orden en que se dibujen.
Página 146
Anexo D. Síntesis de la especificación SLD
2.3 UserLayers
Un WMS utiliza el parámetro STYLES para especificar el estilo relativo a las capas LAYERS,
por ejemplo:
LAYERS=carreteras, ríos, casas
STYLES=Centerline, Centerline, Outline
El esquema XML para el elemento UserLayers se presenta en la figura (D.3):
Página 147
Anexo D. Síntesis de la especificación SLD
Página 148
Anexo D. Síntesis de la especificación SLD
Los Named Styles no pueden ser usados con capas definidas por el usuario. Sólo estilos definidos
por el usuario (UserStyles) pueden ser usados en capas definidas por el usuario (UserLayers)
En la figura (D.6) se presenta el ejemplo de un SLD que usa capas definidas por el usuario:
2.4 UserStyles
UserStyle especifica el estilo creado por el usuario. La definición del esquema se presenta en la
figura (D.7).
Página 149
Anexo D. Síntesis de la especificación SLD
UserStyle está formado por los elementos Name, Title, Abstract,IsDefault, FeatureTypeStyle.
Name, Title y Abstract son opcionales. Name se usa para llamar al estilo externamente cuando un
SLD se almacena dentro de un WMS, Title es una descripción corta para el estilo y Abstract es
una descripción más extensa. El elemento IsDefault identifica si un estilo es el estilo por defecto
para una capa (Se usa 1 para verdadero y 0 para falso).
A continuación en la figura (D.8) se muestra un ejemplo incompleto de un estilo definido por el
usuario utilizando un NamedLayer.
2.5 FeatureTypeStyles
Los FeatureTypeStyles definen el estilo que se va a aplicar a un tipo de entidad de una capa. Un
UserStyle puede contener uno o más elementos de éste. El esquema XML se muestra en la figura
(D.9):
FeatureTypeStyles está formado por los elementos Name, Title, Abstract, FeatureTypeName,
SemanticTypeIdentifier y Rule. FeatureTypeName: identifica el tipo de entidad específica para el
FeatureTypeStyle que se ha definido. SemanticTypeIdentifier es experimental e identifica que
estilo de entidad es conveniente para ser usada por muchos tipos de entidades. Es un string
indefinido pero se definen los siguientes valores: “generic:line”, ”generic:polygon”,
”generic:point”, ”generic:text”, ”generic:raster” y “generic:any”.
Página 150
Anexo D. Síntesis de la especificación SLD
Un elemento FeatureTypeStyle contiene una o más elementos Rule. El elemento Rules identifica
las reglas a cumplir por FeatureTypeStyle.
2.6 Rules
Describe las reglas a cumplir para el dibujo de los elementos según la escala de los mapas y las
características de los elementos. El esquema XML para el elemento Rule se muestra en la figura
(D.10).
El elemento Rule está formado por los elementos Name, Title, Abstract, LegendGraphic, Filter,
ElseFilter, MinScaleDenominator, MaxScaleDenominator, LineSimbolizer, PoligonSymbolizer,
PointSymbolizer, TextSymbolizer y RasterSymbolizer.
Las Rules deben localizarse en orden de “prioridad” dentro de UserStyle (las más importantes
primero). Title y Abstract son elementos que dan un título corto de la regla para aparecer en una
lista y una descripción de la misma. Name permite referenciar externamente la regla.
El elemento LegendGraphic contiene el símbolo Graphic para luego ser mostrado en la leyenda.
El esquema XML de este elemento se presenta en la figura (D.11):
Página 151
Anexo D. Síntesis de la especificación SLD
Filter y ElseFilter permiten la selección de entidades según condiciones definidas por sus
atributos. Filter permite tanto filtrar espacialmente como por atributos. Los filtros se ejecutan en
el orden que van apareciendo. ElseFilter permite definir reglas que son activadas para entidades
que no se ven afectadas por otra regla. En la figura (D.13) se muestra un ejemplo del uso de Filter
y ElseFilter:
El ejemplo anterior describe que todas las entidades en la capa se van a dibujar, las que tienen
atributo igual a 1 se dibujarán en rojo y las restantes en gris.
2.7 Simbolización
Está localizada dentro de la definición de las “Reglas” y describe cómo van a aparecer las
entidades en el mapa (forma, color, etc.). Se define según el tipo y tienen sus parámetros
asociados. Los tipos de simbolización son: Línea, Polígono, Punto, Texto y Ráster.
Página 152
Anexo D. Síntesis de la especificación SLD
El elemento Stroke (Borde) es opcional. Todas las clases de simbolización pueden contener este
elemento. Si no se define entonces no se dibuja. Su esquema SLD se presenta en la figura (D.17).
Página 153
Anexo D. Síntesis de la especificación SLD
Página 154
Anexo D. Síntesis de la especificación SLD
Ejemplo: Capa con todas las entidades del tipo río que se van a mostrar con líneas azules de 2
píxeles de ancho. En la figura (D.21) se muestra una sección del documento SLD que describe la
configuración de estilo mencionada anteriormente y en la figura (D 22) se presenta el resultado al
aplicar el estilo definido en la figura (D.21).
Primero se dibuja el relleno (fill) y después el borde (stroke) encima. PolygonSymbolizer está
formado por los elementos Geometry, Fill, Stroke.
Fill (Relleno) se define como lo muestra la figura (D.24):
Página 155
Anexo D. Síntesis de la especificación SLD
Existen dos tipos de relleno: color sólido y GraphicFill (patrón repetido). Por su lado,
CssParameters define parámetros referidos al relleno: Fill ( relleno) y Fill-Opacity ( nivel de
transparencia). Por defecto el valor del relleno (Fill) es gris (“#808080”).
Ejemplo: Tipo de entidad Lago que se desea representar con relleno azul claro y su borde con una
línea en azul oscuro. En la figura (D.25) se muestra las líneas XML que describen la
configuración anterior. Y en la figura (D.26) se presenta el resultado al aplicar la configuración de
estilo presentada en la figura (D.25).
Página 156
Anexo D. Síntesis de la especificación SLD
Está formada por los elementos Geometry, Graphic. Si se utiliza una geometría tipo línea,
polígono o Ráster entonces se usa el centroide de la geometría.
Graphic (Gráfico) es el símbolo (vector o Ráster) utilizado con un relleno, color y tamaño. El
símbolo puede proceder de una URL externa o se puede especificar características del mismo. Si
no se especifica ni ExternalGraphic ni Mark entonces por defecto se aplica un cuadrado de un
relleno de gris y línea de contorno de ancho 6 píxeles y color negra. El esquema XML se presenta
en la figura (D.28).
Página 157
Anexo D. Síntesis de la especificación SLD
Página 158
Anexo D. Síntesis de la especificación SLD
2.11 Textos
La simbolización TextSymbolizer es utilizada para definir el estilo de las etiquetas textuales. En la
figura (D.32) se muestra la definición del esquema XML.
Está formada por los elementos Geometry, Label, Font, LabelPlacement, Halo y Fill. El tipo de
geometría es punto o línea y necesita el elemento LabelPlacement (localización etiqueta).El
elemento Label (etiqueta) hace referencia al contenido de la etiqueta. Se define como:
Página 159
Anexo D. Síntesis de la especificación SLD
Donde los elementos AnchorPointX y AnchorPointY toman valores entre 0.0 (esquina inferior
izquierda) y1.0 (esquina superior derecha). Por defecto se tienen los valores de x=0, y= 0.5.
La figura (D.36) muestra las posiciones de la etiqueta con respecto a los valores que se le asignen
al elemento AnchorPoint.
Página 160
Anexo D. Síntesis de la especificación SLD
(x=0, y=0.5) DEFAULT – la etiqueta se localiza a (x=0.5, y=0.5) – el centro de la etiqueta se localiza
la derecha del punto sobre el punto
(x=1, y=0.5) – la etiqueta se localiza a la izquierda (x=0.5, y=0) – la etiqueta se localiza centrada encima
del punto del punto
Página 161
Anexo D. Síntesis de la especificación SLD
PerpendicularOffset=0 PerpendicularOffset=10
El elemento Halo (halo) define el tipo de relleno que se aplica al fondo de la fuente. Se define
como se muestra en la figura (D.37):
Página 162
Anexo D. Síntesis de la especificación SLD
Página 163
Anexo D. Síntesis de la especificación SLD
Página 164
ANEXO E
Plan de Pruebas
Anexo E. Plan de pruebas
1. Introducción
El presente documento expone el plan de pruebas basado en el estándar 829 de la IEEE
utilizado para pruebas de software. Este plan permite evaluar el sistema MapWeb Designer.
[IEEE 1998].
El sistema a probar es una herramienta creadora de prototipos de aplicaciones Web que
contienen mapas estilizados por el usuario (diseñador).
Los módulos que se desarrollaron son:
Gestión de acceso al sistema.
Solicitud y visualización de mapas.
Aplicación de estilos al mapa.
Generación de plantilla de aplicación Web con la asociación del mapa estilizado.
Publicación del prototipo de aplicación Web.
Visualización del prototipo de aplicación Web publicado.
La hipótesis nula a probar es la siguiente:
Con herramientas editoras y visualizadoras de mapas vectoriales, no es posible
publicar aplicaciones Web y aplicar estilos a los mapas definidos por el usuario a
través de la Web.
La hipótesis alterna es:
Con una herramienta Web es posible visualizar y estilizar mapas vectoriales aplicando
estilos definidos por el usuario (diseñador). Además es posible publicar un prototipo
de aplicación Web con el mapa estilizado.
El presente documento se encuentra organizado de la siguiente manera:
Identificador del plan de pruebas: describe la forma en que se identificaron las pruebas.
Descripción del plan de pruebas: se hace una descripción general de las características
que se probaron; se definen los criterios necesarios para aprobar, suspender o reanudar
una prueba; se mencionan las tareas necesarias y las condiciones ambientales para
aplicar las pruebas.
Casos de prueba: expone los grupos y subgrupos de los casos prueba.
Procedimiento de pruebas: describe los pasos realizados para ejecutar las pruebas.
Página 166
Anexo E. Plan de pruebas
Página 167
Anexo E. Plan de pruebas
Página 168
Anexo E. Plan de pruebas
3.10. Responsabilidades
La autora de esta tesis tuvo la responsabilidad de efectuar todas las pruebas que se
especificaron.
4. Casos de prueba
4.1. Pruebas a realizar
La tabla E.4 expone los casos de prueba de cada uno de los elementos de prueba mencionados
anteriormente.
Cada caso de prueba está identificado por el número asignado al elemento de prueba seguido
de un número consecutivo:
Página 169
Anexo E. Plan de pruebas
5. Procedimiento de pruebas
En esta sección se presenta la descripción de cada caso de prueba. Para cada uno de los casos
de prueba se describe el propósito del caso de prueba, el entorno necesario para la ejecución
de la prueba, el procedimiento que se llevó a cabo para efectuar la prueba y los resultados que
se esperaron.
5.1. MAPWEBDE-01 Gestión de acceso al sistema
Propósito
Verificar que los usuarios se registren e ingresen satisfactoriamente al sistema. En el
caso de usuarios no registrados o de introducir incorrectamente el nombre de usuario
(login) o el password, el sistema rechazará el acceso al mismo.
Entorno
Para la ejecución de los casos de prueba contenidos en este grupo se utilizarán los
siguientes elementos:
Equipo servidor en el que estará almacenada la aplicación MapWeb Designer y
la base de datos.
Equipo cliente el cual ejecutará la aplicación Web MapWeb Designer desde un
navegador Web.
Nombre de usuario (login).
Contraseña.
Datos del usuario (en caso del registro de usuarios).
Resultado esperado
El usuario se registrará en la base de datos y se le proporcionará el ingreso o rechazo al
sistema.
Página 170
Anexo E. Plan de pruebas
Página 171
Anexo E. Plan de pruebas
Entorno
El usuario debe de ingresar el login y contraseña en la página correspondiente al inicio
de sesión.
Proceso
1. Ingresar el nombre de usuario (login).
2. Ingresar contraseña.
3. Pulsar el botón “iniciar sesión”.
Resultado esperado
Si el usuario aún no está registrado e ingresa datos de login y contraseña, el sistema
deberá rechazar el ingreso. En caso de que un usuario registrado ingrese login o
contraseña incorrectos el sistema también rechazará su acceso.
Página 172
Anexo E. Plan de pruebas
Proceso
1. Ingresar al sistema.
2. Elegir Nuevo Proyecto.
3. Seleccionar el mapa a visualizar.
4. Enviar solicitud a WMS.
5. Esperar la respuesta del WMS.
Resultado esperado
El mapa solicitado se visualizará en el visor de mapas de la aplicación.
Página 173
Anexo E. Plan de pruebas
Página 174
Anexo E. Plan de pruebas
Entorno
El usuario debe estar autentificado en el sistema y haber visualizado el mapa solicitado
en el visor de mapas de la aplicación.
Proceso
1. Elegir tipo de geometría texto para indicar que se van a asignar propiedades de
estilo a texto relacionado con el mapa.
2. Dar clic sobre cualquier objeto del mapa para obtener los nombres de las
etiquetas asociadas al mapa.
3. Configurar las opciones de estilo según las necesidades del usuario.
4. Aplicar el estilo al mapa visualizado.
Resultado esperado
Los objetos tipo texto mostrados en el mapa deben de cambiar de apariencia de
acuerdo a la configuración realizada por el usuario.
Página 175
Anexo E. Plan de pruebas
Página 176
Referencias
REFERENCIAS
[ADSENSE, 2008] Google AdSense. Información acerca de AdSense. [En línea]
https://www.google.com/adsense/login/es/?hl=es&gsessionid=CUFlUhiS
L9-aVYqx3weFrg. Consultado en Diciembre 2008
[ARMSTRONG, 2007] Armstrong Eric, et al, 2007. The J2EE 1.4 Tutorial. Página 44. Sun Java
System Application Server Platform Edition 8.2. [En línea]
http://java.sun.com/j2ee/1.4/docs/tutorial/doc/J2EETutorial.pdf.
Consultado en Octubre 2008.
[BRISABOA, 2007] Brisaboa Nieves R., et al , sf. Definición e implementación de un servicio
Web de mapas activos. Universidad de Coruña.
[CARMONA, 2007] Carmona Álvaro, Monsalve Jhon. Sistemas de Información Geográficos.
[En línea] http://www.monografias.com/trabajos/gis/gis.shtml. Consultado
en Marzo de 2007
[CLICK2MAP 2008] Click2Map, 2008. Click2Map, a new way to build your Google Maps. [En
línea] http://www.click2map.com/. Consultado en Agosto 2008.
[CRANE, 2006] Crane Dave, Pascarello Eric with Darren James. Ajax in action
MANNING. Greenwich. 2006 Págs. 4, 17-27, 32.
[CSGRIP, 2008] Consejo Superior Geográfico, 2008.Infraestructura de Datos Espaciales
de España. Rincón del Programador. [En línea]
http://www.idee.es/show.do?to=pideep_ejemplosOGC.ES. Consultado en
Febrero 2008.
[CSGWMS, 2008] Consejo Superior Geográfico, Infraestructura de Datos Espaciales de
España, 2008. Web Map Service 1.3.0. [En línea]
http://www.idee.es/show.do?to=pidee_programador_wms.ES.
Consultado en Febrero 2008.
[DATACROSSING, 2007] DataCrossing, 2007. msCross: AJAX (WEB 2.0) WEB GIS Client. [En
línea] http://datacrossing.crs4.it/en_Documentation_mscross.html.
Consultado el 9 de Abril de 2008.
[DEGREE, 2008] Degree, 2008. Some bits of history first. [En línea]
http://deegree.sourceforge.net/inf/about.html. Consultado en Marzo 2008.
[DESIGE, 2008] Département des Sciences Géomatiques. Qu'est-ce que la géomatique. [En
línea] http://www.scg.ulaval.ca/page.php?nom=geomatique. Consultado
en Diciembre 2008
[DIGECA, 2008] Dirección General del Catastro, 2008. Servicio WMS de Ponencias de
valores. [En línea] http://www.catastro.meh.es/pdf/wms_ponencias.pdf.
Consultado en Febrero 2008.
[EDNEW, 2009]. Educación Newton. Sistema de referencia. [En línea]
http://newton.cnice.mec.es/escenas/cinematica/sist_ref.php. Consultado en
Enero 2009.
Página 177
Referencias
[EGUILUZ, 2008] Eguíluz Pérez Javier, 2008. Introducción a JavaScript. [En línea]
http://www.librosweb.es/javascript/pdf/introduccion_javascript.pdf.
Consultado en Octubre 2008.
[ESRI, 2008] Sitio oficial ESRI. ESRI GIS and Mapping Software. [En línea],
http://www.esri.com/. Consultado en Noviembre de 2008
[FERNANDEZ, 2004] Fernández Hernán Darío, 2004. Introducción al Framework Web de
Jakarta Struts con WSAD 5.1, Colombia.
[GEORSS, 2007] Sitio oficial GeoRSS. Geographycally Encoded Objects for RSS feeds,
[En línea] http://www.georss.org/1#intro. Consultado en Octubre 2007.
[GEOSERVER, 2008] Página oficial de Geoserver, 2008. Geoserver Home, What is Geoserver.
[En línea] http://geoserver.org/display/GEOS/GeoServer+Home.
Consultado en Marzo 2008.
[GEOSERVERFEA, 2008] Página oficial de Geoserver, 2008. Features, Geoserver Features. [En
línea] http://geoserver.org/display/GEOS/Features. Consultado en Marzo
2008.
[GOOGLEMAPS, 2007] Google Maps, 2007. Sitio oficial de Google Maps.[En línea]
http://www.google.com/apis/maps/. Consultado en 18 de Abril de 2007
[GUTIERREZ, 2000] Gutiérrez Rodríguez Abraham; Martínez González Raúl. XML a través de
ejemplos. Alfaomega Ra-Ma
[HONCEVAR, 2007] Honcevar, Andreas, 2007. About Mapbuilder. [En línea]
http://communitymapbuilder.org/. Consultado en abril de 2008
[IEEE, 1998] IEEE,1998. Software Engineering Technical Committee of the IEEE
Computer Society. IEEE Standard for Software Test Documentation. [En
línea] http://www.ucsc.cl/~marciam/weblog/images/ieeestd829-
1998standardtest_documentation.pdf. Consultado en Octubre 2007
[LATLON, 2008] Lat/lon, Universidad de Bonn, 2008. Degree Web Map Service v.2.1,
Departamento de Geografía de la Universidad de Bonn.
[LBSPRO, 2007] LBSPRO, 2007. Sistema de información geográfico. [En línea]
http://wiki.lbspro.com/index.php?title=Sistema_de_Informaci%C3%B3n_
Geogr%C3%A1fico. Consultado el 9 de marzo de 2007.
[LEARNER, 2003] "Cartography." World of Earth Science. Eds. K. Lee Lerner and Brenda
Wilmoth Lerner. Vol. 1. Detroit: Gale, 2003. Págs. 95-96.
[LEWOTSKY, 2004] Lewotsky, Karen. "Cartography." Gale Encyclopedia of Science. Eds. K.
Lee Lerner and Brenda Lerner. Vol. 1. 3rd ed. Detroit: Gale, 2004. Págs.
742-748.
[LOPEZ, 2006] López Romero Emilio, F. Rodríguez Antonio, 2006. IDEE.
Recomendaciones para la creación y configuración de servicios de
mapas. Consejo Superior Geográfico. Pág. 7.
[MAP24 2008] Map24, 2008. Map24 México. [En línea] http://www.mx.map24.com/.
Consultado en Agosto 2008.
Página 178
Referencias
Página 179
Referencias
Página 180