FACULTADE DE INFORM ´ ATICA
PROYECTO FIN DE CARRERA
INGENIER´IA T´ ECNICA EN INFORM ´ ATICA DE GESTI ´ ON
Herramienta de an´ alisis de redes en un sistema de informaci´ on geogr´ afica
Autor: Miguel ´Alvarez ´Ubeda Director: Carlos G´omez Rodr´ıguez Tutor: Miguel ´Angel Rodr´ıguez Luaces Fecha: A Coru˜na, 17 de Enero de 2008
Clase del Proyecto: Proyecto Cl´asico de Ingenier´ıa
Autor: Miguel ´Alvarez ´Ubeda Director: Carlos G´omez Rodr´ıguez
Tutor: Miguel ´Angel Rodr´ıguez Luaces Fecha: A Coru˜na, 17 de Enero de 2008
Tribunal
Miembros del tribunal:
Calificaci´on:
Cada d´ıa est´an m´as en auge los Sistemas de Informaci´on Geogr´afica (GIS) debi- do al avance de las tecnolog´ıas. Una herramienta GIS que esta adquiriendo muchos adeptos en los ´ultimos a˜nos es gvSIG por ser multiplataforma y desarrollado como software libre por iniciativa de la Generalitat Valenciana, a trav´es de la Conseller´ıa de Infraestructuras y en ´el participan la Universidad Jaume I realizando las tareas de supervisi´on, con el objetivo de que el desarrollo siga todos los est´andares internacio- nales (Open GIS Consortium), e IVER Tecnolog´ıas de la Informaci´on S.A, empresa que lleva el peso del desarrollo.
En este contexto, y motivado por la ausencia de la importante funcionalidad de an´alisis de redes y c´alculo de rutas, se plantea el objetivo de realizar una extensi´on para la aplicaci´on de visualizaci´on de informaci´on geogr´afica gvSIG.
La extensi´on deber´a ser capaz de hallar un camino continuo entre dos puntos (si existe) y pintarlo sobre el mapa junto con un informe detallado de la ruta seguida (por ejemplo, un desglose de las carreteras por las que pasa).
Para realizar el calculo de la ruta se implementar´an en la extensi´on varios al- goritmos (A*, IDA*, Dijkstra, Uniform Cost, Greedy Search, Hill Climbing, Beam Search, Depth First Search, Breadth First Search) que pueden ser utilizados con fines did´acticos pudiendo el usuario crear, “jugar” y resolver sus propios grafos de manera visual.
A mayores se ha realizado un comparador de algoritmos con el que valorar los diferentes algoritmos en tiempo, bondad del resultado, y porcentaje de ´exito obte- nido visualizables de forma gr´afica, con el que se ha realizado un estudio estad´ıstico exhaustivo a nivel te´orico y emp´ırico.
ii Se har´a un especial ´enfasis en que la aplicaci´on sea f´acil de usar (por medio de un asistente y un manual con el que resolver todo tipo de dudas), r´apida y manejable y cuidando otros aspectos relevantes como la calidad de las numerosas im´agenes utilizadas.
Sobre la tecnolog´ıa empleada en este proyecto, ha sido Eclipse y Java para el desa- rrollo, PostgreSQL como motor de base de datos sobre la cual se emplea un m´odulo PostGIS que a˜nade soporte para objetos geogr´aficos y WinEdt y LATEX para la redacci´on de la memoria. Adem´as se han empleado programas espec´ıficos c´omo es JProfiler para optimizar el rendimiento de la extensi´on y Photoshop para la edici´on de im´agenes.
Palabras clave
GvSIG, Rutas, Grafo, An´alisis de redes, Inteligencia Artificial, Geograf´ıa, Algoritmos de b´usqueda.
A mi padre, por ense˜narme c´omo llegar hasta aqu´ı.
A mi madre, por mostrarme c´omo llegar a´un m´as lejos.
A mi tutor Miguel ´Angel Rodr´ıguez Luaces y a Carlos G´omez Rodr´ıguez, director de este proyecto, por resolverme dudas y prestarme parte de su valioso tiempo. Ambos me han hecho disfrutar del trabajo bien hecho y motivarme cuando me quedaba estancado.
A Ana, por hacerme tan feliz.
A Susana, H´ector, Alberto, Manuel, Tamara, Quique, Berto, Silvia, Paulo, Adriana, Marta, compa˜neros de pr´acticas, y un largo etc´etera (perdonarme si me olvido de alguien) por hacerme pasar tantos buenos ratos, dentro y fuera de la Facultad, con esas cenas y fiestas coru˜nesas.
A ´Angel Rodr´ıguez Fern´andez que desarrollo un fant´astico trabajo previamen- te, que me facilit´o documentaci´on muy ´util para entender el dominio. Adem´as no me puedo olvidar de Nacho y H´ector que colaboraron d´andome ideas desde el principio e interesarse por el proyecto aportando as´ı su granito de arena.
¡Mil gracias!
A tantas personas que trabajan en la facultad que nos hacen la vida m´as f´acil como los profesores, bibliotecarios, t´ecnicos, limpiadoras... Sin ellos ser´ıa m´as complicada nuestra tarea de aprender y casi nunca se les suele valorar lo suficiente.
A la m´aquina de caf´e, que me he debido haber tomado haciendo este proyecto.
1. Introducci´on 1
1.1. Motivaci´on. . . 1
1.2. Objetivos . . . 6
1.3. Estructura de la memoria . . . 6
2. Conceptos previos y herramientas utilizadas 9 2.1. Sistemas de informaci´on geogr´afica (SIG) . . . 9
2.1.1. Modelos de representaci´on . . . 12
2.1.2. Flujo de trabajo en un SIG . . . 14
2.1.3. Fuentes de error en los SIG . . . 15
2.1.4. Aplicaciones generales de los SIG . . . 16
2.2. Bases de datos en un SIG . . . 18
2.2.1. PostgreSQL . . . 22
2.2.2. PostGIS . . . 23
2.3. GvSIG . . . 24
2.4. Paradigma de la orientaci´on a objetos . . . 26
2.4.1. Caracter´ısticas de la POO . . . 28
2.5. Grafos . . . 30
2.5.1. Definiciones . . . 30
2.5.2. Caracterizaci´on de los Grafos . . . 32
2.6. Rutas . . . 34
2.7. Herramientas de desarrollo . . . 37
3. Aplicaciones similares 39 3.1. Proyecto Sextante . . . 39
3.2. Piloto de redes de gvSIG . . . 40
3.3. Google Earth & Google Maps . . . 40
4. Planificaci´on y evaluaci´on de costes 43 4.1. Consideraciones previas. . . 43
4.2. Planificaci´on inicial . . . 44
4.2.1. Estimaci´on de costes . . . 45
4.2.2. Estimaci´on previa. . . 46
4.3. Seguimiento . . . 47
5. Metodolog´ıa 51
´INDICE GENERAL vi
5.1. Definici´on de MPR . . . 51
5.2. Representaci´on gr´afica de MPR . . . 52
5.3. Descripci´on detallada de las fases . . . 53
6. An´alisis 57 6.1. Captura de requisitos . . . 57
6.1.1. Prototipado . . . 58
6.2. Definici´on de especificaciones. . . 60
6.3. Casos de uso. . . 62
7. Dise˜no 65 7.1. Contexto . . . 65
7.2. Dise˜no conceptual . . . 71
7.2.1. Patr´on Model-View-Controller . . . 72
7.2.2. DAO (Data Access Object) . . . 74
7.2.3. TO (Transfer Object). . . 76
7.2.4. Patr´on Factory . . . 76
7.2.5. Patr´on Singleton . . . 77
7.3. Estructura de la aplicaci´on . . . 78
7.3.1. Controlador . . . 78
7.3.2. Modelo. . . 78
7.3.3. Vista . . . 83
8. Implementaci´on 85 8.1. Eclipse . . . 85
8.2. Algoritmos. . . 87
8.2.1. A* . . . 88
8.2.2. IDA* . . . 91
8.2.3. Dijkstra . . . 92
8.2.4. Uniform Cost (B´usqueda de coste uniforme) . . . 94
8.2.5. Greedy Search (B´usqueda voraz) . . . 95
8.2.6. Hill Climbing 1 (B´usqueda ascensi´on de colinas) . . . 96
8.2.7. Hill Climbing 2 . . . 97
8.2.8. Beam Search . . . 98
8.2.9. Depth First Search (DFS) . . . 100
8.2.10. Breadth First Search (BFS) . . . 101
8.3. Librer´ıas empleadas . . . 102
8.3.1. JTS Topology Suite . . . 102
8.3.2. iText . . . 104
8.3.3. JFreeChart . . . 105
8.3.4. JSearchDemo . . . 105
8.4. Datos de entrada . . . 106
8.4.1. Fichero XML de gvSIG . . . 106
8.4.2. Fichero properties. . . 109
8.4.3. Tablas generadas en la base de datos . . . 110
9. Pruebas 117
9.1. Pruebas unitarias . . . 117
9.2. Pruebas de integraci´on . . . 119
9.3. Pruebas de rendimiento. . . 119
9.4. Pruebas de stress . . . 121
9.5. Pruebas de aceptaci´on . . . 121
10.Resultados y rendimiento 123 10.1. C´omo funciona . . . 123
10.1.1. Consultas SQL . . . 123
10.1.2. El proceso de troceado . . . 124
10.1.3. El proceso de resoluci´on . . . 136
10.1.4. El proceso de comparaci´on algoritmos . . . 146
10.2. Resultados obtenidos . . . 149
10.3. Rendimiento . . . 169
11.S´ıntesis del trabajo 171 11.1. Conclusiones . . . 171
11.2. L´ıneas de trabajo futuras . . . 173
Bibliograf´ıa 175 A. Manual de usuario 177 A.1. Requisitos del sistema . . . 178
A.2. Instalaci´on . . . 178
A.2.1. PostgreSQL & PostGis . . . 179
A.2.2. GvSIG . . . 190
A.3. Extensi´on an´alisis de redes . . . 201
A.4. Ejecuci´on . . . 202
A.5. Utilizaci´on . . . 203
A.5.1. GvSIG . . . 203
A.5.2. Men´u developer . . . 206
A.5.3. Consultas SQL . . . 207
A.5.4. Configurar . . . 208
A.5.5. Crear Red . . . 210
A.5.6. Listar Redes . . . 211
A.5.7. A˜nadir Arcos . . . 212
A.5.8. A˜nadir Nodos . . . 213
A.5.9. Trocear Grafo . . . 214
A.5.10. Paradas . . . 215
A.5.11. A˜nadir Paradas . . . 216
A.5.12. Calcular Ruta . . . 217
A.5.13. Informe . . . 222
A.5.14. Capa sobre gvSIG. . . 224
A.5.15. Comparador Algoritmos . . . 225
A.5.16. Mensajes. . . 227
´INDICE GENERAL viii
A.5.17. Guardar PDF . . . 228
A.5.18. Estad´ısticas . . . 229
A.5.19. Estad´ısticas comparaci´on . . . 230
A.5.20. Estad´ısticas ruta . . . 235
A.5.21. Asistente. . . 238
B. The GNU General Public License 243
C. Glosario 245
D. Contenido del DVD 253
1.1. Mapamundo de Delisle (versi´on de 1707). . . 3
1.2. Mapa-mundi en la actualidad. . . 4
1.3. Mapa GIS 3D. . . 5
2.1. Definici´on SIG . . . 10
2.2. SIG como sistema . . . 11
2.3. Diferencias entre raster y vectorial . . . 12
2.4. Flujo de trabajo . . . 15
2.5. Aplicaciones de un GIS . . . 18
2.6. Tipos de geometr´ıas OGC . . . 21
2.7. Men´u principal de gvSIG . . . 25
2.8. Tipos de aristas de grafos. . . 31
2.9. Diferencias entre grafo conexo y no conexo . . . 33
2.10. Grafos completos . . . 33
2.11. Ejemplo de grafo . . . 34
2.12. Red ejemplo . . . 34
2.13. Arbol de la red ejemplo: Notaci´´ on sin costes . . . 35
2.14. Arbol de la red ejemplo: Notaci´´ on costes . . . 35
2.15. Arbol de la red ejemplo: Heur´ıstica´ . . . 36
3.1. Google Earth . . . 41
3.2. Google Maps. . . 42
4.1. Diagrama de Gantt: Estimaci´on inicial . . . 46
4.2. Diagrama de Gantt: Estimaci´on real. . . 48
5.1. Metodolog´ıa Prototipado R´apido. . . 52
6.1. El paradigma de construcci´on de prototipos . . . 58
6.2. Prototipo Consultas SQL . . . 60
6.3. Requisitos usuario . . . 60
6.4. Diagrama de casos de uso . . . 62
7.1. Estructura interna de gvSIG . . . 65
7.2. Estructura de GvSig desde el punto de vista del desarrollador. . . . 67
7.3. Diagrama de clases: FLyrVect . . . 68
7.4. Diagrama de clases: Capas . . . 69
7.5. Diagrama de clases: IGeometry . . . 70
´INDICE DE FIGURAS x
7.6. Diagrama MVC: Clases Alto Nivel. . . 74
7.7. Patr´on Factory . . . 76
7.8. Diagrama de clases: GeometriaFactory . . . 79
7.9. Diagrama de clases: Algoritmos de Inteligencia Artificial. . . 80
7.10. Diagrama de clases: Valor . . . 80
7.11. Diagrama de estados: Troceador de la red . . . 81
7.12. Diagrama de secuencia: Resoluci´on Grafo de Ruta . . . 82
7.13. Dise˜no de interfaz: Ejemplo edici´on con Visual Editor . . . 83
8.1. Entorno de desarrollo Eclipse. . . 86
8.2. Par´ametros complejidad ´arbol . . . 87
8.3. Similitud A* con breadth-first . . . 88
8.4. Explicaci´on funcionamiento A*. . . 89
8.5. A* b´usqueda en el ´arbol . . . 89
8.6. A* ejemplo de finalizaci´on . . . 90
8.7. Recorrido del algoritmo de Dijkstra . . . 92
8.8. Greedy Search . . . 95
8.9. Hill climbing 1 . . . 96
8.10. Hill climbing 2 . . . 97
8.11. Beam search 1 . . . 98
8.12. Beam search 2 . . . 98
8.13. Beam search 3 . . . 98
8.14. Beam search 4 . . . 99
8.15. Bread First Search . . . 101
8.16. Operaciones b´asicas JTS . . . 103
8.17. Diagrama de clases de las geometr´ıas OGC . . . 104
8.18. Tabla paradas en la Base de Datos . . . 110
8.19. Tabla redes index en la Base de Datos. . . 111
8.20. Tabla que mantiene la red troceada . . . 113
9.1. JProfiler . . . 119
10.1. Consultas SQL . . . 124
10.2. Proceso troceado 1: Red vac´ıa . . . 125
10.3. Proceso troceado 2: Configuraci´on puntos . . . 126
10.4. Proceso troceado 3: Configuraci´on l´ıneas . . . 127
10.5. Proceso troceado 4: Troceador . . . 128
10.6. Proceso troceado 5: Fusi´on nodos y l´ıneas . . . 129
10.7. Proceso troceado 6: Intersecciones . . . 130
10.8. Proceso troceado 7: L´ıneas . . . 131
10.9. Proceso troceado 8: Puntos con tolerancia de error . . . 132
10.10. Proceso troceado 9: Tramos . . . 133
10.11. Proceso troceado 10: Relaciones entre tramos . . . 134
10.12. Proceso troceado 11: Relaciones entre l´ıneas . . . 135
10.13. Proceso resoluci´on 1: Estado inicial . . . 136
10.14. Proceso resoluci´on 2: Fijar paradas . . . 137
10.15. Proceso resoluci´on 3: L´ınea virtual . . . 138
10.16. Proceso resoluci´on 4: Optimizaci´on . . . 139
10.17. Proceso resoluci´on 5: Recuperar red almacenada . . . 140
10.18. Proceso resoluci´on 6: Grafo . . . 141
10.19. Proceso resoluci´on 7: Aplicar algoritmo . . . 142
10.20. Proceso resoluci´on 8: Resultado final . . . 143
10.21. Proceso resoluci´on 9: Informe . . . 143
10.22. Estad´ısticas distancia . . . 144
10.23. Estad´ısticas grafo . . . 145
10.24. Estad´ısticas tiempo . . . 145
10.25. Comparador . . . 146
10.26. Ejemplo de grafo aleatorio: 12 nodos, 25 % de densidad . . . 148
10.27. TEST 1 - Resultados comparativos de tiempo con densidad 3 % . . 150
10.28. TEST 1 - Resultados comparativos de pasos con densidad 3 % . . . 150
10.29. TEST 1 - Resultados comparativos de ´exitos con densidad 3 % . . . 151
10.30. TEST 1 - Resultados comparativos de coste con densidad 3 % . . . 151
10.31. TEST 2 -Resultados comparativos de tiempo con densidad 10 % . . 152
10.32. TEST 2 - Resultados comparativos de pasos con densidad 10 % . . . 152
10.33. TEST 2 - Resultados comparativos de ´exitos con densidad 10 % . . 153
10.34. TEST 2 - Resultados comparativos de coste con densidad 10 % . . . 153
10.35. TEST 3 - Resultados comparativos de tiempo con densidad 25 % . . 154
10.36. TEST 3 - Resultados comparativos de pasos con densidad 25 % . . . 154
10.37. TEST 3 - Resultados comparativos de ´exitos con densidad 25 % . . 155
10.38. TEST 3 - Resultados comparativos de coste con densidad 25 % . . . 155
10.39. TEST 4 - Resultados comparativos de tiempo con densidad 50 % . . 156
10.40. TEST 4 - Resultados comparativos de pasos con densidad 50 % . . . 156
10.41. TEST 4 - Resultados comparativos de ´exitos con densidad 50 % . . 157
10.42. TEST 4 - Resultados comparativos de coste con densidad 50 % . . . 157
10.43. TEST 5 - Resultados comparativos de tiempo con densidad 100 % . 158 10.44. TEST 5 - Resultados comparativos de pasos con densidad 100 % . . 158
10.45. TEST 5 - Resultados comparativos de ´exitos con densidad 100 % . . 159
10.46. TEST 5 - Resultados comparativos de coste con densidad 100 % . . 159
10.47. TEST 6 - Resultados comparativos de tiempo con densidad 1 % . . 162
10.48. TEST 6 - Resultados comparativos de pasos con densidad 1 % . . . 162
10.49. TEST 6 - Resultados comparativos de ´exitos con densidad 1 % . . . 163
10.50. TEST 6 - Resultados comparativos de coste con densidad 1 % . . . 163
10.51. TEST 7 - Resultados comparativos de tiempo con densidad 5 % . . 164
10.52. TEST 7 - Resultados comparativos de pasos con densidad 5 % . . . 164
10.53. TEST 7 - Resultados comparativos de ´exitos con densidad 5 % . . . 165
10.54. TEST 7 - Resultados comparativos de coste con densidad 5 % . . . 165
10.55. TEST 8 - Resultados comparativos de tiempo con densidad 3 % . . 167
10.56. TEST 8 - Resultados comparativos de pasos con densidad 3 % . . . 167
10.57. TEST 8 - Resultados comparativos de ´exitos con densidad 3 % . . . 168
10.58. TEST 8 - Resultados comparativos de coste con densidad 3 % . . . 168
´INDICE DE FIGURAS xii
A.1. Instalaci´on de PostgreSQL -1- . . . 179
A.2. Instalaci´on de PostgreSQL -2- . . . 179
A.3. Instalaci´on de PostgreSQL -3- . . . 180
A.4. Instalaci´on de PostgreSQL -4- . . . 180
A.5. Instalaci´on de PostgreSQL -5- . . . 181
A.6. Instalaci´on de PostgreSQL -6- . . . 181
A.7. Instalaci´on de PostgreSQL -7- . . . 181
A.8. Instalaci´on de PostgreSQL -8- . . . 182
A.9. Instalaci´on de PostgreSQL -9- . . . 182
A.10. Instalaci´on de PostgreSQL -10- . . . 183
A.11. Instalaci´on de PostgreSQL -11- . . . 183
A.12. Instalaci´on de PostgreSQL -12- . . . 184
A.13. Instalaci´on de PostgreSQL -13- . . . 184
A.14. Postgresql desde Linux: Pgadmin3 . . . 189
A.15. Instalaci´on gvSIG en Windows -1- . . . 190
A.16. Instalaci´on gvSIG en Windows -2- . . . 190
A.17. Instalaci´on gvSIG en Windows -3- . . . 191
A.18. Instalaci´on gvSIG en Windows -4- . . . 191
A.19. Instalaci´on gvSIG en Windows -5- . . . 192
A.20. Instalaci´on gvSIG en Windows -6- . . . 192
A.21. Instalaci´on gvSIG en Windows -7- . . . 193
A.22. Instalaci´on GvSig en Windows -8- . . . 193
A.23. Instalaci´on gvSIG en Windows -9- . . . 194
A.24. Instalaci´on GvSig en Windows -10- . . . 194
A.25. Instalaci´on GvSig en Windows -11- . . . 195
A.26. Instalaci´on gvSIG en Windows -12- . . . 195
A.27. Instalaci´on gvSIG en Linux -1- . . . 196
A.28. Asistente Instalaci´on gvSIG -1- . . . 197
A.29. Asistente Instalaci´on gvSIG -2- . . . 197
A.30. Asistente Instalaci´on gvSIG -3- . . . 198
A.31. Asistente Instalaci´on gvSIG -4- . . . 198
A.32. Asistente Instalaci´on gvSIG -5- . . . 199
A.33. Asistente Instalaci´on gvSIG -6- . . . 199
A.34. Asistente Instalaci´on gvSIG -7- . . . 199
A.35. Asistente Instalaci´on gvSIG -8- . . . 200
A.36. Asistente Instalaci´on gvSIG -9- . . . 200
A.37. Asistente Instalaci´on gvSIG -10- . . . 201
A.38. Men´u extensi´on en gvSIG . . . 203
A.39. Men´u about en gvSIG . . . 205
A.40. Men´u developer . . . 206
A.41. Consulta SQL . . . 207
A.42. Configurar . . . 208
A.43. Crear red. . . 210
A.44. Men´u listar redes . . . 211
A.45. A˜nadir arcos . . . 212
A.46. A˜nadir nodos . . . 213
A.47. Men´u trocear Grafo . . . 214
A.48. Men´u paradas . . . 215
A.49. A˜nadir paradas . . . 216
A.50. Calculador de ruta . . . 217
A.51. Calculador de ruta en formato barra. . . 221
A.52. Men´u informe . . . 222
A.53. Men´u informe exportado a PDF . . . 223
A.54. Capas a˜nadidas en el ToC sobre de gvSIG . . . 224
A.55. Comparador . . . 225
A.56. Tipos de mensajes . . . 227
A.57. Guardar PDF . . . 228
A.58. Men´u JFreeChart . . . 229
A.59. Comparador tiempos . . . 230
A.60. Comparador pasos . . . 231
A.61. Comparador ´exitos . . . 232
A.62. Comparador costes . . . 233
A.63. Consumo memoria . . . 234
A.64. Estad´ısticas ruta tiempos . . . 235
A.65. Estad´ısticas ruta grafo . . . 236
A.66. Estad´ısticas ruta distancia . . . 237
A.67. Asistente: Presentaci´on . . . 238
A.68. Asistente: Configurar . . . 239
A.69. Asistente: A˜nadir capa puntos . . . 239
A.70. Asistente: A˜nadir capa l´ıneas . . . 240
A.71. Asistente: Crear Red . . . 240
A.72. Asistente: Paradas. . . 241
A.73. Asistente: Listar Redes . . . 241
A.74. Asistente: Trocear Grafo . . . 242
A.75. Asistente: Finalizar . . . 242
Introducci´ on
1.1. Motivaci´ on
Un mapa es una representaci´on gr´afica y m´etrica de una porci´on de territorio so- bre una superficie bidimensional, generalmente plana, pero que puede ser tambi´en esf´erica como ocurre en los globos terr´aqueos. El que el mapa tenga propiedades m´etricas significa que ha de ser posible tomar medidas de distancias, ´angulos o su- perficies sobre ´el y obtener un resultado lo m´as exacto posible.
Iniciados por el hombre con el prop´osito de conocer su mundo, y apoyados pri- mero sobre teor´ıas filos´oficas, los mapas constituyen hoy una fuente important´ısima de informaci´on, y una gran parte de la actividad humana est´a relacionada de una u otra forma con la cartograf´ıa.
La historia de la cartograf´ıa abarca desde los primeros trazos en la arena o nie- ve hasta el uso de t´ecnicas geod´esicas, fotogram´etricas y de fotointerpretaci´on. Los errores geom´etricos de un mapa suelen mantenerse por debajo de lo que el ojo hu- mano puede percibir.
Actualmente se tiene la inquietud y la necesidad de proseguir con la nunca acabada labor cartogr´afica. El Universo en general y el Sistema Solar en particular ofrecer´a, sin duda, nuevos terrenos para esta labor que tiene or´ıgenes inmemoriales.
El uso de las t´ecnicas basadas en la fotograf´ıa por sat´elite ha hecho posible no s´olo conocer el contorno exacto de un pa´ıs, de un continente o del mundo, sino tambi´en aspectos etnol´ogicos, hist´oricos, estad´ısticos, hidrogr´aficos, orogr´aficos, geo-
1.1. MOTIVACI ´ON 2
morfol´ogicos, geol´ogicos y econ´omicos que llevan al hombre a un conocimiento m´as amplio de su medio, del planeta en el que vive.
La cuesti´on esencial en la elaboraci´on de un mapa es que la expresi´on gr´afica debe ser clara, sin sacrificar por ello la precisi´on. El mapa es un documento que tiene que ser entendido seg´un los prop´ositos que intervinieron en su preparaci´on. Todo mapa tiene un orden jer´arquico de valores y los primarios deben destacarse por encima de los secundarios.
Para poder cumplir con estas exigencias, el cart´ografo debe crear varios “planos de lectura.” En todo momento debe tener presentes las t´ecnicas de simplificaci´on, a base de colores o simbolog´ıa, sin perder de vista que en un plano de lectura m´as profundo se pueden obtener elementos informativos detallados. La cantidad de in- formaci´on debe estar relacionada en forma proporcional a la escala. Cuanto mayor sea el espacio dedicado a una regi´on, mayor ser´a tambi´en el n´umero de elementos informativos que se puedan aportar acerca de ellos.
En definitiva, todo mapa tiene que incluir una s´ıntesis de conjunto al igual que un detalle anal´ıtico que permita una lectura m´as profunda. El nivel en que se cumplan estas condiciones ser´a igualmente el nivel de calidad cartogr´afica de un determinado mapa.
Figura 1.1: Mapamundo de Delisle (versi´on de 1707).
En el siglo XX, la cartograf´ıa ha experimentado una serie de importantes inno- vaciones t´ecnicas. La fotograf´ıa ´area, denominada tambi´en ortofotomapa, se desa- rroll´o durante la I Guerra Mundial y se utiliz´o, de forma m´as generalizada, en la elaboraci´on de mapas durante la II Guerra Mundial. Era de vital importancia puesto que la supervivencia depend´ıa en gran medida de la estrategia 1 y la topograf´ıa del terreno adoptadas pudiendo decantar la victoria hacia uno u otro bando.
Hacia el a˜no 1966 se lanzan los primeros sat´elites (Pageous y Landsat) para hacer estudios geod´esicos completos de la superficie terrestre por medio de equipos de alta resoluci´on.
Para la fotogrametr´ıa moderna se emplean instrumentos de alta precisi´on que per- miten relacionar las fotograf´ıas a´ereas y de sat´elite con las medidas reales del terreno.
De ello resulta una informaci´on gr´afica que hace posible conocer las distancias y los desniveles de una regi´on determinada. La fotointerpretaci´on, a trav´es de la visi´on estereosc´opica de la fotogrametr´ıa o aerotopograf´ıa, da un elevado nivel de detalle, que hace posible llegar a conclusiones verdaderas acerca de las condiciones de los suelos, sus usos actuales y potenciales.
1estrategia: proveniente de la etimolog´ıa del griego strategos, se fundamenta en el estudio del planeamiento, direcci´on, movimiento y dispersi´on de tropas de una forma coordinada.
1.1. MOTIVACI ´ON 4
Figura 1.2: Mapa-mundi en la actualidad.
Por otra parte, la aparici´on de los Sistemas de Informaci´on Geogr´afica (GIS) en los a˜nos 70 y su popularizaci´on en los 90 han revolucionado la forma de crear y ma- nejar cartograf´ıa a trav´es de estas herramientas inform´aticas que asocian elementos espaciales con bases de datos. Los GIS permiten el an´alisis y la gesti´on del territorio a trav´es de cartograf´ıa digital de una manera r´apida y efectiva y sus fines soy muy diversos. Un ejemplo cotidiano de este avance son los GPS.
En la actualidad la elaboraci´on de mapas es una operaci´on compleja en la que par- ticipan grupos de m´as de 50 diferentes disciplinas: fotonavegantes, mec´anicos, qu´ımi- cos de laboratorio, geodestas, matem´aticos, top´ografos, ge´ologos, bi´ologos, ge´ografos, f´ısicos, agr´onomos, edaf´ologos, ingenieros civiles, economistas y arquitectos, entre otros.
En el futuro existen planes serios de hacer mapas de los planetas vecinos del Siste- ma Solar, de manera que los mapas, que fueron la forma inicial de conocer la Tierra, muy pronto servir´an para llevar las fronteras del conocimiento m´as all´a del planeta en el que vivimos, incluso en 3 dimensiones.
Figura 1.3: Mapa GIS 3D.
Sabiendo que “encontrar el camino es un problema fundamental para el ser hu- mano” se plantea la posibilidad de desarrollar una extensi´on para calcular rutas sobre un sistema GIS con la que poder desarrollar y aumentar los conocimientos y habilidades adquiridas durante la carrera.
El sistema GIS elegido en este caso fue gvSIG (que se detallar´a en la p´agina 24) por los siguientes motivos:
1. Por ser c´odigo abierto.
2. Disponer de una comunidad con la que la que resolver dudas t´ecnicas.
3. Estar desarrollado en Java, simplificando lo m´as posible el desarrollo con el fin de alcanzar objetivos de m´as alto nivel.
1.2. OBJETIVOS 6
1.2. Objetivos
El objetivo de este proyecto es m´ultiple, el principal es el desarrollo de una herra- mienta completa que extienda la funcionalidad de an´alisis de gvSIG.
El cometido de dicha extensi´on es el c´alculo de rutas. Para que se entienda mejor vamos a explicarlo con un ejemplo: si suponemos que tenemos informaci´on acerca de poblaciones (puntos) y carreteras (l´ıneas) y un conjunto de paradas (subconjunto de poblaciones y por tanto subconjunto de puntos) lo que deber´ıa proporcionar esta nueva herramienta, aplicando unos sencillos pasos, ser´ıa la traza (tambi´en llamada ruta) de tramos de carreteras que se pueden atravesar para recorrer todas las pa- radas en el orden estipulado, pint´andolo sobre el plano, proporcionando informes y datos estad´ısticos acerca del proceso.
Adem´as tiene otro objetivo secundario y no por ello menos importante, que es el desarrollo de un comparador de algoritmos para el estudio emp´ırico-anal´ıtico con el fin de determinar cu´al es el “mejor” algoritmo en tiempo, cu´al proporciona un ca- mino m´as corto, en cu´antos pasos lo resuelve y qu´e ´exito ha logrado dicho algoritmo.
Para llevarlo a cabo es preciso aprender, entender y dominar diferentes teor´ıas y dominios en mayor o menor medida para su posterior aplicaci´on como pueden ser la geograf´ıa, estad´ıstica, algoritmia de inteligencia artificial, matem´aticas, bases de datos...
Se pondr´a un especial ´enfasis en que sea una herramienta f´acil de utilizar para que usuarios inexpertos puedan emplearla y a la par que los usuarios expertos puedan sacarle las mayores prestaciones, lo que a˜nade m´as complejidad al proyecto.
Se intentar´a que tenga un equilibrio entre rendimiento ´optimo y que sea una aplicaci´on tan did´actica como ´util para ayudar de forma altruista a los nuevos desa- rrolladores que comiencen.
1.3. Estructura de la memoria
La memoria se estructura en varios cap´ıtulos que se detallan a continuaci´on
Introducci´on: Cap´ıtulo en el que se explica la motivaci´on y los objetivos que persigue el proyecto, adem´as de definir la estructura de la memoria.
Conceptos previos y herramientas utilizadas: Este cap´ıtulo hace referen- cia a todo lo que debe conocerse, as´ı como todo lo que concierne a la elecci´on de las herramientas utilizadas para afrontar la realizaci´on del proyecto.
Aplicaciones similares: En este cap´ıtulo se har´a un peque˜no repaso de otras aplicaciones similares que est´an disponibles en Internet, haciendo un breve an´alisis de la funcionalidad que proporcionan.
Planificaci´on: En este cap´ıtulo se ver´a la planificaci´on llevada a cabo para la realizaci´on del proyecto, as´ı como una evaluaci´on de los costes.
Metodolog´ıa: Trata de las distintas t´ecnicas utilizadas para el desarrollo del proyecto, con sus correspondientes diagramas.
An´alisis: En este cap´ıtulo se habla de “qu´e” se va a construir, y c´omo se obtuvieron las especificaciones.
Dise˜no: Aqu´ı es donde se describe el “c´omo” se construy´o y los diferentes patrones empleados.
Implementaci´on: Se explican aspectos relevantes de implementaci´on, el en- torno de desarrollo y algoritmos a bajo nivel.
Pruebas: Este cap´ıtulo pretende reflejar las distintas pruebas que se han realizado a la hora de validar la aplicaci´on.
Resultados y rendimiento: Se trata c´omo funciona la aplicaci´on por dentro, las funcionalidades que proporciona y los resultados obtenidos en detalle.
S´ıntesis del trabajo: Se dar´a una exposici´on de las conclusiones que se al- canzaron despu´es de la realizaci´on del proyecto adem´as de contemplar diversas mejoras y ampliaciones que se pueden realizar, pero que de alguna forma que- daron fuera de los objetivos marcados.
Bibliograf´ıa: En este cap´ıtulo se hace referencia a las fuentes consultadas m´as relevantes para la obtenci´on de informaci´on para la ejecuci´on del proyecto.
Ap´endice A - Manual de usuario: Describe la instalaci´on de los elementos necesarios para el funcionamiento, configuraci´on y puesta a punto intentando evitar resolver las dudas t´ıpicas que pueden surgir en su utilizaci´on bas´andose en capturas de pantalla autoexplicativas.
Ap´endice B - Licencia: Normas GPL2 por las cuales puede ser distribuida la aplicaci´on realizada al ser publicada.
Ap´endice C - Glosario: Definici´on de t´erminos espec´ıficos del dominio de la geograf´ıa.
2GPL: General Public License
1.3. ESTRUCTURA DE LA MEMORIA 8
Ap´endice D - Contenido del DVD: Explicaci´on de la estructura y el contenido de las carpetas incluidas en el medio digital anexo.
Conceptos previos y herramientas utilizadas
2.1. Sistemas de informaci´ on geogr´ afica (SIG)
La cartograf´ıa tiene como objetivo la producci´on de mapas y su interpretaci´on.
En la ´ultima d´ecada, con el avance tecnol´ogico y su incorporaci´on a esta ciencia, ha pasado a ser un elemento fundamental en la sociedad de la informaci´on.
Desde el punto de vista de la ingenier´ıa cartogr´afica, es el soporte b´asico pa- ra la planificaci´on y dise˜no de obras, infraestructuras, an´alisis f´ısico del territorio, econ´omico o ambiental.
Las herramientas que se han establecido para el an´alisis de la cartograf´ıa son los denominados Sistemas de Informaci´on Geogr´afica (SIG).
Los SIG se definen como sistemas compuestos por hardware, software y procedi- mientos para capturar, manipular, analizar, modelar y representar datos georrefe- renciados 1, con el objetivo de resolver problemas de gesti´on y planificaci´on.
Ante todo son herramientas de ayuda a la resoluci´on de problemas; el concepto de herramienta indica que los SIG no son el fin, sino el medio.
1georreferenciaci´on: establecimiento de relaciones entre las im´agenes de raster o vector sobre una proyecci´on geogr´afica o sistema de coordenadas.
2.1. SISTEMAS DE INFORMACI ´ON GEOGR ´AFICA (SIG) 10
Figura 2.1: Definici´on SIG
Los SIG tienen las siguientes caracter´ısticas:
Son sistemas dise˜nados para la visualizaci´on de informaci´on geogr´afica expre- sada en forma de mapas.
El eje central de su funcionamiento se encuentra en la posici´on de un elemento geogr´afico representado por elementos gr´aficos (como puntos, l´ıneas, pol´ıgonos) y su informaci´on tem´atica asociada.
Disponen de un gran n´umero de funciones de an´alisis y consulta para explotar la informaci´on geogr´afica enfocada a resolver un problema o necesidad.
Son el resultado de la aportaci´on de m´ultiples disciplinas (geogr´afica, ma- tem´atica, cartogr´afica) de las que se han extra´ıdo capacidades para el manejo de informaci´on geogr´afica.
Almacenan las relaciones espaciales entre los distintos elementos, lo que per- mite interrogar al sistema sobre estas relaciones.
Figura 2.2: SIG como sistema
Un sistema de informaci´on geogr´afica, por ser sistema, tiene una serie de elementos relacionados entre s´ı.
Elementos que interrelaciona
Hardware: Equipos inform´aticos formados por ordenadores y sus perif´ericos;
monitor, esc´aner, dispositivos de almacenamiento, impresoras, etc.
Software: Programas inform´aticos con funciones para visualizar, consultar y analizar los datos geogr´aficos.
Liveware: Es el componente vivo del sistema. Comprende a los usuarios del sistema y a los datos que han de recogerse y mantenerse vivos (actualizados).
Las principales funciones de un SIG son:
Captura de la informaci´on: Funciones que permiten adquirir y depurar errores tanto de informaci´on geogr´afica espacial como tem´atica.
Funciones de gesti´on: Funciones de estructuraci´on de la informaci´on original en diferentes capas de informaci´on coherente.
Funciones de an´alisis: Son las que confieren a un SIG su mayor potenciali- dad. Permiten extraer informaci´on no presente a simple vista, generar nuevos datos y realizar simulaciones de comportamientos basados en modelos de te- rritorio.
Funciones de salida: Permiten mostrar al usuario tanto los propios datos incluidos en el sistema como el resultado de las consultas y an´alisis sobre ellos.
2.1. SISTEMAS DE INFORMACI ´ON GEOGR ´AFICA (SIG) 12
2.1.1. Modelos de representaci´ on
Los SIG deben ser capaces de representar y almacenar las entidades geogr´aficas reales mediante la representaci´on y almacenamiento de las entidades gr´aficas.
Existen b´asicamente dos formas en los que se puede representar la informaci´on en los sistemas inform´aticos; son el modelo raster y el modelo vectorial. La diferencia de los modelos est´a en el modo en el que guardan la informaci´on.
El modelo raster guarda una matriz de posiciones donde cada posici´on representa una fracci´on del objeto a representar y tomar´a el valor que tenga ese objeto real en ese punto. El modelo vectorial almacena las coordenadas de la geometr´ıa.
Un ejemplo de utilizaci´on de ambos modelos son las aplicaciones CAD que usan el modelo vectorial, y las aplicaciones de retoque fotogr´afico que usan el modelo raster.
Figura 2.3: Diferencias entre raster y vectorial
Cada modelo se usar´a en un contexto determinado, ya que dependiendo de la situaci´on puede ser mejor usar un modelo que el otro.
Modelo vectorial Modelo raster
VENTAJAS
Ocupa menos espacio de memoria Facilidad de captura Precisi´on elevada en la definici´on de
entidades geom´etricas
Estructura de datos simple
Modelo vectorial Modelo raster Representaci´on adecuada de las re-
laciones topol´ogicas
Sencillez en la manipulaci´on y ges- ti´on de la informaci´on
Mejores salidas gr´aficas
INCONVENIENTES
Captura de datos m´as costosa Menor precisi´on en el c´alculo de
´
areas y longitudes
Estructura de datos m´as compleja Ocupan mayor espacio de memoria Mayor dificultad a la hora de rea-
lizar ciertas operaciones (Compara- ci´on de mapas)
Dificultad de representar ciertas re- laciones topol´ogicas
Cuadro 2.1: Ventajas e inconvenientes entre vectorial y raster
De forma general diremos que recomendaremos el trabajo con informaci´on raster cuando:
Trabajemos con grandes extensiones de terreno y a peque˜nas escalas.
No requiramos precisiones muy altas para nuestros c´alculos.
Requiramos an´alisis r´apidos de estudios de variabilidad temporal.
Estas condiciones se pueden dar en casos de estudios sobre recursos natura- les, impacto medioambiental, estudios regionales y globales sobre climatolog´ıa, c´alculo de superficies afectadas por incendios, etc.
Por el contrario, se recomendar´a trabajar con informaci´on vectorial cuando:
Trabajemos con extensiones peque˜nas y a medianas o grandes escalas.
Necesitemos altas precisiones en c´alculos y definici´on de entidades.
Necesitemos tener reflejadas complejas relaciones topol´ogicas.
Estos criterios se dan en casos como la gesti´on catastral, planificaci´on urbana local, arqueolog´ıa, etc.
2.1. SISTEMAS DE INFORMACI ´ON GEOGR ´AFICA (SIG) 14
2.1.2. Flujo de trabajo en un SIG
Para entender y obtener el m´aximo beneficio de un SIG, el usuario debe saber cu´al es la secuencia de fases que ha de aplicar para llegar a solucionar un problema que se le ha planteado.
Las fases que se deben seguir son las siguientes:
Captura de la informaci´on: la informaci´on necesaria ser´a funci´on del pro- blema planteado. La calidad de los datos originales influir´a en la bondad del resultado final. Los m´etodos de captura de la informaci´on espacial son m´ulti- ples y variados: tableta digitalizadora, esc´aner, levantamiento topogr´afico o fotogram´etrico, plataformas de sat´elite, etc. As´ı mismo los datos tem´aticos ser´an capturados a partir de bases de datos existentes, fichas, encuestas, en- trevistas, trabajos de campo, etc.
Preparaci´on de la informaci´on: es necesario que la informaci´on est´e “lim- pia” de errores (cometidos en la captura) y dotada de una estructura que permita una consulta y un an´alisis eficiente por parte del sistema. En el ca- so de informaci´on vectorial, hacer que los pol´ıgonos est´en cerrados o que las l´ıneas conecten entre s´ı permitir´a estructurar la informaci´on guardando sus relaciones topol´ogicas. Esto har´a que el sistema pueda contestar a preguntas como ¿qu´e es lo m´as cercano a...?, ¿cu´al es el mejor camino para...?, ¿cu´antos elementos hay dentro de...?, etc. En el caso de la informaci´on raster, ser´a ne- cesario georreferenciar la informaci´on y corregirla de posibles deformaciones y valores err´oneos debidos al proceso de adquisici´on.
Fusi´on de la informaci´on espacial y tem´atica: es el proceso por el cual se asocia a cada elemento geogr´afico informaci´on tem´atica externa de naturaleza diferente a la espacial. Cada elemento geogr´afico tiene un enlace biun´ıvoco con su informaci´on tem´atica asociada de forma que es posible interrogar a un elemento espacial y obtener el resultado en forma de informaci´on tem´atica y viceversa, interrogar a la informaci´on tem´atica y obtener como resultado un elemento espacial.
An´alisis de la informaci´on: una vez fusionados los datos, se los puede some-
ter a operaciones de an´alisis que sigan los criterios de resoluci´on del problema.
Los an´alisis pueden ser sobre datos de una ´unica naturaleza (datos espaciales o tem´aticos por separado) o analizar ambos tipos de datos a la vez.
Figura 2.4: Flujo de trabajo
2.1.3. Fuentes de error en los SIG
Cuando trabajamos con SIG, el coste m´as alto, en tiempo y dinero, recae sobre la captura y el mantenimiento (actualizaci´on) de la informaci´on geogr´afica. Los datos son “materia viva” y deben ser mantenidos en estado de “´optima calidad”, tanto desde el punto de vista geom´etrico (adecuada exactitud posicional, exentos de errores topol´ogicos, etc.), tem´atico (fiabilidad de la informaci´on tem´atica, asociaci´on adecuada con los datos gr´aficos, etc.) como temporal (los datos han de ser lo m´as recientes posible).
Por lo tanto, debemos ser capaces de conocer de qu´e tecnolog´ıas y metodolog´ıas disponemos para capturar la informaci´on geogr´afica y qu´e errores podemos cometer en este proceso. Esto ser´a un indicador fundamental de la calidad de nuestros datos y, por extensi´on, de la calidad de nuestros an´alisis y resultados al trabajar sobre el SIG.
Los tipos de errores que podemos encontrarnos al trabajar con informaci´on geogr´afi- ca dentro del entorno de los SIG pueden ser de dos tipos:
2.1. SISTEMAS DE INFORMACI ´ON GEOGR ´AFICA (SIG) 16
Los errores propios debidos al m´etodo de captura de los datos.
Errores debidos a la manipulaci´on de la informaci´on original por aplicaci´on de sucesivos procesos de an´alisis y transformaci´on dentro del propio SIG.
Ambos tipos de errores pueden aplicarse tanto a la informaci´on gr´afica como a la informaci´on tem´atica e influir directamente sobre la calidad final de los datos.
2.1.4. Aplicaciones generales de los SIG
Varios factores hacen posible que los SIG sean aplicables a casi cualquier actividad humana. Son aptos para resolver cualquier problema que dependa de una variable espacial (que sea o est´e asociada a una posici´on de un elemento geogr´afico).
La popularizaci´on de la informaci´on visual en general y de los mapas en parti- cular en los ´ultimos a˜nos hace que cada vez m´as personas apoyen sus argumentos con documentos cartogr´aficos y sean estos usados como instrumentos de comunica- ci´on cotidianos. La entrada en el mundo laboral y personal de la inform´atica hace que los usuarios se encuentren c´omodos usando herramientas de este tipo. El in- tercambio masivo y libre de informaci´on geogr´afica a trav´es de Internet hace que nos habituemos a referenciar cualquier tipo de idea a una posici´on en el planeta. La gesti´on y planificaci´on del territorio y la explotaci´on de los recursos naturales se han convertido en una necesidad imperante para el hombre.
Estas factores nos dan una idea de la importancia que tiene para nosotros no s´olo saber c´omo es nuestro territorio y d´onde estamos (funci´on que ya cumple desde muy antiguo el mapa), sino saber explotar la informaci´on impl´ıcita que podemos extraer de ese territorio en nuestro propio beneficio.
A continuaci´on, se citan algunos campos de aplicaci´on usuales dentro de los SIG:
Planificaci´on urbana y regional: En la planificaci´on de usos del suelo o espacios protegidos, licencias de obras, registros de la propiedad, catastro de r´ustica y urbana, etc.
Ingenier´ıa de transportes: En la gesti´on del tr´afico rodado o a´ereo, el an´ali- sis de rutas ´optimas para distribuci´on de mercanc´ıas, gesti´on de transporte p´ublico, etc.
Explotaci´on de recursos: En la evaluaci´on de zonas de yacimientos mine- rales, la gesti´on de redes de alcantarillado, gas y electricidad, etc.
An´alisis de nuevos mercados: En la ubicaci´on de nuevos centros comer- ciales, an´alisis demogr´aficos para nuevos productos, mejora de las redes de distribuci´on, gesti´on inmobiliaria, etc.
Aplicaciones de seguridad p´ublica: En aplicaciones para el control de la criminalidad por parte de la polic´ıa, aplicaciones militares para el control de armamento, etc.
Aplicaciones de salud p´ublica: En la mejora de la rapidez en la atenci´on de las ambulancias, gesti´on de emergencias sanitarias, lucha contra epidemias, etc.
Turismo: En el desarrollo tur´ıstico de zonas deprimidas, la generaci´on de callejeros interactivos v´ıa Internet, medio ambiente. En an´alisis de impactos ambientales, inventarios de recursos medioambientales, ubicaci´on de nuevas plantas de procesado de residuos y vertederos, etc.
Prevenci´on de riesgos naturales: En la lucha contra incendios, desertiza- ci´on, inundaciones, terremotos, deslizamientos de terreno, etc.
2.2. BASES DE DATOS EN UN SIG 18
Figura 2.5: Aplicaciones de un GIS
2.2. Bases de datos en un SIG
Una base de datos (abreviado como BD) es una colecci´on de archivos interrela- cionados, son creados con un sistema gestor de bases de datos. El contenido de una base de datos engloba la informaci´on concerniente (almacenada en archivos) a una organizaci´on, de tal manera que los datos est´en disponibles para los usuarios; una finalidad de la base de datos es eliminar la redundancia o al menos minimizarla.
Tabla de datos: La tabla es la unidad l´ogica de almacenamiento de informaci´on en una base de datos. Una tabla est´a formada por muchas filas (tambi´en llamadas registros o tuplas) con el mismo patr´on de informaci´on. Cada registro est´a formado por una o varias columnas -tambi´en llamados campos o atributos-, que son los datos que nos interesan conocer.
As´ı pues, de manera resumida podemos decir que una base de datos est´a formada por una o varias tablas que representan las “ideas l´ogicas” de las cuales queremos obtener informaci´on. En cada una de estas tablas habr´a cero o muchas filas con
informaci´on diferente. Por cada fila tendremos un detalle de sus datos m´as relevantes que nos interesan representar, es decir, los campos de la tabla.
El sistema gestor de bases de datos es la porci´on m´as importante del software de un sistema de base de datos. Es una colecci´on de numerosas rutinas de software interrelacionadas, cada una de las cuales es responsable de alguna tarea espec´ıfica.
El objetivo primordial de un sistema gestor de base de datos es proporcionar un contorno que sea a la vez conveniente y eficiente para ser utilizado al extraer, almacenar y manipular la informaci´on de la base de datos. Todas las peticiones de acceso a la base se manejan centralizadamente por medio del sistema, por lo que este paquete funciona como interfaz entre los usuarios y la base de datos.
Las funciones principales de un sistema gestor de base de datos son:
Crear y organizar la base de datos.
Establecer y mantener las trayectorias de acceso a la base de datos de tal forma que el acceso a los datos sea r´apido.
Manejar los datos de acuerdo a las peticiones de los usuarios.
Registrar el uso de las bases de datos.
Interacci´on con el manejador de archivos.
Respaldo y recuperaci´on. Consiste en contar con mecanismos implantados que permitan la recuperaci´on f´acilmente de los datos en caso de ocurrir fallos en el sistema de base de datos.
Control de concurrencia. Consiste en controlar la interacci´on entre los usuarios concurrentes para no afectar a la inconsistencia de los datos.
Seguridad e integridad. Consiste en contar con mecanismos que permitan el control de la consistencia de los datos evitando que estos se vean perjudicados por cambios no autorizados o previstos.
2.2. BASES DE DATOS EN UN SIG 20
Una base de datos espacial es una colecci´on de datos espacialmente referenciados que act´uan como modelo de la realidad. Las bases de datos espaciales son sistemas donde se almacena la informaci´on espacial. Estos sistemas necesitan representar informaci´on de dos tipos: espacial y nominal (sin representaci´on espacial).
Los datos espaciales ser´an referentes a las dimensiones, posici´on, forma,... y los nominales son datos que puedan ser de inter´es como nombre, habitantes...
El m´etodo de representaci´on digital var´ıa con la escala, por ejemplo una ciudad puede representarse geogr´aficamente como un punto considerando una escala conti- nental, en cambio, en escalas m´as locales se representa como una superficie.
Por esta raz´on la representaci´on digital de los diferentes tipos de entidades en una base de datos espacial requiere una previa elecci´on de los apropiados objetos espaciales.
Tambi´en se debe tener en cuenta para esta elecci´on las operaciones de an´alisis y consultas posteriores, as´ı como la informaci´on geogr´afica de partida. Por ejem- plo, las v´ıas de comunicaci´on pueden ser representadas como elementos lineales o superficiales.
La informaci´on espacial se guardar´a de una de las siguientes formas:
Datos puntuales: Es el tipo de objeto espacial m´as simple. En la tabla de la base de datos, cada punto ser´a una fila, toda la informaci´on sobre el punto estar´a en esa fila. Cada columna ser´a un atributo. Cada punto es independiente de cualquier otro punto.
Datos lineales: Algunas entidades representables mediante objetos lineales son las redes de infraestructuras, v´ıas de comunicaci´on, redes de recursos ´o re- des de transporte.
Datos superficiales: Los objetos espaciales superficiales representan ´areas.
Pueden representar fen´omenos naturales como lagos o fen´omenos artificiales como zonas de censo, ajardinadas, etc.
Figura 2.6: Tipos de geometr´ıas OGC
Hay varios tipos de superficies que pueden ser representadas:
Zonas de recursos naturales o medioambientales. Por ejemplo: datos geol´ogicos (tipos de material), usos del suelo (bosques, urbano), tipos de suelo (industrial, urbanizable).
Zonas socio-econ´omicas. Por ejemplo: c´odigos postales, distritos, barrios.
2.2. BASES DE DATOS EN UN SIG 22
Zonas con car´acter tributario. Por ejemplo: parcelas, uso del suelo, informaci´on de tasas.
En los objetos espaciales que representan superficies pueden aparecer huecos o islas o ´areas de diferentes atributos encerradas ´ıntegramente dentro de ellas.
La utilizaci´on de una base de datos para almacenar la informaci´on cartogr´afica se vuelve casi imprescindible para acceder a un inmenso volumen de informaci´on de forma eficiente.
En este sentido la restricci´on proveniente de los requisitos fue PostgreSQL con la extensi´on PostGIS que de forma estandarizada proporciona funciones t´ıpicas para manejarla de la que se hablar´a a continuaci´on.
La herramienta gvSIG, no es un sistema de informaci´on geogr´afica por s´ı sola, ya que seg´un la definici´on de SIG deben capturar, manipular, analizar, modelar y representar datos georreferenciados y gvSIG se centra en la representaci´on y un poco en el proceso de los datos, le falta el almacenamiento de los datos que le aporta una base de datos como PostgreSQL.
2.2.1. PostgreSQL
PostgreSQL es un motor de base de datos liberado bajo licen- cia BSD 2, significa que el autor permite su modificaci´on y dis- tribuci´on, pero se reserva el derecho de atribuci´on sobre posibles modificaciones. Aparte de los t´ıpicos datos de una base de datos como INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTER- VAL y TIMESTAMP tambi´en soporta el almacenamiento de grandes ficheros binarios incluyendo sonidos, im´agenes, o video. Incluye interfaces nativas para C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC y otros lenguajes.
2BSD: Berkeley Software Distribution
2.2.2. PostGIS
PostGIS es un m´odulo para PostgreSQL que a˜nade soporte pa- ra objetos geogr´aficos. Las bases de datos espaciales permiten el almacenamiento y manipulaci´on de datos geogr´aficos usando SQL extendido.
PostGIS implementa metadatos y funciones geom´etricas y to- pol´ogicas para el tratamiento de los datos espaciales bas´andose en el est´andar Open Geospatial Consortium a partir de ahora abre- viado como OGC, pero con la ventaja de ser de distribuci´on libre por lo que es ampliamente usado en todo el mundo.
Algunas de las funciones m´as importantes son:
AsText: Muestra una geometr´ıa en su representaci´on textual.
GeomFromText: Traduce una geometr´ıa de su formato binario a su repre- sentaci´on textual.
GeometryFromText: convierte un objeto de la representaci´on textual a un objeto geometr´ıa.
AddGeometryColumn: A˜nade una columna a una tabla de la base de datos que contendr´a los datos espaciales.
Contains: Establece si una geometr´ıa dada contiene en su interior otra geo- metr´ıa dada.
Difference: Devuelve la diferencia geom´etrica entre dos geometr´ıas.
Intersects: Establece si dos geometr´ıas se intersecan.
Buffer: Devuelve una geometr´ıa que representa el buffer de una geometr´ıa dada.
Perimeter: Devuelve el per´ımetro de una geometr´ıa POLYGON dada.
Area: Devuelve el ´area de una geometr´ıa POLIGON dada.
2.3. GVSIG 24
Length: Devuelve la longitud de una geometr´ıa LINESTRING dada.
Within: Establece si una geometr´ıa se encuentra en el interior de otra dada.
Distance: Devuelve la distancia m´ınima entre dos geometr´ıas dadas.
Touches: Establece si dos geometr´ıas dadas son adyacentes.
Intersection: Devuelve una geometr´ıa resultante de la intersecci´on de dos geometr´ıas dadas.
PostGis tiene una API 3 muy bien documentada en su p´agina web, consultar la bibliograf´ıa para m´as informaci´on (p´agina 175).
2.3. GvSIG
Es una herramienta para la visualizaci´on de informaci´on geogr´afica en un SIG, multiplataforma y desarrollado como software libre.
GvSIG es una potente herramienta de gesti´on de informaci´on geogr´afica destinado a satisfacer las nuevas necesidades y de- mandas del mercado potencial de usuarios, desarrollado bajo los est´andares internacionales y que garantiza su interoperabi- lidad.
El proyecto de gvSIG surge por iniciativa de la Generalitat Valenciana (gobierno local), a trav´es de la Conseller´ıa de Infraestructuras y en ´el participan la Universidad Jaume I realizando las tareas de supervisi´on, con el objetivo de que el desarrollo siga todos los est´andares internacionales (Open GIS Consortium), e IVER Tecnolog´ıas de la Informaci´on S.A, empresa que lleva el peso del desarrollo.
La aplicaci´on es de c´odigo abierto, tiene licencia GPL. Adem´as se ha hecho un especial esfuerzo en la extensibilidad del proyecto, de forma que los posibles desa- rrolladores puedan ampliar las funcionalidades de la aplicaci´on f´acilmente, as´ı como desarrollar aplicaciones totalmente nuevas a partir de las librer´ıas utilizadas en gv- SIG.
3API: Interfaz de Programaci´on de Aplicaciones
Existe documentaci´on de usuario y casos pr´acticos bastante completa y extensa (m´as de 400 p´aginas) en la p´agina web oficial [17] (en el apartado “documentaci´on”) que explica todas las funcionalidades y ejemplos pr´acticos.
Por el contrario la documentaci´on t´ecnica es bastante reducida y limitada aunque este problema se anda solventando mediante el esfuerzo de la comunidad haciendo ingenier´ıa inversa (an´alisis de fuentes).
Figura 2.7: Men´u principal de gvSIG
La interfaz de gvSIG consta de:
1. Barra de t´ıtulo: Se encuentra en la parte superior de la ventana de gvSIG y contiene el nombre del programa y del proyecto.
2. Botones con las que poder maximizar o minimizar la ventana activa del pro- grama, o bien cerrarlo completamente.
2.4. PARADIGMA DE LA ORIENTACI ´ON A OBJETOS 26
3. Ventana principal: Espacio de trabajo donde encontramos las distintas ven- tanas que nos muestra el “Gestor de proyectos” y los distintos documentos propios de gvSIG.
4. Barra de men´us: Aqu´ı podemos encontrar agrupadas en forma de men´us y submen´us las funciones que gvSIG puede realizar.
5. Barra de herramientas: Contiene los iconos de los comandos m´as usuales y constituyen la forma m´as f´acil de acceder a estos. Haciendo “click” y arras- trando, podemos mover de su posici´on inicial las barras de herramientas. No es necesario memorizar el significado de cada uno de los iconos, con situar el puntero sobre ellos, aparecer´a inmediatamente una casilla con la descripci´on de su funci´on.
6. Barra de estado: Proporciona informaci´on sobre coordenadas, distancias, etc.
Se volver´a hablar recurrentemente sobre la aplicaci´on, sobre todo en temas de an´alisis y dise˜no disponibles en las p´aginas 57y 65
2.4. Paradigma de la orientaci´ on a objetos
La Programaci´on Orientada a Objetos (a partir de ahora abreviado con el acr´onimo POO) es un paradigma de programaci´on que define los programas en t´erminos de
“clases de objetos”, objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o m´etodos) e identidad (propiedad del objeto que lo diferencia del resto). La programaci´on orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y m´odulos m´as f´aciles de escribir, mantener y reutilizar.
De esta forma, un objeto contiene toda la informaci´on, (los denominados atri- butos) que permite definirlo e identificarlo frente a otros objetos pertenecientes a otras clases (e incluso entre objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos). A su vez, dispone de mecanismos de interacci´on -los llamados m´etodos- que favorecen la comunicaci´on entre objetos -de una misma clase
o de distintas-, y en consecuencia, el cambio de estado en los propios objetos. Esta caracter´ıstica lleva a tratarlos como unidades indivisibles, en las que no se separan -ni deben separarse- informaci´on (datos) y procesamiento (m´etodos).
Dada esta propiedad de conjunto de una clase de objetos, que al contar con una serie de atributos definitorios requiere de unos m´etodos para poder tratarlos (lo que hace que ambos conceptos est´an ´ıntimamente entrelazados), el programador debe pensar indistintamente en ambos t´erminos, ya que no debe nunca separar o dar ma- yor importancia a los atributos en favor de los m´etodos, ni viceversa.
Esto difiere de los lenguajes imperativos tradicionales, en los que los datos y los procedimientos est´an separados y sin relaci´on, ya que lo ´unico que se busca es el procesamiento de unos datos de entrada para obtener otros de salida.
Los programadores que emplean lenguajes orientados a objetos definen objetos con datos y m´etodos y despu´es env´ıan mensajes a los objetos diciendo que realicen esos m´etodos en s´ı mismos.
Como conceptos importantes podemos destacar los siguientes:
Objeto: entidad provista de un conjunto de propiedades o atributos (”da- tos”) y de comportamiento o funcionalidad (“m´etodos”). Corresponden a los objetos reales del mundo que nos rodea, o a objetos internos del sistema (del programa).
Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciaci´on es la lectura de estas definiciones y la creaci´on de un objeto a partir de ellas.
M´etodo: algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecuci´on se desencadena tras la recepci´on de un “mensaje”. Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un m´etodo puede producir un cambio en las propiedades del objeto, o la generaci´on de un
“evento” con un nuevo mensaje para otro objeto del sistema.
Evento: un suceso en el sistema (tal como una interacci´on del usuario con la m´aquina, o un mensaje enviado por un objeto). El sistema maneja el evento
2.4. PARADIGMA DE LA ORIENTACI ´ON A OBJETOS 28
enviando el mensaje adecuado al objeto pertinente.
Mensaje: una comunicaci´on dirigida a un objeto, que le ordena que ejecute uno de sus m´etodos con ciertos par´ametros asociados al evento que lo gener´o.
Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto (o a una clase de objetos), que hace los datos visibles desde fuera del objeto, y cuyo valor puede ser alterado por la ejecuci´on de alg´un m´etodo.
Estado interno: es una propiedad invisible de los objetos, que puede ser
´
unicamente accedida y alterada por un m´etodo del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto (o clase de objetos).
2.4.1. Caracter´ısticas de la POO
Las caracter´ısticas siguientes son las m´as importantes:
Abstracci´on: Cada objeto en el sistema sirve como modelo de un “agente”
abstracto que puede realizar trabajo, informar y cambiar su estado, y “comu- nicarse” con otros objetos en el sistema sin revelar c´omo se implementan estas caracter´ısticas. Los procesos, las funciones o los m´etodos pueden tambi´en ser abstra´ıdos y, cuando lo est´an, una variedad de t´ecnicas son requeridas para ampliar una abstracci´on.
Encapsulamiento: tambi´en llamado “ocultaci´on de la informaci´on”. Cada objeto est´a aislado del exterior, es un m´odulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica c´omo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificaci´on por quien no tenga derecho a acceder a ellas;
solamente los propios m´etodos internos del objeto pueden acceder a su estado.
Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracci´on.
La aplicaci´on entera se reduce a un agregado o rompecabezas de objetos.
Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizar´a el comportamiento correspondiente al objeto que se est´e usando.
Dicho de otro modo, las referencias y las colecciones de objetos pueden con- tener objetos de diferentes tipos, y la invocaci´on de un comportamiento en una referencia producir´a el comportamiento correcto para el tipo real del ob- jeto referenciado. Cuando esto ocurre en “tiempo de ejecuci´on”, esta ´ultima caracter´ıstica se llama ligadura din´amica.
Herencia: las clases no est´an aisladas, sino que se relacionan entre s´ı, for- mando una jerarqu´ıa de clasificaci´on. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen.
La herencia organiza y facilita el polimorfismo y el encapsulamiento permitien- do a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que reimplementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en ´arboles o enrejados que reflejan un comportamien- to com´un. Cuando un objeto pertenece a m´as de una clase se dice que hay herencia m´ultiple. Esta caracter´ıstica no est´a soportada por algunos lenguajes (como Java).
Para la realizaci´on de este proyecto es fundamental tener conocimientos respecto a este paradigma y sus caracter´ısticas. Un gran libro de cabecera en este ´ambito es
”Piensa En Java” [2].
Teniendo en cuenta las caracter´ısticas mencionadas podemos introducir el con- cepto de patr´on, que no es m´as que una soluci´on a un problema conocido que por su asidua repetici´on ha sido resuelto de forma ´optima. Se hablar´a de manera m´as extensa sobre ello en el tema de Patrones de dise˜no que se encuentra en el cap´ıtulo 7 (p´agina 65).
2.5. GRAFOS 30
2.5. Grafos
La teor´ıa de grafos estudia las propiedades de los grafos, que son colecciones de objetos llamados v´ertices (o nodos) conectados por l´ıneas llamadas aristas (o arcos) que pueden tener orientaci´on (direcci´on asignada). T´ıpicamente, un grafo est´a com- puesto de una serie de puntos (los v´ertices) conectados por l´ıneas (las aristas).
Existen diferentes formas de almacenar grafos en una computadora. La estructura de datos usada depende de las caracter´ısticas del grafo y el algoritmo usado para manipularlo. Te´oricamente se pueden distinguir las estructuras de listas y las de matrices, pero usualmente, lo mejor es una combinaci´on de ambas. Las listas son preferidas en grafos dispersos porque tienen un eficiente uso de la memoria. Por otro lado, las matrices proveen acceso r´apido, pero pueden consumir grandes cantidades de memoria.
2.5.1. Definiciones
V´ertice
Un v´ertice es la unidad fundamental de la que est´an formados los grafos. Los v´ertices son tratados como un objeto indivisible y sin propiedades, aunque puedan tener una estructura adicional dependiendo de la aplicaci´on por la cual se usa el grafo; por ejemplo, una red sem´antica es un grafo en donde los v´ertices representan conceptos o clases de objetos.
Grafo
Un grafo es una pareja de conjuntos G = (V, A), donde V es el conjunto de v´ertices, y A es el conjunto de aristas, este ´ultimo es un conjunto de subconjuntos de la forma (u,v) tal que (u,v) ∈ V2, donde u 6= v. Para simplificar, notaremos la arista (a,b) como ab.
En teor´ıa de grafos, s´olo queda lo esencial del dibujo: la forma de las aristas no son relevantes, s´olo importa a qu´e v´ertices est´an unidas. La posici´on de los v´ertices tampoco importa, y se puede variar para obtener un grafo m´as claro. Generalmente,
se considera que colocar los v´ertices en forma de pol´ıgono regular da grafos muy legibles.
Pr´acticamente cualquier red puede ser modelada con un grafo: una red de carre- teras que conecta ciudades, una red el´ectrica o un alcantarillado...
Subgrafo
Un subgrafo de un grafo G es un grafo cuyos conjuntos de v´ertices y aristas son subconjuntos de los de G. Se dice que un grafo G contiene a otro grafo H es subgrafo de G.
Aristas dirigidas y no dirigidas
En algunos casos es necesario asignar un sentido a las aristas, por ejemplo, si se quiere representar la red de las calles de una ciudad con sus inevitables direcciones
´
unicas. El conjunto de aristas ser´a ahora un subconjunto de todos los posibles pares ordenados de v´ertices, con (a, b) 6= (b, a).
Las aristas no orientadas se consideran bidireccionales para efectos pr´acticos (equi- vale a decir que existen dos aristas orientadas entre los nodos, cada una en un sentido).
Las aristas orientadas suelen representarse con forma de flecha en funci´on de la direcci´on permitida.
Figura 2.8: Tipos de aristas de grafos
Se considera la caracter´ıstica de “grado” (positivo o negativo) de un v´ertice v (y se indica como d(V)), como la cantidad de aristas que llegan o salen de ´el; para el caso de grafos no orientados, el grado de un v´ertice es simplemente la cantidad de aristas que tocan este v´ertice.
2.5. GRAFOS 32
Seg´un la terminolog´ıa seguida en algunos problemas cl´asicos de Investigaci´on Ope- rativa (p.ej.: el Problema del flujo m´aximo), a un v´ertice del que s´olo salen aristas se le denomina fuente. Por el contrario, a aquellos en los que s´olo entran aristas se les denomina pozo o sumidero.
2.5.2. Caracterizaci´ on de los Grafos
Grafos Simples
Un grafo es simple si a lo sumo s´olo una arista une dos v´ertices cualesquiera. Esto es equivalente a decir que una arista cualquiera es la ´unica que une dos v´ertices espec´ıficos. Si no es simple se denomina complejo.
Grafos Conexos
Un grafo es conexo si cada par de v´ertices est´a conectado por un camino; es decir, si para cualquier par de v´ertices (a, b), existe al menos un camino posible desde a hacia b.
Un grafo es fuertemente conexo si cada par de v´ertices est´a conectado por al menos dos caminos disjuntos; es decir, es conexo y no existe un v´ertice tal que al sacarlo el grafo resultante sea disconexo.
Es posible determinar si un grafo es conexo: se usa un algoritmo b´usqueda de grafos que asegure que, si existe una ruta, la encuentre; como pueden ser B´usqueda en anchura (BFS) o B´usqueda en profundidad (DFS).
En t´erminos matem´aticos la propiedad de un grafo de ser (fuertemente) conexo permite establecer en base a ´el una relaci´on de equivalencia para sus v´ertices, la cual lleva a una partici´on de ´estos en ”componentes (fuertemente) conexas”, es decir, porciones del grafo, que son (fuertemente) conexas cuando se consideran como grafos aislados. Esta propiedad es importante para muchas demostraciones en teor´ıa de grafos.
Figura 2.9: Diferencias entre grafo conexo y no conexo
Grafos Completos
Un grafo simple es completo si existen aristas uniendo todos los pares posibles de v´ertices. Es decir, todo par de v´ertices (a, b) debe tener una arista e que los une.
El conjunto de los grafos completos es denominado usualmente K, siendo Kn el grafo completo de n v´ertices el cual tiene exactamente las aristas dadas por la siguiente f´ormula:
n(n-1) 2
La representaci´on gr´afica de los Kn como los v´ertices de un pol´ıgono regular da cuenta de su peculiar estructura.
Los grafos completos de n v´ertices, para n entre 1 y 8 son estos:
Figura 2.10: Grafos completos
2.6. RUTAS 34
Grafos ponderados
En muchos casos, es preciso atribuir a cada arista un n´umero espec´ıfico, llamado valuaci´on, ponderaci´on o coste seg´un el contexto, y se obtiene as´ı un grafo valuado.
Formalmente, es un grafo con una funci´on v: A → R+.
Por ejemplo, un representante comercial tiene que visitar n ciudades conectadas entre s´ı por carreteras; su inter´es previsible ser´a minimizar la distancia recorrida (o el tiempo, si se pueden prever atascos). El grafo correspondiente tendr´a como v´ertices las ciudades, como aristas las carreteras y la valuaci´on ser´a la distancia entre ellas.
Figura 2.11: Ejemplo de grafo
2.6. Rutas
Fijemonos en la siguiente imagen que valdr´a de ejemplo la red en la que se utili- zar´a de ejemplo para explicar c´omo funcionan los algoritmos:
Figura 2.12: Red ejemplo