scieee AI-readable full text Open interactive document viewer

Software para la gestión de un proyecto de datos LiDAR en un sistema de información geográfica

López Sánchez, Daniel

Full text

Tutor: Miguel S´anchez L´opez Valencia septiembre 2010 Daniel L´opez S´anchez Proyecto fin de carrera Software para la gesti´on de un proyecto de datos LiDAR en un sistema de informaci´on geogr´afica. ´ Indice general 1. Introducci´on 1 1.1. Prop´osito ......................... 1 1.2. La Empresa DIELMO 3D S.L. . . . . . . . . . . . . . . 2 1.3. Metas y Objetivos . . . . . . . . . . . . . . . . . . . . 2 1.4. Contexto del Proyecto . . . . . . . . . . . . . . . . . . 5 1.5. Dependencias del proyecto . . . . . . . . . . . . . . . . 7 2. La Tecnolog´ıa LiDAR 9 2.1. Introducci´on a la Tecnolog´ıa LiDAR . . . . . . . . . . . 9 2.2. Generalidades . . . . . . . . . . . . . . . . . . . . . . . 10 2.3. Ventajas e Inconvenientes . . . . . . . . . . . . . . . . 13 2.4. Aplicaciones........................ 15 3. Antecedentes 25 3.1. Introducci´on........................ 25 3.2. Sistema de informaci´on geogr´afica . . . . . . . . . . . . 26 3.2.1. Aplicaciones de los SIG. . . . . . . . . . . . . . 31 3.2.2. Modelos de representaci´on. . . . . . . . . . . . . 43 3.2.3. Flujo de trabajo en un sistema de informaci´on geogr´afica...................... 49 3.2.4. Infraestructuras de Datos Espaciales . . . . . . 51 3.2.4.1. WFS (Web Feature Service): . . . . . 51 3.2.4.2. WMS (Web Feature Service): . . . . 52 3.2.4.3. WCS (Web Coverage Service): . . . . 53 3.2.5. Historia de los sistemas de informaci´on geogr´afica. 53 3.2.6. Sistemas de informaci´on geogr´afica en el mercado 55 3.3. El sistema de informaci´on geogr´afica gvSIG . . . . . . . 55 3.3.1. Formatos soportados . . . . . . . . . . . . . . . 59 3.3.2. Herramientas disponibles . . . . . . . . . . . . . 60 3.3.3. La interfaz de gvSIG . . . . . . . . . . . . . . . 63 3.3.4. Proyectos y Documentos propios de gvSIG . . . 64 iii 3.3.4.1. Vista . . . . . . . . . . . . . . . . . . 65 3.3.4.2. Tabla . . . . . . . . . . . . . . . . . . 69 3.3.4.3. Mapa . . . . . . . . . . . . . . . . . . 71 3.3.5. Extensi´on geoBD (gestor de bases de datos) . . 75 3.3.5.1. La extensi´on espacial de PostgreSQL. PostGIS................. 77 3.3.6. Extensi´on de Geoprocesamiento . . . . . . . . . 80 3.3.7. Libreria Java Topology Suite . . . . . . . . . . . 88 3.3.8. Libreria JFreeChart . . . . . . . . . . . . . . . . 90 3.4. SoftwareLiDAR...................... 91 3.4.1. Productos de Terrasolid . . . . . . . . . . . . . 91 3.4.1.1. TerraScan . . . . . . . . . . . . . . . . 92 3.4.1.2. TerraSlave . . . . . . . . . . . . . . . . 94 3.4.1.3. TerraMach . . . . . . . . . . . . . . . 95 3.4.1.4. TerraModeler . . . . . . . . . . . . . . 96 3.4.1.5. TerraPhoto . . . . . . . . . . . . . . . 98 3.4.1.6. TerraSurvey . . . . . . . . . . . . . . . 100 3.4.1.7. TerraPipeNet . . . . . . . . . . . . . . 101 3.4.1.8. TerraPipe . . . . . . . . . . . . . . . . 101 3.5. Otras aplicaciones relacionadas . . . . . . . . . . . . . 101 3.5.1. SEXTANTE....................101 4. Planificaci´on y evaluaci´on de costes 111 4.1. Consideraciones previas . . . . . . . . . . . . . . . . . . 111 4.2. Planificaci´on inical . . . . . . . . . . . . . . . . . . . . 112 4.3. Seguimiento........................114 5. An´alisis 117 5.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . 117 5.2. Arquitectura de gvSIG . . . . . . . . . . . . . . . . . . 120 5.2.1. Introducci´on . . . . . . . . . . . . . . . . . . . . 120 5.2.2. Andami.......................122 5.2.2.1. Funcionalidad. . . . . . . . . . . . . . 124 5.2.2.2. Plugins y extensiones. . . . . . . . . . 128 5.2.2.3. El fichero config.xml . . . . . . . . . . 130 5.2.2.4. Extensiones . . . . . . . . . . . . . . . 138 5.2.2.5. Gesti´on de ventanas de Andami . . . . 142 5.2.2.6. Servicios a los plugins . . . . . . . . . 152 5.2.3. La librer´ıa libFMap . . . . . . . . . . . . . . . . 160 5.2.3.1. MapControl . . . . . . . . . . . . . . . 162 5.2.3.2. MapContext . . . . . . . . . . . . . . 164 5.2.3.3. Layers . . . . . . . . . . . . . . . . . . 173 5.2.3.4. DataSources y Drivers . . . . . . . . . 179 5.3. An´alisis funcional . . . . . . . . . . . . . . . . . . . . . 180 5.3.1. Introducci´on . . . . . . . . . . . . . . . . . . . . 180 5.3.2. Casos de uso . . . . . . . . . . . . . . . . . . . 180 6. Dise˜no 215 6.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . 215 6.2. Contexto..........................216 6.3. Dise˜no del ducumento LiDAR . . . . . . . . . . . . . . 217 6.4. Dise˜no del plugin . . . . . . . . . . . . . . . . . . . . . 218 6.4.1. Diagramas de secuencia . . . . . . . . . . . . . 222 6.5. Dise˜no interfaces . . . . . . . . . . . . . . . . . . . . . 222 7. Implementaci´on 231 7.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . 231 7.2. Eclipse...........................231 7.3. Implementaci´on del documento LiDAR . . . . . . . . . 232 7.3.1. Persistencia en gvSIG. . . . . . . . . . . . . . . 234 7.4. Implementaci´on del plugin . . . . . . . . . . . . . . . . 237 7.4.1. Dependencias del proyecto . . . . . . . . . . . . 237 7.4.2. El fichero config.xml . . . . . . . . . . . . . . . 238 7.4.3. La extensi´on de carga de capas . . . . . . . . . 240 7.4.4. La extensi´on de selecci´on del proyecto activo . . 245 7.4.5. La extensi´on de visualizaci´on de gr´aficas longitudinales......................247 7.4.6. La extensi´on de conversi´on de .LAS a .XYZ . . 252 7.4.7. La extensi´on de conversi´on de .XYZ a .LAS . . 256 7.5. Implementaci´on de algoritmos . . . . . . . . . . . . . . 258 8. Pruebas, resultados y rendimiento 263 8.1. Introducci´on . . . . . . . . . . . . . . . . . . . . . . . . 263 8.2. Pruebas de rendimiento . . . . . . . . . . . . . . . . . . 265 9. Conclusiones 269 9.1. S´ıntesis del trabajo . . . . . . . . . . . . . . . . . . . . 269 9.2. Colaboraciones . . . . . . . . . . . . . . . . . . . . . . 271 9.3. Perspectivas de futuro y mejoras. . . . . . . . . . . . . 273 10.Anexos 277 10.1. Manual de usuario DielmoOpenLidar . . . . . . . . . . 277 A. Acr´onimos 313 B. Licencia 315 Bibliograf´ıa (Libros y art´ıculos) 325 C. Agradecimientos 327 ´ Indice de figuras 1.1. Logo de DIELMO 3D S.L. . . . . . . . . . . . . . . . . 2 1.2. LogodegvSIG. ...................... 6 1.3. Logo de SEXTANTE. . . . . . . . . . . . . . . . . . . . 7 2.1. Esquema de funcionamiento de la tecnolog´ıa LiDAR. . 11 2.2. Penetraci´on del l´aser en la vegetaci´on. . . . . . . . . . 12 2.3. Comportamiento del rayo l´aser en diferentes superficies. 13 2.4. Esquema de la adquisici´on de datos mediante el l´aser. . 15 2.5. Esquema del comportamiento del rayo l´aser en la vegetaci´on. .......................... 18 2.6. Ejemplo de la penetraci´on del l´aser en la vegetaci´on. . 19 2.7. MDT y MDS de un bosque con vegetaci´on intensa de Galicia. .......................... 20 2.8. Im´agenes del proyecto de Segovia realizado por DIELMO3DS.L......................... 21 2.9. Envolvente de calados m´aximos por inundaci´on costera en el T´ermino municipal de Oliva . . . . . . . . . . . . 23 3.1. Componentes de un sistema de informaci´on geogr´afica. 26 3.2. Sistema de informaci´on geogr´afica. . . . . . . . . . . . 27 3.3. Esquema de representaci´on multicapa de un SIG. . . . 28 3.4. Esquema de las funciones GIS. . . . . . . . . . . . . . . 31 3.5. Interfaz de un sistema de gesti´on de flotas. . . . . . . . 32 3.6. SIG con una capa vectorial visible del catastro. . . . . 33 3.7. Sistema basado en gvSIG gisEIEL. . . . . . . . . . . . 34 3.8. Aplicaci´on GIS para la dministraci´on local. Diputaci´on deJa´en. .......................... 34 3.9. Aplicaci´on GIS para la explotaci´on de racursos naturales. 35 3.10. Aplicaci´on GIS mostrando c´alculos de ´areas de influencia. 35 3.11. Servicio WMS del Camino de Santiago. . . . . . . . . . 36 3.12. Aplicaci´on GIS para el estudio de la salud p´ublica. . . 37 3.13. Aplicaci´on GIS para situaciones de cat´astrofe. . . . . . 38 vii 3.14. Aplicaci´on GIS para el estudio de la criminalidad. . . . 39 3.15. Aplicaci´on de gvSIG en un estudio relativo al monitoreo de incendios. (Quintas jornadas gvSIG) . . . . . . . . . 40 3.16. Salida gr´afica de la aplicaci´on de estudio relativo al monitoreo de incendios. . . . . . . . . . . . . . . . . . . 41 3.17. Aplicaci´on GIS parala ense˜nanza de geograf´ıa. . . . . . 41 3.18. Nokia sport tracker. GPS tracker aplicado a pr´acticas deportivas.......................... 42 3.19. Aplicaci´on Asignet para la gesti´on de redes de fibra ´optica. 42 3.20. Esquema de los modelos r´aster y vectorial. . . . . . . . 43 3.21. Sistema de coordenadas geogr´aficas que utiliza las dos coordenadas angulares latitud (norte o sur) y longitud (este u oeste) para determinar las posiciones de la superficie terrestre. . . . . . . . . . . . . . . . . . . . . . 45 3.22. Sistema de coordenadas UTM (Universal Transverse Mercator).......................... 47 3.23. Dispositivos para la adquisici´on de datos espaciales. . . 50 3.24.LogodelOGC. ...................... 51 3.25. Infraestructuras de datos espaciales. . . . . . . . . . . . 52 3.26. Tabla comparativa de diferentes GIS (fuente wikipedia). 56 3.27.LogoGNUGPL. ..................... 58 3.28. Men´u a˜nadir capa de gvSIG. . . . . . . . . . . . . . . . 59 3.29. Men´u a˜nadir capa de gvSIG. . . . . . . . . . . . . . . . 60 3.30. Herramientas de navegaci´on. . . . . . . . . . . . . . . . 61 3.31. Interfaz principal de gvSIG. . . . . . . . . . . . . . . . 64 3.32. Tipos de documentos en gvSIG. . . . . . . . . . . . . . 65 3.33. Documento vista en gvSIG. . . . . . . . . . . . . . . . 65 3.34. Tabla de contenidos de una vista. . . . . . . . . . . . . 66 3.35. Ventana de visualizaci´on de una vista. . . . . . . . . . 66 3.36. Localizador de una vista. . . . . . . . . . . . . . . . . . 67 3.37. Documento tipo tabla en el gestor de proyectos. . . . . 69 3.38. Tabla en gvSIG. . . . . . . . . . . . . . . . . . . . . . . 70 3.39. Herramientas del menu Tabla. . . . . . . . . . . . . . . 71 3.40. Documento tipo mapa en el gestor de proyectos. . . . . 72 3.41. Documento tipo mapa. . . . . . . . . . . . . . . . . . . 73 3.42. S´ımbolos de norte. . . . . . . . . . . . . . . . . . . . . 74 3.43. Opciones asociadas a un mapa. . . . . . . . . . . . . . 74 3.44. Plantilla de un mapa. . . . . . . . . . . . . . . . . . . . 75 3.45. Interfaces de la extensi´on geoBD. . . . . . . . . . . . . 76 3.46. Certificaci´on OGC. . . . . . . . . . . . . . . . . . . . . 78 3.47. ´ Area de influencia de 4 puntos. . . . . . . . . . . . . . 81 3.48. Enlace espacial. . . . . . . . . . . . . . . . . . . . . . . 82 3.49. Enlace espacial. . . . . . . . . . . . . . . . . . . . . . . 83 3.50.Diferencia.......................... 84 3.51.Intersecci´on......................... 84 3.52.Uni´on............................ 85 3.53.ConvexHull. ....................... 85 3.54.Dissolve........................... 86 3.55.Juntar............................ 87 3.56.Juntar............................ 87 3.57.Reproyeccion........................ 88 3.58. M´etodos de an´alisis espacial de JTS. . . . . . . . . . . 89 3.59. Distintos tipos de gr´aficas de JFreeChart. . . . . . . . . 90 3.60. Visualizaci´on de un corte longitudinal de datos LiDAR 93 3.61. Esquema de TerraSlave . . . . . . . . . . . . . . . . . . 95 3.62. La l´ınea de vuelo y diferentes pasadas del l´aser ´utiles para calibrar los datos. . . . . . . . . . . . . . . . . . . 96 3.63. Datos antes y despu´es de ser ajustados. . . . . . . . . . 97 3.64. Datos LiDAR antes y despu´es de eliminar el solape entre distintas pasadas del avi´on. . . . . . . . . . . . . . 98 3.65. Modelos digitales de TerraModeler. . . . . . . . . . . . 98 3.66. Correcci´on de color de ortofotos. . . . . . . . . . . . . . 99 3.67. Dise˜no de la red de tuber´ıas. . . . . . . . . . . . . . . . 102 3.68. Visualizaci´on de la red de tuber´ıas en 3D. . . . . . . . 103 3.69. Gestor de extensiones de SEXTANTE. . . . . . . . . . 103 3.70. Extensi´on de SEXTANTE. . . . . . . . . . . . . . . . . 106 3.71. Modelador gr´afico de SEXTANTE. . . . . . . . . . . . 107 3.72. Ejecuci´on por lotes de SEXTANTE. . . . . . . . . . . . 107 3.73. L´ınea de comandos de SEXTANTE. . . . . . . . . . . . 108 4.1. Diagrama de Gantt de la planificaci´on del proyecto. . . 115 5.1. Aparici´on de errores en las distintas fases de desarrollo desoftware. ........................119 1.3 METAS Y OBJETIVOS formatos LAS o BIN, ortofotos, puntos de control, resoluci´on, ´area de inter´es, shape de bloques(ESRI Shapefile .SHP es un formato vectorial de almacenamiento digital donde se guarda la localizaci´on de los elementos geogr´aficos y los atributos asociados a ellos), capas vectoriales (por ejemplo de edificios vectorizados, puentes, l´ımites de r´ıos, etc), definici´on de leyendas de clasificaci´on, etc. Por lo tanto un proyecto LiDAR puede manejar una gran volumen de datos de entrada de distintos tipos. Es de gran utilidad, por consiguiente, proporcionar al usuario final un conjunto de herramientas de gesti´on que le permitan tener bien definidos y organizados los datos de entrada, para su posterior utilizaci´on. M´as adelante se detallan todas las herramientas que conforman este grupo que permiten definir los elementos de un proyecto LiDAR. -Herramientas de visualizaci´on: Permitir´an hacer una exploraci´on visual de los datos. La pretensi´on en este proyecto es poder dotar al sistema de informaci´on geogr´afica de la capacidad de visualizaci´on de una gran cantidad de datos, del orden de cientos de GigaBytes de datos LiDAR brutos (nube de puntos irregulares en formato LAS o BIN) . Para el desarrollo de este tipo de herramientas ha sido muy importante la eficiencia de los algoritmos y la estrategia aplicada para su implementaci´on precisamente por el gran volumen de datos con los que se pretende trabajar. Como se explica posteriormente se han implementado varios tipos de visualizaciones en funci´on de la altura, clasificaci´on e intensidad. Por otro lado se ha dotado a la aplicaci´on de una herramienta de visualizaci´on avanzada para la representaci´on de perfiles longitudinales de los datos LiDAR haciendo uso de la informaci´on de la altura que ´estos datos nos proporcionan. -Herramientas de clasificaci´on: Permitir´an al usuario hacer una clasificaci´on manual de los datos LiDAR definidos en el proyecto. La clasificaci´on permite diferenciar la naturaleza de los datos. Podemos clasificar edificios, vegetaci´on alta, media o baja, agua, suelo, y aplicar a esta clasificaci´on diferentes leyendas que el usuario tendr´a la posibilidad de definir y ampliar. -Herramientas de c´alculo: Permitir´an al usuario un procesado de los 4 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ datos para distintas finalidades como la obtenci´on de productos finales como MDT, MDS, etc. Consistir´an en una colecci´on de algoritmos de procesado, an´alisis, conversi´on de formatos, etc. La intenci´on es dotar a la comunidad de usuarios de la capacidad de extender las funcionalidades del proyecto mediante la facilidad de implementar nuevos algoritmos r´apidamente. De esta forma implementar nuevas funcionalidades para c´alculos con datos LiDAR se reduce ´unicamente a la implementaci´on de un nuevo algoritmo y su incorporaci´on a este proyecto como se explica m´as adelante. 1.4 Contexto del Proyecto La idea de DIELMO 3D S.L. inicialmente era la de comercializar el software que estaba desarrollando y vender licencias para su utilizaci´on, viendo en su software una oportunidad de negocio ya que ´este en muchos aspectos era m´as eficiente que mucho software comercial existente. Sin embargo, DIELMO 3D S.L. entr´o en contacto con la Conselleria de Infraestructuras y Transporte de la Comunidad Valenciana conociendo el proyecto gvSIG. GvSIG es un sitstema de informaci´on geogr´afica de la Conselleria de infraestructuras y Transporte de la comunidad Valenciana. Se trata de un proyecto open source. En este momento DIELMO se decide por todo lo contrario. Se propone implementar dentro de gvSIG el software que estaba utilizando internamente. As´ı se pretende hacer un software libre para trabajar con datos LiDAR dentro de un sistema de informaci´on geogr´afica libre como es gvSIG. Con el desarrollo de este software libre para el manejo de datos LiDAR, DIELMO 3D pretende acercar el uso de la tecnolog´ıa LiDAR a los usuarios SIG est´andar y a la comunidad cient´ıfica, con el objetivo de extender su uso. Adem´as, actualmente se tiende a que cada vez haya m´as datos LiDAR disponibles que cubran grandes extensiones del territorio y de aqu´ı a unos a˜nos toda esta informaci´on ser´a libre para que cualquiera pueda acceder a ella. Por ejemplo, hay disponibles datos LiDAR de todo el Pa´ıs Vasco y se pueden conseguir a trav´es de la Diputaci´on Foral de Guip´uzcoa y del Servicio de Cartograf´ıa del Departamento de Medio Ambiente y Ordenaci´on del Territorio de Go5 1.4 CONTEXTO DEL PROYECTO bierno Vasco. Una peque˜na muestra de estos datos va a ser utilizada durante este proyecto para ir mostrando las herramientas que se han implementado. Figura 1.2: Logo de gvSIG. En 2003 la Conselleria de Infraestructuras y transportes sac´o a concurso el desarrollo e implantaci´on de un nuevo programa para el manejo de informaci´on geogr´afica (SIG). IVER Tecnolog´ıas de la Informaci´on es la empresa ganadora del concurso que lleva el peso del desarrollo. As´ı nace gvSIG. Algunas de las caracter´ısticas a destacar de este proyecto son: portable, modular, de c´odigo abierto, sin licencias, sujeto a est´andares. El proyecto gvSIG cuenta con una infraestructura de colaboraci´on s´olida. Un proyecto que colabora con gvSIG es el proyecto SEXTANTE o Sistema EXTreme˜no de AN´alisis TErritorial. SEXTANTE es una extensi´on de gvSIG. Consiste en una librer´ıa de algoritmos de an´alisis geoespacial. El objetivo principal de SEXTANTE es crear una plataforma que facilite tanto el uso como la implementaci´on de estos algoritmos. SEXTANTE facilita la tarea del programador del algoritmo quien no tiene que implementar la interfaz gr´afica, pues ´esta es generada por el propio SEXTANTE. Por esta raz´on se entiende que SEXTANTE puede ser un complemento ideal para este proyecto permiti´endonos implementar a nosotros y a la comunidad de colaboradores nuevas funcionalidades y algoritmos al proyecto LiDAR de manera sencilla. En posteriores cap´ıtulos se detallan aspectos t´ecnicos de SEXTANTE y gvSIG y se aclara en qu´e consiste la implementaci´on de nuevos algoritmos de SEXTANTE. Nos encontramos trabajando con una tecnolog´ıa en expansi´on con un amplio abanico de aplicaciones como es la tecnolog´ıa LiDAR. Dentro de un sistema de informaci´on geogr´afica libre, con una comunidad de usuarios y desarrolladores en crecimiento y con un alto componente en I+D+I como es gvSIG. Con otros proyectos y extensiones a nuestro alcance que pueden ser de gran utilidad para prop´ositos variados que facilitan la extensi´on de funcionalidades como es SEXTANTE. Y con 6 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ el impulso que supone colaborar en un proyecto como gvSIG que avanza r´apidamente y cuenta cada vez con m´as aceptaci´on a nivel global. 1.5 Dependencias del proyecto Trabajar dentro de un marco de colaboraci´on implica una serie de ventajas y posibilidades de progreso evidentes. Del mismo modo aparecen una serie de limitaciones y dependencias con las tecnolog´ıas con las que se est´a trabajando. El sistema de informaci´on geogr´afica gvSIG cuenta con un grupo de supervisi´on y normalizaci´on, a modo de organismo vertebrador que permite dar una cierta coherencia a los nuevos desarrollos. Figura 1.3: Logo de SEXTANTE. Como se menciona en el punto anterior en el proyecto est´a totalmente ligado a gvSIG y hace uso de SEXTANTE. Por otra parte hay distintos formatos LiDAR. Estos factores son muy importantes a tener en cuenta. La evoluci´on del proyecto va a depender muy estrechamente de los cambios que en ellos se produzcan. Tanto futuras versiones de gvSIG y de SEXTANTE como la aparici´on de nuevos formatos LiDAR implicar´an la necesidad de adaptaci´on del proyecto. 7 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ CAP´ ITULO 2 La Tecnolog´ıa LiDAR 2.1 Introducci´on a la Tecnolog´ıa LiDAR La medici´on de distancia con l´aser (Light Detection and Ranging o LiDAR) resulta de la combinaci´on de diversos elementos. La finalidad del sistema es la detecci´on y medici´on de distancias desde el espacio a´ereo a trav´es de la luz l´aser con fines cartogr´aficos. Este cap´ıtulo describe las caracter´ısticas fundamentales de la tecnolog´ıa LiDAR, su funcionamiento,aplicaciones y ventajas e inconvenientes de su uso frente a otras tecnolog´ıas. 9 2.2 GENERALIDADES 2.2 Generalidades El sistema LiDAR aerotransportado est´a revolucionando la adquisici´on de datos digitales de elevaci´on para diferentes aplicaciones del ´ambito de la cartograf´ıa como por ejemplo estudios de inundabilidad, elaboraci´on de mapas etc. LiDAR es una alternativa de garant´ıa para la generaci´on de Modelos Digitales del Terreno (MDT) de calidad en cuanto a precio y tiempo de elaboraci´on. La medici´on se realiza por medio de un tel´emetro 1que va montado en una plataforma aerotransportada como por ejemplo aviones de ala fija o helic´opteros para realizar un barrido sobre una zona del terreno mediante la emisi´on del l´aser. El rebote en el terreno del l´aser es captado por el sensor lo que permite determinar la distancia entre los dos puntos. Los pulsos l´aser que son reflejados desde tierra son recibidos por la ´optica del sensor y se transforma en informaci´on electr´onica. Por medio de unos medidores de intervalos de tiempo (TIMs), se mide con alta precisi´on el tiempo que cada pulso tarda en viajar hasta el suelo y regresar al dispositivo emisor. Conociendo la velocidad de propagaci´on del l´aser en la atm´osfera es posible determinar la distancia desde el emisor a la superficie. Esto junto con sistemas de posicionamiento GPS 2permite tener la informaci´on de la altura y la posici´on de los puntos que se han registrado. El comportamiento del pulso l´aser sobre los distintos tipos de superficie es diferente: En una superficie s´olida (suelo, edificios, etc.) el rayo l´aser refleja sin problemas y vuelve al avi´on. En este caso la diferencia entre el primero y el ´ultimo pulso peque˜na (del orden del error del instrumento). En el agua el rayo l´aser es absorbido y no retorna al sensor. Por lo tanto no se obtiene ninguna informaci´on. 1dispositivo capaz de medir distancias de forma remota. 2GPS: Global Positioning System o Sistema de Posicionamiento Global que permite determinar en todo el mundo la posici´on de un objeto, una persona, un veh´ıculo o una nave, con una precisi´on hasta de cent´ımetros, usando GPS diferencial, aunque lo habitual son unos pocos metros 10 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 2.1: Esquema de funcionamiento de la tecnolog´ıa LiDAR. En la vegetaci´on parte del pulso es reflejado al chocar contra ella en su parte superior pero al tratarse de una superficie no s´olida parte de ´el penetra hasta el suelo que tambi´en lo refleja. De esta manera se puede determinar la distancia entre ambos rebotes o lo que es lo mismo la frondosidad o altura de la vegetaci´on. Mediante LiDAR por lo tanto se puede determinar la altura del suelo en zonas incluso con vegetaci´on densa. Para el correcto posicionamiento de los puntos medidos en el terreno se utilizan dos t´ecnicas combinadas: INS (Sistema de Navegaci´on Inercial): mide la orientaci´on del sensor. Mide los ´angulos con una precisi´on de 0.001 grados lo que permite compensar cualquier cambio brusco de direcci´on al que pueda verse sometido el sensor en el avi´on a causa de turbulencias y conocer las coordenadas exactas del punto que se ha medido. GPS diferencial: permite establecer la posici´on exacta del sensor. Un operador es el encargado de controlar durante el vuelo las funciones del sistema LiDAR a trav´es de un interfaz de operador (OI). 11 2.2 GENERALIDADES Figura 2.2: Penetraci´on del l´aser en la vegetaci´on. Durante la adquisici´on de datos el instrumento genera y emite estrechos pulsos de luz infrarroja y un espejo de barrido dirige los pulsos en direcci´on perpendicular a la l´ınea de vuelo. El movimiento del espejo cubre a ambos lados de la direcci´on de vuelo, en funci´on del ´angulo especificado por el operador. El avance del avi´on cubre en la direcci´on del vuelo produci´endose un barrido del terreno. Durante la misi´on de adquisici´on de datos GPS en el avi´on se graba la informaci´on del sistema de orientaci´on en una memoria de alta velocidad, mientas que el ´angulo y la posici´on del espejo de barrido se guardan en la unidad de colecci´on de datos principal. Tras la fase de adquisici´on de datos, en el post-procesado se combina toda esta informaci´on con el GPS diferencial para la obtenci´on de precisa de las coordenadas x, y, z (datos de latitud, longitud y altura del terreno) para cada uno de los pulsos. La adquisici´on de los datos posicionales se realiza a intervalos definidos. El equipo con el que trabaja la empresa utiliza una frecuencia de adquisici´on de datos de 33KHz. Los datos resultantes LiDAR son una red de puntos muy densa con 12 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 2.3: Comportamiento del rayo l´aser en diferentes superficies. una densidad variable de puntos por metro cuadrado en funci´on de la altura del vuelo y del ´angulo de barrido del l´aser. En general la precisi´on de los datos LiDAR esta determinada por la altura del vuelo, el di´ametro del rayo l´aser, la calidad de los datos GPS / INS y los procedimientos de postprocesamiento. En un vuelo est´andar a 850 m. de altura se obtiene una precisi´on horizontal de 0.424 m. (altura de vuelo/2000). La precisi´on horizontal es mejor de 15 cm. dentro de una desviaci´on est´andar. El post-procesado de los datos del avi´on y las medidas de GPS en tierra se completan en tierra. Es este procesado de datos uno de los objetos de estudio de este proyecto. 2.3 Ventajas e Inconvenientes Algunas de las ventajas e inconvenientes de esta tecnolog´ıa se citan a continuaci´on: 13 2.4 APLICACIONES (a) MDT (b) MDS Figura 2.7: MDT y MDS de un bosque con vegetaci´on intensa de Galicia. tiene como objetivo conocer los caudales en r´egimen natural de la m´axima crecida ordinaria y de otras avenidas (al menos las de 100 y 500 a˜nos) para cada uno de los tramos a estudiar. Esto servir´a de entrada para el posterior estudio hidr´aulico. •Estudio hidr´aulico: conociendo los mecanismos de inundaci´on gracias al estudio geomorfol´ogico y a los hidrogramas y caudales m´aximos resultantes del estudio hidrol´ogico, los objetivos del estudio hidr´aulico son para cada periodo de retorno: ◦Obtener los calados m´aximos alcanzados. ◦Definir la zona de inundaci´on. ◦Si fuera necesario, obtener la distribuci´on de velocidades m´aximas en la Zona de Inundaci´on. En la figura 2.9 se muestra la envolvente de calados m´aximos obtenidos en la simulaci´on bidimensional de un temporal mar´ıtimo en la costa del municipio de Oliva asociado a 500 a˜nos de periodo de retorno. Modelos urbanos en 3D. Generaci´on de mapas de ruido. 20 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ (a) Imagen de intensidades. (b) R´aster 1-25000. (c) MDT (d) MDS Figura 2.8: Im´agenes del proyecto de Segovia realizado por DIELMO 3D S.L. Escenarios virtuales en 3D. Actualizaci´on muy precisa de la l´ınea costera. A partir de productos generados con LiDAR es posible la obtenci´on de la posici´on de la l´ınea de costa con mucha precisi´on permitiendo realizar diferentes actuaciones como: •Estudios de erosi´on de costas. •Localizaci´on precisa de la l´ınea de costa y estudio de su evoluci´on. •Control de la morfolog´ıa de la zona costera en cuanto a su 21 2.4 APLICACIONES protecci´on. •Estudios de inundaciones en deltas y diques. Modelado de l´ıneas de alta tensi´on. 22 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 2.9: Envolvente de calados m´aximos por inundaci´on costera en el T´ermino municipal de Oliva 23 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ CAP´ ITULO 3 Antecedentes 3.1 Introducci´on En esta secci´on se van a presentar los conceptos y tecnolog´ıas en los que se encuadra la realizaci´on de este proyecto. Para de esta forma poder situarse en el contexto adecuado que permita el mejor entendimiento del resto de secciones que componen este documento. En primer lugar se va a hacer un repaso a los sistemas de informaci´on geogr´afica, se explicar´an conceptos b´asicos sobre su funcionamiento y utilizaci´on haciendo ´enfasis en el sistema de informaci´on geogr´afica gvSIG. A continuaci´on se analizar´an una serie de aplicaciones que permiten la visualizaci´on y procesado de datos LiDAR. De esta forma, se tratar´an funcionalidades que posteriormente estar´an disponibles en las aplicaciones aqu´ı presentadas. Finalmente, se analizar´an otras aplicaciones relacionadas con gvSIG que complementan su funcionalidad. Como es el caso de SEXTANTE 25 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA que se trata de una herramienta de an´alisis geoespacial. Su caracter´ıstica principal es proporcionar una plataforma de desarrollo de geoalgoritmos de manera sencilla. 3.2 Sistema de informaci´on geogr´afica Un sistema de informaci´on geogr´afica (SIG o GIS con las siglas en ingl´es) se define como: Base de datos computerizada que contiene informaci´on espacial [Cebri´an y Mark, 1986]. O tambi´en como: Una tecnolog´ıa inform´atica para gestionar y analizar informaci´on espacial. Otra posible definici´on m´as amplia ser´ıa: Un conjunto de herramientas para reunir, introducir, almacenar, recuperar, transformar y cartografiar datos espaciales sobre el mundo real para un conjunto particular de objetos [Burrough, 1988]. Tambi´en es importante mencionar la definici´on que proporciona el National Center for Geographic Information and Analysis de Estados Unidos: Un sistema de hardware, software, y procedimientos elaborados para facilitar la obtenci´on, gesti´on, manipulaci´on, an´alisis, modelado, representaci´on y salida de datos espacialmente referenciados, para resolver problemas complejos de planificaci´on y gesti´on [NCGIA, 1990]. Figura 3.1: Componentes de un sistema de informaci´on geogr´afica. Un Sistema de Informaci´on Geogr´afica se puede contemplar de manera mucho m´as simple como un conjunto de mapas de la misma porci´on de territorio, donde un lugar concreto tiene la misma localizaci´on en 26 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.2: Sistema de informaci´on geogr´afica. todos los mapas incluidos en el sistema de informaci´on. De esta manera, resulta posible realizar an´alisis de sus caracter´ısticas geoespaciales y tem´aticas de manera sencilla para un mejor conocimiento de la zona de estudio. Por lo tanto un sistema de informaci´on geogr´afica puede ser considerado como una tecnolog´ıa aplicada a la resoluci´on de problemas territoriales, adem´as de ser de gran utilidad en cualquier ´area y estudio donde el manejo de informaci´on espacial sea encesario o de gran valor a˜nadido. Los sistemas de informaci´on geogr´afica forman parte del ´ambito m´as extenso de los denominados sistemas de la informaci´on. Un sistema de la informaci´on incluye una base de datos, una base de conocimientos (un conjunto de procedimientos de an´alisis y manipulaci´on de los datos) y un sistema de interacci´on con el usuario. De la misma manera estos elementos se pueden encontrar en la organizaci´on general de un sistema de informaci´on geogr´afica. Un elemento muy relacionado con los sistemas de la informaci´on son los Sistemas de Apoyo a la Decisi´on, en estos sistemas los datos y la base de conocimientos conforman una estructura para servir de apoyo a la toma de decisiones, de esta forma se facilitan posibles respuestas y simulaciones en caso de optar por una alternativa u otra. Los SIG, en algunos casos, son de manera simult´anea, un Sistema de Informaci´on y un Sistema de Apoyo a la Decisi´on. 27 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA Figura 3.3: Esquema de representaci´on multicapa de un SIG. En la sociedad de la informaci´on es el contexto general donde est´an surgiendo los sistemas de informaci´on geogr´afica, tal y como se han definido. Esta organizaci´on social, producto de una nueva revoluci´on industrial, otorga una gran relevancia a la disponibilidad inmediata, de la informaci´on, lo que hace posible resolver problemas y responder preguntas r´apidamente. El proceso clave es la comercializaci´on o mercantilizaci´on de la informaci´on, lo que hace que ´esta se convierta en un bien m´as, que se compra y se vende, como cualquier otro. Las t´ecnicas de an´alisis geogr´afico, en este contexto, (existentes en un SIG) permiten, siendo usadas de modo adecuado, dar un valor a˜nadido a la informaci´on y ofrecer excelentes oportunidades para muchas aplicaciones en la vida real [Openshaw y Goddard, 1987]. Las nuevas tecnolog´ıas, como la inform´atica, nuevos sistemas de comunicaci´on, la inteligencia artificial, organizaci´on del conocimiento, etc. que dan estructura a la sociedad de la informaci´on, son utilizados en los sistemas de informaci´on geogr´afica. Existe cierta confrontaci´on entre lo que es un sistema de informaci´on geogr´afica y un programa de de cartograf´ıa asistida por ordenador o de gesti´on de base de datos. Hay autores como Dueker [DUEK, 1987] y Cowen [COW, 1988] que insisten en que lo m´as caracter´ıstico de un 28 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ SIG es su capacidad de an´alisis, de generar nueva informaci´on de un conjunto previo de datos mediante su manipulaci´on y reelaboraci´on. Por tanto, un sistema de informaci´on geogr´afica es m´as que un sistema de dise˜no asistido por computador (CAD) y lo es por su capacidad de relacionar elementos gr´aficos (puntos, l´ıneas, pol´ıgonos), que tambi´en son manejados por los sistemas CAD, con elementos de una base de datos, aspecto del que carecen los sistemas CAD. Por otra parte, los sistemas de informaci´on geogr´afica generan informaci´on adem´as de visualizarla a diferencia de los programas de cartograf´ıa asistida por ordenador. Por lo que se puede ver para el manejo de datos espaciales, los sistemas de informaci´on geogr´afica son el paso m´as importante desde la invenci´on de los mapas. Los SIG tienen las siguientes caracter´ısticas: Son sistemas dise˜nados para permitir la visualizaci´on de informaci´on geogr´afica expresada en forma de mapas. El punto m´as importante de su funcionamiento se encuentra en la posici´on de un elemento geogr´afico representatado por elementos gr´aficos (puntos, lineas, pol´ıgonos) y su informaci´on tem´aticas asociada. Sistemas que disponen de un amplio abanico de funciones de an´alisis y consulta que permiten la explotaci´on de la informaci´on geogr´afica para la resoluci´on de un problema o cubrir una necesidad determinada. Son el resultado de aportaciones de otra serie de disciplinas (matem´aticas, geograf´ıa, cartograf´ıa,etc.) de las que han obtenido una capacidad para el manejo de informaci´on geogr´afica. Almacenan relaciones espaciales entre los diferentes elementos del sistema. Esto permite interrogar al sistema sobre estas relaciones. 29 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA tecnolog´ıa SIG para tal finalidad. Representaci´on de rutas tur´ısticas, puntos de inter´es, aplicaciones web SIG que permiten a los usuarios participar en la actualizaci´on de informaci´on geogr´afica y tem´atica. Por ejemplo el IGN2ha publicado mediante un Servicio Web de Mapas WMS una colecci´on de mapas a escala 1:50.000 que cartograf´ıan el Camino de Santiago siguiendo el itinerario m´as popular, con informaci´on tem´atica que ser´a de utilidad para los peregrinos que durante el a˜no 2010, A˜no Xacobeo, decidan recorrer el Camino. La direcci´on del servicio es http://www.idee.es/wms/IGNCamino-Santiago/IGN-Camino-Santiago y las capas disponibles son ciudades del camino, ciudades de parada, etapas y un mapa general en formato raster. En la imagen 3.11 se observa del servicio cargado en Kosmo. Figura 3.11: Servicio WMS del Camino de Santiago. Salud p´ublica: Aplicaciones para la gesti´on e intervenci´on sanitaria en emergencias como el envio de ambulancias. Control y estudio de pandemias. En la imagen 3.12 se muestra una aplicaci´on SIG que realiza un estudio sobre la distribuci´on geogr´afica de casos de c´ancer diagnosticados durante un periodo determinado de tiempo. Seguridad p´ublica: Aplicaciones SIG por la polic´ıa para el control de la criminalidad (ver figura 3.14). En las cuartas jornadas 2Instituto Geogr´afico Nacional 36 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.12: Aplicaci´on GIS para el estudio de la salud p´ublica. de gvSIG se present´o una aplicaci´on basada en gvSIG (ver figura 3.13) que responde a las zonas de planificaci´on, seg´un los planes de emergencia nuclear del nivel de de respuesta exterior. Para situaciones de grave riesgo colectivo, calamidad p´ublica o cat´astrofe extraordinaria, en las que la seguridad y la vida de las personas pueden peligrar y sucumbir masivamente, gener´andose unas necesidades y recursos que pueden exigir la contribuci´on de todas las Administraciones p´ublicas, organizaciones, empresas e incluso particulares. Aplicaciones medioambientales: En la prevenci´on y gesti´on de cat´astrofes naturales como incendios, inundaciones, terremotos, corrimientos de tierra, inventarios de suelos o controlar el tipo del uso del mismo etc. En las quintas jornadas de gvSIG se present´o una aplicaci´on basada en gvSIG cuya finalidad era el estudio relativo al monitoreo de incendios (ver imagen 3.15). Esta aplicaci´on tiene como objetivo comparar la renovaci´on de la vegetaci´on de bosque de Karst y bosques de pinos quemados en ´areas con la evoluci´on natural y misma vegetaci´on que en las zonas no da˜nadas por el fuego que se produjo en julio de 2003. Para esta comparaci´on se ha efectuado el c´alculo de los a˜nos necesarios para los ´ındices NDVI 3y NDWI 4, obtenidos a partir de im´agenes multiespectrales del sat´elite Landsat, para alcanzar los valores encontrados en ´areas no expuestas al fuego. El NDVI cuantifica la 3Normalized Difference Vegetation Index o ´ Indice de Diferencia de Vegetaci´on Normalizado 4Normalized Difference Water Index o ´ Indice de Diferencia Normalizada de agua 37 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA Figura 3.13: Aplicaci´on GIS para situaciones de cat´astrofe. biomasa verde, mientras que el NDWI se ve afectada por contenido de agua de la hoja y la humedad del suelo. Aunque la estructura de la vegetaci´on en las ´areas quemadas se encuentra todav´ıa en una etapa de evoluci´on, despu´es de 5 a˜nos, los dos ´ındices casi coinciden con los valores ´area inalterada. La empresa DIELMO 3D S.L. ha eralizado estudios de inundabilidad de municipios como Oliva (ver imagen 2.9). Educaci´on: Los m´etodos de ense˜nanza evolucionan y se integran con lo que ha dado por llamarse sociedad de la informaci´on. Un ejemplo de aplicaci´on SIG para la educaci´on lo encontramos en EduSIG (ver figura 3.17). Se trata de una aplicaci´on basada en gvSIG aplicada a la ense˜nanza de la geograf´ıa. El mecanismo de ense˜nanza se realiza mediante juegos educativos basados en mapas. Juegos distintos como: juegos de nombres, de banderas, de contornos, localizaci´on de top´onimos con un sistema de puntuaciones y configurables. Aplicaciones militares: permiten almacenar, analizar y actualizar informaci´on militar geogr´afica necesaria para la toma de 38 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.14: Aplicaci´on GIS para el estudio de la criminalidad. decisiones y posterior resoluci´on del comandante y sus asesores en el nivel estrat´egico, operativo y t´actico. Un SIG. militar debe servir a la conducci´on estrat´egica, operativa y t´actica, permitiendo integrarse a ellos: an´alisis de cambios temporales en los escenarios geogr´aficos, establecimiento de bases de datos de objetivos militares, actualizaci´on y an´alisis de posible zonas de objetivos, an´alisis en tres dimensiones de L´ıneas de Operaciones, localizaci´on de Objetivos, proporcionar informaci´on y evaluar conforme a par´ametros establecidos, posibles sitios para la detecci´on y obtenci´on de agua, despliegue de instalaciones log´ısticas y administrativas, posibles ubicaciones para el despliegue de armas pesadas para la infanter´ıa y Artiller´ıa, etc., integraci´on a sistemas de mando y control para el apoyo a la toma de decisiones en el campo t´actico, operativo y estrat´egico. Redes sociales: Una red social es una estructura social compuesta de personas, organizaciones u otras entidades, las cuales conectadas por uno o varios tipos de relaciones, como amistad, parentesco, intereses comunes, intercambios econ´omicos, relaciones sexuales, o que comparten creencias, conocimiento o prestigio. Son 39 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA (a) NDVI 16 julio 2003 antes del fuego (b) NDVI 14 agosto 2003 despu´es del fuego (c) NDVI 29 julio 2005 (d) NDVI 24 julio 2009 Figura 3.15: Aplicaci´on de gvSIG en un estudio relativo al monitoreo de incendios. (Quintas jornadas gvSIG) muy conocidas redes sociales como Facebook, Twitter, Linkedin, Flickr, Tuenti, etc. Aunque no es tan habitual las redes sociales pueden incorporar aplicaciones SIG para compartir informaci´on tem´atica asociada a una posici´on geogr´afica determinada. La aplicaci´on de Nokia Sports Tracker aplicada a fitness permite los datos sobre sus viajes a trav´es de un mapa de viaje acompa˜nado por im´agenes y videos tomados en el camino. telecomunicaciones:planificaci´on de las redes de telefon´ıa m´ovil, de televisi´on por cable, an´alisis de cobertura del medio. Por ejemplo SIGNET es un sistema de informaci´on para la gesti´on local de redes externas, desarrollado con el apoyo de herramientas SIG, para garantizar la consistencia e integridad de la conectividad entre los elementos que componen la red local. Permite la incorporaci´on y actualizaci´on de redes, asignaci´on, administraci´on de redes, mantenimiento y administraci´on cartogr´afica. 40 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.16: Salida gr´afica de la aplicaci´on de estudio relativo al monitoreo de incendios. Figura 3.17: Aplicaci´on GIS parala ense˜nanza de geograf´ıa. 41 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA Figura 3.18: Nokia sport tracker. GPS tracker aplicado a pr´acticas deportivas. Figura 3.19: Aplicaci´on Asignet para la gesti´on de redes de fibra ´optica. 42 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ La demanda de estos sistemas de informaci´on ha propiciado la aparici´on de un gran n´umero de estas aplicaciones, tanto propietarias como con licencia GPL. Destacan, entre los de licencia no p´ublica ArcGis de ESRI o MapInfo y de libre distribuci´on gvSIG. 3.2.2 Modelos de representaci´on. Figura 3.20: Esquema de los modelos r´aster y vectorial. Los sistemas de informaci´on geogr´afica han de ser capaces de representar y almacenar las entidades geogr´aficas reales mediante entidades gr´aficas. El mapa tradicional es una representaci´on anal´ogica (continua) de la realidad, por tanto, no est´a preparado para ser procesado por un computador que hace uso de los datos digitales (discreto). Por eso en primer lugar es necesario realizar una conversi´on al formato digital para introducir los datos en un sistema de informaci´on geogr´afica. El principal problema de este proceso es la representaci´on digital de la componente espacial de los datos geogr´aficos. Para una correcta representaci´on digital de los datos espaciales es necesaria la resoluci´on de dos cuestiones: la geocodificaci´on de los datos y la descripci´on de las caracter´ısticas espaciales en t´erminos digitales. La primera consiste en un procedimiento por el cual un objeto geogr´afico (un edificio, una parcela, una carretera, etc.) recibe directa o indirectamente una etiqueta identificando as´ı su posici´on espacial con respecto a alg´un marco de referencia o punto com´un. 43 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA El proceso de geocodificaci´on, que determina la localizaci´on de cada objeto geogr´afico, se puede llevar a cabo de dos formas diferentes. Directamente, usando un sistema de ejes de coordenadas respecto a los que se determina la posici´on absoluta de cada punto; e indirectamente, asignando a cada objeto una referencia espacial que lo distingue de los restantes y permite establecer su posicionamiento relativo respecto a los dem´as, las direcciones postales son un buen ejemplo de geocodificaci´on indirecta. En un segundo lugar, se debe realizar una descripci´on de la posici´on geom´etrica de cada objeto y de las relaciones espaciales, la topolog´ıa, que mantiene con los restantes objetos geogr´aficos existentes en la realidad a estudiar. Para realizar esta ´ultima labor es imprescindible la abstracci´on y simplificaci´on de los elementos existentes, es decir, la creaci´on de un modelo de datos con todos los elementos representados digitalmente. Un modelo de datos es, seg´un la inform´atica y la teor´ıa de bases de dato, un conjunto de directrices que permiten la representaci´on l´ogica de los datos en una base de datos, consistente en los nombres de las unidades l´ogicas de los datos y de las relaciones existentes entre ellos. Un modelo es siempre, una representaci´on simplificada de la realidad, o como dice Peuquet, una abstracci´on del mundo real que incorpora s´olo aquellas propiedades que son relevantes a la aplicaci´on de inter´es en cada caso. De esta manera existen varios tipos de modelos de datos de los objetos geogr´aficos entre los que destacan: el modelo vectorial y el modelo raster. La principal diferencia entre ambos es el modo de guadar la informaci´on. En el caso del modelo r´aster se almacena una matriz de posiciones. Cada posici´on de esta matriz representa una fracci´on del objeto que representan y toma el valor del objeto real en ese punto. Por el contrario el modelo vectorial almacena las coordenadas de la geometr´ı´a que representan. Podemos encontrar diferentes ejemplos de utilizaci´on de estos modelos. En aplicaciones de retoque fotogr´afico se emplea el modelo r´aster. En aplicaciones CAD se utiliza el modelo vectorial. 44 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.21: Sistema de coordenadas geogr´aficas que utiliza las dos coordenadas angulares latitud (norte o sur) y longitud (este u oeste) para determinar las posiciones de la superficie terrestre. Dependiendo del contexto en el que nos situemos ser´a conveniente la utilizaci´on de un modelo frente a la del otro. Las principales ventajas del modelo vectorial son: Ocupa menos espacio de almacenamiento. Tiene una alta precisi´on en la definici´on de entidades geom´etricas. Representa adecuadamente las relaciones topol´ogicas. Es posible obtener mejores salidas gr´aficas. Los principales inconvenientes del modelo vectorial son: La captura de los datos es m´as costosa. La estructura de datos es m´as compleja. Existe una mayor dificultad cuando se realizan ciertas operaciones como es el caso de comparaciones de mapas. Las principales ventajas del modelo r´aster son: 45 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA (a) Ejemplo de capa WFS en un SIG. (b) Ejemplo de capa WMS en un cliente SIG. Figura 3.25: Infraestructuras de datos espaciales. tas operaciones se utiliza el lenguaje GML que deriva del XML, que es el est´andar a trav´es del que se transmiten la ordenes WFS. WFS no transaccional permite realizar consultas y recuperar elementos geogr´aficos. Por contra WFS-T (Web Feature Service Transactional) permite adem´as la creaci´on, eliminaci´on y actualizaci´on de estos elementos geogr´aficos del mapa. 3.2.4.2 WMS (Web Feature Service): WMS es un est´andar que produce mapas de datos georeferenciados, de forma din´amica. Este est´andar internacional define mapa como una representaci´on de la informaci´on geogr´afica en forma de un archivo de imagen digital conveniente para la exhibici´on en una pantalla de ordenador. Los mapas producidos por un servicio WMS se generan generalmente en un formato de imagen (PNG, GIF o JPEG) y opcionalmente como gr´aficos vectoriales en formato SVG (Scalable Vector Graphics) o WebCGM (Web Computer Graphics Metafile). El est´andar WMS define tres operaciones: Devolver metadatos del nivel de servicio, devolver un mapa cuyos par´ametros geogr´aficos y dimensionales han sido bien definidos y devolver informaci´on de caracter´ısticas particulares mostradas en el mapa (opcionales). Las operaciones WMS pueden ser invocadas usando un navegador est´andar realizando peticiones en la forma de URLs (Uniform Resource Locators)..El servicio permite as´ı la creaci´on de una red de servidores distribuidos de mapas, a partir de los que los clientes pueden construir mapas a me52 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ dida. Operaciones WMS tambi´en pueden ser invocadas desde clientes avanzados como sistemas de informaci´on geogr´afica (ver figura 3.25) , realizando de la misma forma peticiones en la forma de URLs. Existe software libre, como gvSIG, GRASS, uDIG, Kosmo y otros, que permite el acceso avanzado a la informaci´on remota, con el valor a˜nadido de poder cruzarla con informaci´on local y as´ı disponer de una gran variedad de herramientas SIG. 3.2.4.3 WCS (Web Coverage Service): WCS provee de una interfaz para servir coberturas, distinto al servicio WMS ya que ´este define un mapa como una representaci´on de la informaci´on geogr´afica en forma de archivo de imagen digital conveniente para la exhibici´on en una pantalla de ordenador, pero el mapa no consiste en los propios datos. Por el contrario WCS s´ı que proporciona los propios datos, y de esta manera permite su posterior an´alisis. El servicio WCS permite por tanto el an´alisis de datos r´aster al igual que el servicio WFS permite el an´alisis de datos vectoriales. 3.2.5 Historia de los sistemas de informaci´on geogr´afica. Hace aproximadaqmente 15.000 a˜nos los hombres de Cro-Magnon pintaban en las paredes animales que cazaban, asociando a estos dibujos trazas lineales que, se piensa, coincid´ıan con las rutas migratorias de esas especies en las paredes de las cuevas de Lascaux (Francia). Este es un ejemplo simple en comparaci´on con las tecnolog´ıas modernas que viene a demostrar que estos antecedentes tempranos imitan a dos elementos de los SIG modernos: una imagen asociada con un atributo de informaci´on. El primer ejemplo de Sistema de Informaci´on Geogr´afica tal y como los conocemos hoy en d´ıa que funcion´o, y un considerable avance con respecto a las aplicaciones cartogr´aficas existentes hasta entonces, es el denominado Canadian Geographical Information System (CGIS). Permit´ıa la superposici´on de capas de informaci´on, la realizaci´on de mediciones y las digitalizaciones y escaneos de datos. Comenz´o su creaci´on en 1964, desde 1967 ha servido para la realizaci´on de inventario y planeamiento de la ocupaci´on del suelo en grandes zonas del pa´ıs. Se financi´o por el departamento de agricultura de canadi53 3.2 SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA ense. IBM aport´o hardware necesario. En su creaci´on se plantearon problemas t´ecnicos y conceptuales muchos de los cuales despu´es se han ido resolviendo, en especial los referentes a las bases de datos su estructura y organizaci´on y a los m´etodos de entrada de la informaci´on. Otros sistemas contempor´aneos independientes a ´este como LUNR (Land Use and Natural Resources Information System, Nueva York 1967), MLMIS (Minnesota Land Management Information System, Minnesota 1969), PIOS (Polygon Information Overlay System, 1971), ORMIS (The Oak Ridge Modelling Information System, 1972) y STORET (STOrage and RETrieval of Data for Water Quality Control System) del Servicio P´ublico de Salud de Estados Unidos de la divisi´on de Aguas y Control de contaminaci´on. A continuaci´on se desarrolla un esquema hist´orico que resume la fiorma en la que se ha ido planteando una de las cuestiones b´asicas y fundamentales en un Sistema de Informaci´on Geogr´afica, la referente al modelo de datos a utilizar. Se pueden distinguir las siguientes fases en el desarrollo de las actividades del laboratorio: Primera fase: Creaci´on del programa SYMAP en 1968. Este programa de cartograf´ıa asistida por computador, fu´e elaborado por el laboratorio para grandes ordenadores (mainframes), y s´olo permit´ıa obtener borradores de los mapas, que eran trazados mediante una impresora de l´ıneas a baja resoluci´on. Adem´as no dispon´ıa apenas de asistencia para la digitalizaci´on de la informaci´on espacial ni para su posterior manejo r´apido y su almacenamiento. Utilizaba una de las formas m´as simples de conservar digitalmente la informaci´on espacial: la lista de coordenadas. Los programas que utilizan el trazador de curvas (plotter) son una continuaci´on de este enfoque, como el CALFORM (1970). En este caso el nivel de detalle que se obtiene es alto aunque todav´ıa lejos de obtener un nivel similar al conseguido mediante el dibujo manual. De todos modos todav´ıa no se hab´ıa conseguido la elaboraci´on intuitiva del mapa, ni hab´ıa facilidades para la captaci´on autom´atica ni semiautom´atica de los datos. Aparecieron en esta ´epoca tambi´en los programas GRID e IMGRID que se basaban en la representaci´on r´aster del espacio geogr´afico. Segunda fase: Con el desarrollo de POLYVRT se plantea una im54 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ portante novedad en cuanto a la forma de estructurar la informaci´on espacial. Se integra en ella, expl´ıcitamente, la topolog´ıa de objetos cartogr´aficos. Este nuevo planteamiento tuvo un importante precedente en la estructura de los ficheros que se crearon para la informaci´on socioecon´omica y demogr´afica llevada a cabo por la oficina del censo de Estados Unidos. Merece especial menci´on el formato DIME (Dual Independent Map Encoding), uno de los primeros en incluir expl´ıcitamente la topolog´ıa de la informaci´on espacial. Por otro lado, como se ha mencionado ya, el SIG canadiense ya se planteaba y proporcionaba una primera soluci´on al respecto. Tercera fase: Posteriormente se crea el primer y verdadero sistema de informaci´on geogr´afico de representaci´on vectorial. El programa ODISSEY del Laboratorio de Harvard. Un precedente importante de este sistema de informaci´on geogr´afica fue POLYVRT. Ya incluye la digitalizaci´on semiautom´atica de los datos espaciales, la elaboraci´on interactiva de mapas y la gesti´on de la base de datos. Actualmente la tendencia consiste en la mejora de las t´ecnicas de reproducci´on incluyendo el color y formas m´as expresivas de los mapas. Se usa una estructura de datos topol´ogica que es una versi´on de la llamada ArcoNodo que se ha convertido en uno de los modos m´as aceptados del mercado actual de los SIG. Junto a los desarrollos ya mencionados, en el mismo laboratorio de Harvard se trabaj´o en la elaboraci´on de una nueva l´ınea de programas cartogr´aficos diferentes que se basan en la representaci´on raster como los citados GRID e IMGRID. De ellos surge el sistema MAP de Dana Tomlin (Yale), que ha sido la base de programas como ERDAS o IDRISI. En contrapartida a las universidades, la empresa comercial ESRI, partiendo de los trabajos de Harvard, desarroll´o y ampli´o sistemas de informaci´on geogr´afica tanto raster, por ejemplo GRID y como vectoriales como PIOS y ARCINFO. 3.2.6 Sistemas de informaci´on geogr´afica en el mercado 3.3 El sistema de informaci´on geogr´afica gvSIG Como encontramos en la web oficial sel SIG: gvSIG Desktop es un Sistema de Informaci´on Geogr´afica (SIG), es55 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Figura 3.26: Tabla comparativa de diferentes GIS (fuente wikipedia). 56 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ to es, una aplicaci´on de escritorio dise˜nada para capturar, almacenar, manipular, analizar y desplegar en todas sus formas, la informaci´on geogr´aficamente referenciada con el fin de resolver problemas complejos de planificaci´on y gesti´on. Se caracteriza por disponer de una interfaz amigable, siendo capaz de acceder a los formatos m´as comunes, tanto vectoriales como r´aster y cuenta con un amplio n´umero de herramientas para trabajar con informaci´on de naturaleza geogr´afica (herramientas de consulta, creaci´on de mapas, geoprocesamiento, redes, etc.) que lo convierten en una herramienta ideal para usuarios que trabajen con la componente territorial. (fuente: http://www.gvsig.org/) El proyecto gvSIG surge a trav´es de la Conselleria de Infraestructuras y Transporte por iniciativa de la Generalitat Valenciana (mediante un concurso p´ublico). La Universidad Jaume I realiza las tareas de supervisi´on del proyecto con el objetivo de que el desarrollo siga todos los est´andares internacionales (Open GIS Consortium, ver cap´ıtulo 3.2.4 ). IVER Tecnolog´ıas de la Informaci´on S.A. es la empresa ganadora del concurso que lleva el principal peso del desarrollo. Actualmente en un contexto de crisis econ´omica surge la Asociaci´on gvSIG. ´ Esta tiene como objetivo la sostenibilidad del proyecto gvSIG y el desarrollo de la Geom´atica Libre. Ellos se presentan as´ı: Entorno a los valores democr´aticos y solidarios propios del Software Libre plantea el desarrollo de un nuevo modelo de negocio basado en la Cooperaci´on y el Conocimiento compartido donde parte del beneficio generado revierta en el fortalecimiento del Proyecto gvSIG. La sostenibilidad del proyecto gvSIG se fundamenta en el mantenimiento de la Estructura Profesional gvSIG y las infraestructuras necesarias de la Comunidad gvSIG. El sistema gvSIG est´a orientado a usuarios finales de informaci´on con naturaleza geogr´afica, profesionales, estudiantes o personal de admin57 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG istraciones p´ublicas de cualquier parte del mundo conforman su comunidad de usuarios. Actualmente dispoble en varios idiomas: castellano, valenciano, ingl´es, alem´an, checo, franc´es, chino, euskera, gallego, italiano, polaco, portugu´es y rumano. Desarrollado en el lenguaje de programaci´on Java. Funciona en los sistemas operativos Linux, Mac OS X y Windows. Hace uso de librer´ıas est´andar de GIS reconocidas, como son Geotools o Java Topology Suite (JTS). Figura 3.27: Logo GNU GPL. Distribuido bajo licencia GNU GPL 6lo que permite su libre uso, distribuci´on, estudio y mejora. Una de sus caracter´ısticas m´as importantes debido a su naturaleza de software libre (open source), es su componente I+D+I. Otra de las caracter´ısticas relevantes es la extensibilidad del proyecto. De este modo los posibles desarrolladores pueden ampliar las funcionalidades de la aplicaci´on f´acilmente, as´ı como desarrollar aplicaciones totalmente nuevas a partir de las librer´ıas utilizadas en gvSIG (siempre que cumplan la licencia GPL). Con el proyecto que presenta esta memoria Dielmo 3D S.L. ha ampliado la funcionalidad de gvSIG para dotarlo de la capacidad de lectura y escritura de datos LiDAR y en este proyecto se va a ampliar nuevamente la funcionalidad de este SIG para permitir una gesti´on estructurada de los proyectos LiDAR y dotarlo de una serie de herramientas de gran utilidad para este tipo de proyectos. De la misma forma que se piensa en la extensibilidad de gvSIG se ha pensado en la de este proyecto. As´ı la comunidad de usuarios de datos LiDAR podr´an crear nuevas herramientas y ampliar la funcionalidad de ´este. El sistema gvSIG permite la integraci´on en una vista tanto datos locales (ficheros, bases de datos) como remotos a trav´es de est´andares OGC como son servicios WMS, WFS, WCS o JDBC (Java Database Connectivity). Est´a dise˜nado para ser f´acilmente extensible, permi6General Public License o Licencia P´ublica General de GNU es una licencia creada por la Free Software Foundation en 1989 orientada principalmente a proteger la libre distribuci´on, modificaci´on y uso de software. Su prop´osito es declarar que el software cubierto por esta licencia es software libre y protegerlo de intentos de apropiaci´on que restrinjan esas libertades a los usuarios. (Wikipedia) 58 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.28: Men´u a˜nadir capa de gvSIG. tiendo as´ı una mejora continua de la aplicaci´on y permite el desarrollo de soluciones a medida. Los proyectos tienen extensi´on .gvp. Este archivo no contiene datos espaciales ni atributos asociados en forma de tablas. Almacena referencias al lugar donde se encuentran dichas fuentes de datos (la ruta a los archivos, los par´ametros de conexi´on a bases de datos, URL de fuentes de datos de internet). Si los datos cambian, los cambios se reflejar´an en todos los proyectos que hagan referencia a los mismos. Las preferencias del sistema pueden ser configuradas. Los par´ametros pueden ser especificados en el panel de preferencias. Algunos de estos par´ametros configurables son: edici´on (Color de la selecci´on, Color del eje de referencia, Color de la geometr´ıa de la selecci´on, Color del handler de selecci´on ), el idioma, el navegador web por defecto (para cualquier b´usqueda que se realice desde gvSIG a cualquiera de los hiperenlaces que encontramos dentro de la aplicaci´on), la apariencia, las carpetas donde buscar proyectos (.gvp), datos (r´aster o vectoriales) o plantillas (.gvt), la configuraci´on de la pantalla, personalizaci´on de los documentos mapas, preferencias de las anotaciones, configuraci´on del firewall, el proxy, el documento vista (proyecci´on, factores de zoom, color, color de selecci´on, unidades de mapa y medida). 3.3.1 Formatos soportados Entre los formatos vectoriales que soporta encontramos: SHP, DXF, GML, DWG, DGN, KML. Entre los formatos r´aster que soporta encontramos: BMP, GIF, TIFF, JPEG, JP2, PNG, VRT, DAT of ENVI, ERDAS (LAN, GIS, IMG), PCI Geomatics (PIX, AUX), ADF of ESRI, ILWIS (MPR, MPL), MAP of PC Raster, ASC, PGM, PPM, RST of IDRISI, RMF, NOS, 59 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Figura 3.29: Men´u a˜nadir capa de gvSIG. KAP, HDR, RAW. Entre los servicios remotos a los que puede acceder encontramos: OGC (WMS, WFS, WCS, WFS-T, WPS), ArcIMS, Ecwp. Entre las bases de datos y tablas a las que puede acceder encontramos: PostGIS, MySQL, ArcSDE, Oracle, JDBC, CSV. 3.3.2 Herramientas disponibles Seg´un su naturaleza encontramos diferentes grupos de herramientas en gvSIG entre los que destacan: Navegaci´on: zooms, desplazamiento, gesti´on de encuadres, localizador. Consulta: informaci´on, medir distancias, medir ´areas, hiperenlace. 60 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.30: Herramientas de navegaci´on. Selecci´on: por punto, por rect´angulo, por pol´ıgono, por polil´ınea, por c´ırculo, por ´area de influencia, por capa, por atributos, invertir selecci´on, borrar selecci´on. B´usqueda: por atributo, por coordenadas. Geoprocesos: ´area de influencia, recortar, disolver, juntar, envolvente convexa, intersecci´on, diferencia, uni´on, enlace espacial, translaci´on 2D, reproyecci´on, geoprocesos Sextante. Edici´on gr´afica: a˜nadir capa de eventos, snapping, rejilla, flatness, pila de comandos, deshacer/rehacer, copiar, simetr´ıa, rotar, escalar, desplazar, editar v´ertice, pol´ıgono interno, matriz, explotar, unir, partir, autocompletar pol´ıgono, insertar punto, multipunto, l´ınea, arco, polil´ınea, pol´ıgono, rect´angulo, cuadrado, c´ırculo, elipse. Edici´on alfanum´erica: modificar estructura tabla, editar registros, calculadora de campos. Servicio de cat´alogo y nomencl´ator. Representaci´on vectorial: s´ımbolo ´unico, cantidades (densidad de puntos, intervalos, s´ımbolos graduados, s´ımbolos proporcionales), categor´ıas (expresiones, valores ´unicos), m´ultiples atributos, guardar/recuperar leyenda, editor de s´ımbolos, niveles de simbolog´ıa, bibliotecas de s´ımbolos. Representaci´on r´aster: brillo, contraste, realce, transparencia por p´ıxel, opacidad, tablas de color, gradientes. 61 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG la vista utilizar´a ese ´ındice para cargarse. Esta funci´on generar´a un archivo .qix, con el mismo nombre que la capa a la que se asocia y se ubicar´aen el directorio de origen de la capa. En lo relativo a la simbolog´ıa o leyendas se puede elegir entre las siguientes formas de representaci´on: S´ımbolo ´ Unico: Es el tipo de leyenda por defecto de gvSIG. Representa todos los elementos de un capa usando el mismo s´ımbolo. Es ´util cuando es necesario mostrar la localizaci´on de una capa m´as que cualquiera de sus atributos. Valores ´ Unicos: Cada registro puede ser representado con un s´ımbolo exclusivo dependiendo del valor que adopte en un determinado campo de la tabla de atributos. Es el m´etodo m´as ´util a la hora de desplegar datos categ´oricos, como puede ser el caso de municipios, tipos de suelo, etc. Intervalos: Representa los elementos de una capa usando una gama de colores. Los intervalos o colores graduados se usan principalmente para la representaci´on de datos num´ericos que tienen una progresi´on de valores, como la poblaci´on, la temperatura, inversiones realizadas, etc. Etiquetado: Textos o etiquetas a la vista de forma autom´atica en funci´on de los valores que adopta cada elemento en un determinado campo de su tabla de atributos. Las opciones que muestra el men´u de simbolog´ıa var´ıan seg´un el capa sea de puntos, l´ıneas o pol´ıgonos. A continuaci´on puede ver las opciones que se muestran para un capa de pol´ıgonos, que es el que m´as herramientas de configuraci´on presenta. En todo momento podr´a guardar o cargar (recuperar) una leyenda. 68 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.37: Documento tipo tabla en el gestor de proyectos. 3.3.4.2 Tabla Las tablas en gvSIG son documentos que contienen informaci´on alfanum´erica. Las tablas, como se muestra en la imagen 3.38, est´an compuestas por: 1. Fila o registro: Es la representaci´on de los distintos elementos de la tabla. 2. Columna o campo: Son los tipos de atributos que definen a cada elemento. 3. Celda: La intersecci´on de un registro y un campo es una celda. La celda es el elemento m´ınimo de trabajo y puede contener informaci´on. 4. Informaci´on de registros: Informa del total de elementos (registros) que contiene la tabla. Todas las capas vectoriales tienen su tabla de atributos asociada. Cada elemento gr´afico de una capa tiene asociado su correspondiente registro en dicha tabla de atributos. Es posible realizar selecciones tanto simples como multiples de los elementos de la tabla. 69 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Figura 3.38: Tabla en gvSIG. 70 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.39: Herramientas del menu Tabla. 3.3.4.3 Mapa En gvSIG los documentos de tipo mapa permiten dise˜nar y combinar en una p´agina los elementos que se deseen para que aparezcan en un mapa impreso. El acceso documento mapa se hace a trav´es del gestor de proyectos de gvSIG de la misma forma que en los dem´as tipos de documentos. Los mapas tienen ciertas propiedades configurables: Malla: la malla permite que cualquier elemento insertado en el mapa se ajustar´a a la misma. Al establecerla hay que tener en cuenta las propiedades: •El espaciado horizontal y vertical de la malla que definen la separaci´on entre puntos que componen la malla. •El tama˜no de salida del documento escogido ( A2, A3, A4, ...). Regla: activ´andola se visualizar´a una regla que puede proporciona ayuda al dibujo. Editable: Esta opci´on permite bloquear los objetos que conforman el mapa, impidiendo que se puedan realizar modificaciones. 71 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Figura 3.40: Documento tipo mapa en el gestor de proyectos. P´agina: es posible definir el espacio de trabajo, es decir, el tama˜no y propiedades de la p´agina donde se va a realizar la composici´on del mapa. Destacan los siguientes par´ametros: •Tama˜no de p´agina: El desplegable le permite definir el origen y el tama˜no del papel donde va a ser impreso el mapa. Puede seleccionar un tama˜no est´andar o definir uno propio. •Unidades de medida: Puede seleccionar las unidades de medida de la Altura y Anchura de p´agina. •Orientaci´on: Establece la orientaci´on del papel, horizontal o vertical. •M´argenes: Permite definir los cuatro m´argenes de la hoja. La regla se ajusta a los m´argenes de la p´agina. •Resoluci´on del resultado: Puede escoger entre resoluci´on alta, baja y normal. En gvSIG es posible incorporar a un mapa los siguientes elementos cartogr´aficos: Vistas: algunos elementos cartogr´aficos est´an ´ıntimamente ligados al documento vista de manera que al realizar cambios en ´esta (cambios de zoom, desplazamientos, modificaci´on de leyendas, organizaci´on de capas, etc.) se ven reflejados en el mapa. Este v´ınculo es configurable. Im´agenes: Esta herramienta le permite insertar una imagen en el mapa. 72 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.41: Documento tipo mapa. Barras de escala: esta herramienta le permite insertar una escala (relacionada con una vista) en el mapa. Leyendas: La leyenda representa las capas visibles de la tabla de contenidos (TOC) de la vista seleccionada. Si se inserta una leyenda en el mapa ´esta se a˜nade en el mismo orden en el que aparece en el TOC. Objetos gr´aficos: Puede insertar los siguientes tipos de elementos gr´aficos: •Puntos •Rect´angulos •C´ırculos •L´ıneas •Polil´ıneas •Pol´ıgonos Norte: puede insertar un s´ımbolo de norte en el mapa. 73 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Figura 3.42: S´ımbolos de norte. Figura 3.43: Opciones asociadas a un mapa. Textos: permite insertar texto en el mapa. Varios par´ametros son configurables como la alineaci´on, tipo de fuente, grados de inclinaci´on, marco y el t´ıtulo asociado al marco. Cajetines: gvSIG ha incorporado en su barra de herramientas una que le permite insertar un cajet´ın en el mapa. El sistema gvSIG permite guardar la configuraci´on de un mapa como plantilla y as´ı poder aprovecharlo en otro momento con diferentes or´ıgenes de datos. Partiendo de un Mapa, es posible guardar la distribuci´on y propiedades de sus elementos. Es posible exportar la composici´on realizada a un fichero postScript y/o pdf. 74 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.44: Plantilla de un mapa. 3.3.5 Extensi´on geoBD (gestor de bases de datos) Una base de datos o banco de datos (en ocasiones abreviada BB.DD. o DB) es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistem´aticamente para su posterior uso. El contenido de una base de datos engloba la informaci´on que concierne a una organizaci´on. De esta manera la informaci´on est´a disponible para los usuarios. Una finalidad de la base de datos es conseguir que la informaci´on no sea redundante. Es por ello que cuando se modela la estructura de una base de datos se aplica un proceso de normalizaci´on que pretende eliminar redundancias y estructurar la informaci´on de manera ´optima. Esta tarea la debe de ralizar personal cualificado. Una tabla de datos es la unidad l´ogica de almacenamiento de la informaci´on en una base de datos. Una tabla est´a formada por registros (llamados tambi´en filas o tuplas). Esta extensi´on de gvSIG dota al sistema de la posibilidad de acceder a bases de datos geogr´aficas de forma sencilla y unificada para 75 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG distintos proveedores. En la actualidad gvSIG soporta los siguientes sistemas gestores de bases de datos: PostGIS MySQL HSQLDB Oracle Spatial (SDO Geometry) (a) Par´ametros de conexi´on a una base de datos. (b) Solicitud de contrase˜na. (c) Ventana a˜nadir geoBD. Figura 3.45: Interfaces de la extensi´on geoBD. 76 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ 3.3.5.1 La extensi´on espacial de PostgreSQL. PostGIS PostgreSQL es un potente sistema de base de datos objeto-relacional de c´odigo abierto. Cuenta con m´as de 15 a˜nos de desarrollo activo y una arquitectura probada que se ha ganado una s´olida reputaci´on de fiabilidad, integridad de datos y correcci´on. Funciona en todos los principales sistemas operativos, incluyendo Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) y Windows. Tiene soporte completo para claves for´aneas, uniones, vistas, disparadores y procedimientos almacenados (en varios idiomas). Se incluye la mayor parte de SQL: 2008 tipos de datos, incluyendo INTEGER, NUMERIC, Boolean, CHAR, VARCHAR, DATE, INTERVAL, y TIMESTAMP. Tambi´en soporta almacenamiento de objetos binarios grandes, como im´agenes, sonidos o v´ıdeo. Se dispone de interfaces de programaci´on nativo de C / C + +, Java,. Net, Perl, Python, Ruby, Tcl, ODBC, entre otros, y una excelente documentaci´on. PostGIS ha sido desarrollado para dar soporte a objetos geogr´aficos a bases de datos relacionales PostgreSQL. PostGIS habilita espacialmente al servidor PostgreSQL, permitiendo que sea utilizado como una base de datos espacial para los sistemas de informaci´on geogr´afica (SIG), al igual que la ArcSDE8de ESRI o la extensi´on espacial de Oracle. PostGIS sigue el OpenGIS Simple Features Specification for SQL y ha sido certificado como compatible con los tipos y funciones perfil (ver imagen 3.46) . PostGIS ha sido desarrollado por Refractions Research9como un proyecto de tecnolog´ıa de base de datos espaciales de c´odigo abierto. PostGIS es liberado bajo la licencia GNU General Public License. Se sigue desarrollando PostGIS, y se han a˜nadido herramientas de interfaz de usuario, soporte de la topolog´ıa de base, validaci´on de datos, transformaci´on de coordenadas, APIs de programaci´on y mucho m´as. La lista de futuros proyectos incluye soporte completo de topolog´ıa, r´aster, redes y enrutamiento, superficies tridimensionales, 8Advanced Spatial Data Server. Gestiona datos espaciales en un sistema de gesti´on de bases relacionales (RDBMS) y le permite tener acceso a clientes de ArcGIS. 9(http://www.refractions.net/) 77 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Figura 3.50: Diferencia. a los dos pol´ıgonos que lo han originado) a este geoproceso se le conoce como operador AND espacial. Un ejemplo de aplicaci´on de este geoproceso ser´ıa para, dada una capa de usos del suelo Corine 2000, y una capa del mapa geol´ogico nacional, obtener una capa de pol´ıgonos con informaci´on homog´enea de uso del suelo y material geol´ogico. Figura 3.51: Intersecci´on. Uni´on: Este geoproceso, al igual que los geoprocesos Intersecci´on y Diferencia opera sobre dos capas de pol´ıgonos, obteniendo sus intersecciones (por este motivo, a estos tres geoprocesos se les conoce como geoprocesos de solape). Al geoproceso Uni´on se le conoce como OR espacial, porque la capa de resultado estar´a formada por las geometr´ıas que aparecen en las dos capas (intersecciones entre los pol´ıgonos), mas las geometr´ıas que aparecen solamente en una u otra de las dos capas puestas en relaci´on. Esto se traduce en que el geoproceso realiza tres pasadas: la primera para 84 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ calcular la intersecci´on de ambas capas, la segunda para calcular las diferencias de la primera con la segunda, y la tercera pasada para calcular las diferencias de la segunda capa con la primera. Este Geoproceso siempre que nos interese generar nuevas capas que pongan de manifiesto la ocurrencia de dos fen´omenos, de forma que se resalte la ocurrencia de alguno de los dos (o de los dos). Figura 3.52: Uni´on. Convex Hull (m´ınimo pol´ıgono convexo): Este geoproceso c´alcula la envolvente convexa (convex hull), o pol´ıgono convexo de menor ´area que envuelve a todos los elementos vectoriales de una capa de entrada. Opera ´unicamente con una capa de entrada, cuyo tipo de geometr´ıa podr´a ser de cualquier tipo. Las aplicaciones de este geoproceso pueden ser de distinto tipo: Determinar la zona de cobertura de un determinado fen´omeno geogr´afico. C´alculo del diametro de la zona cubierta por una serie de geometr´ıas, etc. Figura 3.53: Convex Hull. 85 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG Dissolve (agrupar por adyacencia y criterios alfanum´ericos): Este geoproceso act´ua sobre una sola capa de entrada, cuyo tipo de geometr´ıa ha de ser forzosamente de pol´ıgonos. El proceso analiza cada pol´ıgono de la capa de entrada, de tal forma que fusionar´a en un solo pol´ıgono aquellos pol´ıgonos que tomen identico valor para un campo especificado. Adem´as, permite introducir el criterio espacial en la decisi´on de fusionar varios pol´ıgonos. De esta forma, podemos seleccionar que para que dos pol´ıgonos sean fusionados, adem´as de tomar id´entico valor en el atributo especificado deban ser adyacentes espacialmente. Esto puede ser de utilidad en m´ultiples situaciones. Supongamos, por poner un ejemplo, que disponemos de una capa de pol´ıgonos que representa los municipios de una determinada comunidad aut´onoma. En este momento necesitamos , para realizar un informe, disponer de una capa de pol´ıgonos con las provincias, pero en ese momento no tenemos esta informacion. Podemos generar una capa de provincias lanzando el geoproceso Disolver, especificando que se fusionar´an aquellos pol´ıgonos que tomen igual valor para el campo PROVCOD -c´odigo de provincia. Figura 3.54: Dissolve. Juntar (merge): Este geoproceso act´ua sobre una o varias capas, generando una nueva capa que a´une todas las geometr´ıas de la capa de entrada. La capa resultante de este geoproceso conservar´a los atributos de una de las capas de entrada, la especificada por el usuario. Del resto de capas no seleccionadas, se conservar´an aquellos atributos cuyo nombre y tipo de dato coincida con alguno de los de la capa seleccionada por el usuario. Este geoproceso es 86 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ de utilidad, por ejemplo, cuando nos llega una serie cartogr´afica, separada por hojas, y deseamos juntar el contenido de las diferentes hojas en una sola capa. Tal es el caso de la serie de hojas Magna, publicada por el ITGME espa˜nol (Instituo Tecnol´ogico y Geominero de Espa˜na). Figura 3.55: Juntar. Traslaci´on 2D: Este geoproceso permite aplicar una transformaci´on de traslaci´on sobre todos los puntos de las geometr´ıas de la capa de entrada. Para tal fin, el usuario deber´a especificar el desplazamiento en X y en Y a aplicar. Este geoproceso puede ser de gran utilidad para hacer concordar cartograf´ıas procedentes de fuentes distintas, en lo que se viene a denominar por el t´ermino ingl´es conflation. Figura 3.56: Juntar. Reproyecci´on: Este geoproceso permite cambiar la proyecci´on geod´esica de los elementos vectoriales de la capa de entrada. Para tal f´ın, el usuario deber´a especificar la nueva proyecci´on a aplicar. Este geoproceso puede ser de gran utilidad para hacer concordar 87 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG cartograf´ıas en un mismo proyecto cartograf´ıas que se encuentran en proyecciones distintas. Figura 3.57: Reproyeccion. 3.3.7 Libreria Java Topology Suite JTS o Java Topology Suite es una API Java que implementa un conjunto b´asico de operaciones de datos espaciales utilizando un modelo de precisi´on expl´ıcita y robustos algoritmos geom´etricos. JTS est´a destinada a ser utilizada en el desarrollo de aplicaciones que soportan la validaci´on, la integraci´on y la consulta de bases de datos espaciales. JTS pretende aplicar el OpenGIS Simple Features Specification (SFS) con la mayor precisi´on posible. En algunos casos trata de elegir una alternativa razonable y coherente al SFS. Estas diferencias de la SFS se aportan en documentaci´on de vivid solutions (http://www.vividsolutions.com). El dise˜no del JTS tiene por objeto cumplir los siguientes objetivos: El modelo espacial y definicion de m´etodos se ajustar´an a las caracter´ısticas OpenGIS. El dise˜no de la API pretende seguir las convenciones de Java en la medida de lo posible. Las funciones de JTS apoyar´an un modelo de precisi´on definida. Los algoritmos JTS ser´an contundentes en virtud del modelo de precisi´on. 88 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Los m´etodos devolver´an topol´ogicamente y geom´etricamente los resultados correctos en los modelos de precisi´on definidos siempre que sea posible. La correcci´on es la m´axima prioridad, el espacio y la eficiencia temporal son importantes, pero secundarios. JTS ser´a lo suficientemente r´apida para ser utilizada en un entorno de producci´on. Los algoritmos y el c´odigo utilizado en JTS ser´an claros y estar´an bien estructurados, para facilitar su comprensi´on por parte de otros desarrolladores. Figura 3.58: M´etodos de an´alisis espacial de JTS. 89 3.3 EL SISTEMA DE INFORMACI ´ ON GEOGR ´ AFICA GVSIG 3.3.8 Libreria JFreeChart JFreeChart es una librer´ıa libre 100 % de gr´aficas desarrollado en Java. Facilita a los desarrolladores mostrar gr´aficos de calidad profesional en sus aplicaciones. JFreeChart soporta gr´aficos circulares (2D y 3D), gr´aficos de barras (horizontales y verticales, regular y apilado), gr´aficos de l´ıneas, gr´aficos de dispersi´on, gr´aficos de series de tiempo, diagramas de m´aximos, m´ınimos y de apertura y cierre, parcelas, diagramas de Gantt, parcelas combinado, term´ometros, relojes, etc. JFreeChart se puede utilizar en las aplicaciones, applets, servlets y JSP. Este proyecto es mantenido por David Gilbert. Figura 3.59: Distintos tipos de gr´aficas de JFreeChart. 90 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ JFreeChart incluye: Una API bien documentada, que da soporte a una amplia gama de tipos de gr´aficas. Un dise˜no flexible que es f´acil de ampliar, dirigido tanto al lado del servidor como a las aplicaciones del lado del cliente. Soporte para tipos de salida, incluyendo los componentes Swing, archivos de imagen (incluyendo PNG y JPEG) y gr´aficos vectoriales (incluyendo PDF, EPS y SVG). JFreeChart es software libre. Se distribuye bajo licencia GNU Lesser General Public Licence (LGPL), que permite su uso en aplicaciones propietarias. 3.4 Software LiDAR En este apartado se va a analizar una completa herramienta comercial que trabaja con datos LiDAR. Se trata de una serie de paquetes que cubren diferentes prop´ositos en el proceso de utilizaci´on de datos LiDAR. Estos paquetes son combinables entre s´ı de modo que es posible disponer de la herramienta completa que permita ajustar los datos tras la adquisici´on, su procesado eficiente y su utilizaci´on para diferentes tareas habituales. 3.4.1 Productos de Terrasolid Los paquetes software Terrasolid se utilizan en todo el mundo para los datos procedentes de Lidar aerotransportado y m´ovil. Cada paquete cumple requisitos de su tarea espec´ıfica. Sin embargo es posible la agrupaci´on de diferentes aplicaciones para la realizaci´on de un trabajo completo: calibraci´on de los datos, la clasificaci´on de puntos, procesado de im´agenes y la creaci´on de productos finales en un entorno de software. Terrasolid dispone de varias categorias de productos: 91 3.4 SOFTWARE LIDAR Procesado de datos LiDAR Utilizaci´on de datos LiDAR Dise˜no de infraestructuras Redes de tuberias Terrasolid es una suite de software est´andar para el tratamiento de datos l´aser aerotransportado y m´ovil y de im´agenes. Un flujo de trabajo centrado en el procesamiento es el factor clave para alcanzar la mayor productividad y mejor calidad con el menor esfuerzo aseguran en la compa˜nia. Terrasolid ofrece la posibilidad de adquirir una combinaci´on que se adecue desde el punto de vista del proyecto y los productos de entrega solicitados. Al iniciar un proyecto se cuenta con puntos de l´aser en bruto e im´agenes, trayectorias y la calibraci´on de la c´amara una selecci´on de paquetes apropiada puede ser un conjunto de TerraScan, TerraModeler, TerraPhoto y TerraMatch. La calibraci´on de datos antes de la clasificaci´on del punto final es casi sin excepci´on una obligaci´on. TerraMatch es el paquete para este prop´osito. TerraPhoto es una combinaci´on natural de TerraScan, TerraModeler y TerraMatch. Los datos l´aser y el procesamiento de im´agenes se apoyan entre s´ı. Las im´agenes permiten una forma sencilla de controlar y cambiar la ubicaci´on en xy de los puntos l´aser. La suite de aplicaciones incluye paquetes que se detallan en los siguientes subapartadaos. 3.4.1.1 TerraScan TerraScan es el paquete de Terrasolid para la lectura de los datos de los puntos y su clasificaci´on en diferentes clases. Con TerraScan se puede procesar datos de l´aser aerotransportado y m´ovil de proyectos de cartograf´ıa. La cantidad total habitual de datos de puntos l´aser es enorme. Al leer todos los puntos al mismo tiempo para su procesado f´acilmente se exceden los l´ımites de memoria del sistema operativo Windows. Para evitar estos obst´aculos TerraScan permite dividir los conjuntos de datos en bloques geogr´aficos m´as peque˜nos y luego automatizar su procesado por bloques. Cada licencia de TerraScan va 92 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ acompa˜nada de una licencia de TerraSlave. TerraSlave libera su trabajo con MicroStation para hacer cualquier otro trabajo. (a) Imagen LiDAR en xy (b) Corte longitudinal Figura 3.60: Visualizaci´on de un corte longitudinal de datos LiDAR Las principales caracter´ısticas de TerraScan son las siguientes: Leer los puntos l´aser en bruto como archivos de texto o archivos binarios XYZ como LAS y TerraScan binario. Visualizar los puntos en tres dimensiones. Definir sus propias clases de puntos, tales como suelo, vegetaci´on y edificios. Clasificar los puntos en el suelo, la vegetaci´on, edificios, etc. Dividir los puntos en bloques. Automatizar procesamiento de macros. Clasificar puntos usando algoritmos autom´aticos. Eliminar los puntos innecesarios o err´oneos en un ´area determinada. Digitalizar entidades haciendo snapping10 a los puntos l´aser. Detectar los cables de alimentaci´on de l´ınea y los techos de edificios. 10La herramienta de snapping o anclaje asiste en multitud de herramientas CAD haciendo que al acercar el cursor sobre otra entidad ´este se coloque justo encima de ella. 93 3.4 SOFTWARE LIDAR Suavizado autom´atico de las transiciones de color entre las im´agenes. Un combinaci´on de TerraModeler y TerraPhoto permite cubrir modelos digitales del terreno con ortofotos e ilustrar su modelo. Para la exhibici´on final es posible crear escenas y animaciones. Los formatos de archivo soportados incluyen ECW, GeoTIFF, TIFF, BMP, CIT, COT, RLE, PIC, PCX, GIF, PNG y JPG2000. 3.4.1.6 TerraSurvey TerraSurvey es el paquete de Terrasolid para leer datos de estaciones totales y GPS tomados en campo, perfiles de visualizaci´on como parte del control de calidad de los datos Lidar. TerraSurvey lee datos de la toma de datos como archivos de texto y crea un archivo de un estudio de dise˜no en 3D. Reconoce de forma autom´atica una serie formatos del estudio de Trimble Leica, etc. Al permitir definir su propio formato de archivo se puede leer pr´acticamente cualquier archivo basado en los campos de coordenadas o ´angulos. A cada punto del estudio se le asigna un c´odigo, que define al objeto del estudio. La representaci´on gr´afica de cada c´odigo se define por una o varias normas de dibujo. El usuario puede crear nuevos c´odigos y normas de dibujo o modificar los ya existentes y, finalmente, guardarlas como librer´ıa de c´odigo. TerraSurvey y TerraModeler combinan para la creaci´on de modelos digitales del terreno autom´aticos a partir de elementos del estudio. Por lo tanto cada c´odigo tiene un sub-c´odigo que indica c´omo TerraModeler va a usar los puntos del estudio en el modelado del terreno. Cuando TerraModeler escanea los elementos de mapeo codificados por TerraSurvey, reconoce autom´aticamente el modelado de informaci´on y decide si el punto es un punto aleatorio, l´ınea de rotura, o el punto no pertenece a ning´un modelo. Utilizar TerraSurvey con TerraPhoto TerraScan permite calcular el mejor desplazamiento para ortoimagen mosaico para responder la ubicaci´on de las se˜nales de tierra estudiadas. Tambi´en puede dar c´odigos a los objetos vectorizados como cables el´ectricos y l´ıneas de caminos, que hayan sido detectados por TerraScan. Esto puede ser muy ´util, cuando se trata de exportar los datos a bases de datos y otros sistemas de MicroStation. 100 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ 3.4.1.7 TerraPipeNet TerraPipeNet es la aplicaci´on de Terrasolid para el agua, aguas residuales y la gesti´on de la informaci´on geogr´afica y el control de incidencias de las redes. Toda la informaci´on de la red como la localizaci´on, los atributos de los elementos, informes de incidencias y cualquier evento de mantenimiento se pueden almacenar en TerraPipeNet. El sistema de seguimiento y las capacidades de reportar incidencias hacen que TerraPipeNet garantice una acci´on r´apida para problemas encontrados y una manera para optimizar la renovaci´on de redes. 3.4.1.8 TerraPipe TerraPipe para el dise˜no de l´ıneas de agua y alcantarillado tuber´ıa. Todo el dise˜no del drenaje, alcantarillado, agua potable y otras redes de tuber´ıa se realiza con elementos en tres dimensiones. El subsuelo en las zonas urbanas est´a a menudo lleno de toda clase de redes. Por lo tanto el espacio para tender tuber´ıas nuevas es limitada. El abordaje de 3D TerraPipe resulta una forma de comprobar el espacio disponible. TerraPipe muestra e informa de la distancia m´as corta en la ventana de visualizaci´on. Las principales caracter´ısticas son las siguientes: Ajustes configurables de acuerdo a las necesidades locales y las normas. Instrucciones para leer en las tomas de datos y generar una red de tuber´ıas correspondientes mediante elementos dise˜nados en 3D. Guarda los datos como archivos binarios o directamente a la base de datos de TerraPipeNet. Dispone de herramientas para dise˜nar, editar o borrar elementos de la red. Dispone de herramientas para generar y actualizar mapas, perfiles e informes. Metodos de trabajo y funciones para el estudio, editci´on y creaci´on de modelos en 3D de la red de tuber´ıas existentes. 3.5 Otras aplicaciones relacionadas 3.5.1 SEXTANTE 101 3.5 OTRAS APLICACIONES RELACIONADAS Figura 3.67: Dise˜no de la red de tuber´ıas. El proyecto SEXTANTE se inici´o en 2004 con el objetivo principal de desarrollar una soluci´on SIG dise˜nado especialmente para las necesidades forestales regionales. A pesar de que estaba destinada originalmente a profesionales de la gesti´on forestal, ha demostrado ser una soluci´on para cualquier usuario con necesidad de fuertes capacidades de an´alisis geoespacial, y se desarrolla actualmente como tal. Elementos adicionales para el inventario forestal se est´an desarrollando. 102 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.68: Visualizaci´on de la red de tuber´ıas en 3D. Figura 3.69: Gestor de extensiones de SEXTANTE. La primera versi´on de SEXTANTE tuvo como base el software alem´an SAGA, un SIG centrado principalmente en el an´alisis. SAGA originalmente dispon´ıa de un conjunto de 120 m´odulos de an´alisis que se enriqueci´o con m´as de 70 nuevos, y algunas modificaciones se efectuaron tambi´en en el n´ucleo del sistema. Se produjo una relaci´on muy estrecha entre SAGA y los equipos de SEXTANTE, y ambas extensiones y la modificaci´on del nucleo finalmente se dirigieron a la distribuci´on SAGA oficial y est´an hoy en d´ıa incluidos en los lanzamientos actuales de SAGA. En ese momento, gvSIG no era a´un un producto maduro SIG, y se 103 3.5 OTRAS APLICACIONES RELACIONADAS consider´o inadecuado para los objetivos del proyecto. Sin embargo, pronto gvSIG experiment´o un crecimiento impresionante y se convirti´o r´apidamente en un SIG hecho y derecho, que inclu´ıa caracter´ısticas que no se encuentraban en SAGA, como los servicios de conexiones web. La decisi´on fue tomada para migrar todos los trabajos anteriores y aplicar todos los conocimientos adquiridos en el trabajo con SAGA a gvSIG para convertirlo en una herramienta de an´alisis geoespacial poderosa. Aunque rico en funcionalidades, en gvSIG hab´ıa una falta de funciones de an´alisis (a excepci´on de un peque˜no conjunto de geoprocesos de capas vectoriales, incluyendo operaciones como el almacenamiento en b´ufer, cortar, unir una combinaci´on, entre otros), por lo que el resultado ser´ıa beneficioso para ambas partes. Se dieron los siguientes pasos para desarrollar la versi´on para gvSIG de SEXTANTE: Creaci´on de una capa base sobre la que las extensiones de an´alisis geoespacial podr´ıan ser implementadas f´acilmente. Eso permite encapsular la complejidad de la extensi´on de gvSIG y la arquitectura plugin, y hacer m´as f´acil la implementaci´on de un geoalgoritmo nuevo, siguiendo las ideas de SAGA. Migraci´on de todas las extensiones originales de Saga y todas las desarrolladas en la versi´on anterior de SEXTANTE para gvSIG, usando la capa base antes mencionada. Algunas extensi´ones no relacionadas con el an´alisis, como de entrada/salida, no se han aplicado, puesto que ya exist´ıa en gvSIG. Otras nuevas se han a˜nadido tambi´en, hasta un total de m´as de 220, aproximadamente la mitad de las cuales provienen de la versi´on original de SAGA. Incluye elementos novedosos que permiten aprovechar mejor las posibilidades del conjunto de extensiones de an´alisis. En la actualidad, SEXTANTE no es un conjunto de extensiones para gvSIG, sino una biblioteca independiente de Java basado en el c´odigo desarrollado para esta versi´on de gvSIG anterior. De esta manera, puede ser incorporado f´acilmente en gvSIG para agregar las mismas 104 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ funcionalidades de la versi´on anterior, pero tambi´en en otras aplicaciones SIG. Esto incluye otros SIG de escritorio, otros tipos de aplicaciones y librer´ıas, o incluso para servir geoalgorithms SEXTANTE a trav´es de WPS12. SEXTANTE desarrollado por la Universidad de Extremadura para la Junta de Extremadura , a trav´es de la Titulaci´on de Ingenier´ıa Forestal del Centro Universitario de Plasencia para satisfacer necesidades, especialmente en el ´ambito forestal. SEXTANTE tiene una amplia gama de usuarios, desde usuarios ocasionales o habituales de de SIG, hasta usuarios sin experiencia al respecto. Su estructura modular y su enfoque anal´ıtico hacen que sea especialmente adecuado para su uso en el ´ambito acad´emico y de investigaci´on ya que la aplicaci´on se estructura de forma que la implementaci´on de algoritmos de an´alisis espacial sea sencilla. Maneja y analiza informaci´on tanto vectorial como r´aster aunque con un especial enfoque hacia esta ´ultima, pues es en el manejo de este tipo de datos donde reside la verdadera potencia del programa. SEXTANTE distribuido bajo licencia GPL hace posible que algunos usuarios con conocimientos de programaci´on desarrollen nuevos algoritmos que resuelvan problemas no contemplados por los m´odulos distribuidos con el programa. SEXTANTE dispone de los siguientes elemntos b´asicos: Gestor de extensiones. Se trata del elemento principal de SEXTANTE. En ´el se encuentran el conjunto de todas las extensiones que pueden ejecutarse de forma individual (ver imagen 3.69). Las extensiones aparecen agrupadas en bloques de acuerdo con el tipo de an´alisis que llevan a cabo. En la parte inferior encontramos el bot´on Buscar mediante el que es posible filtrar las extensiones para localizar la deseada. En ´el aparecen en color negro o gris las 12OpenGIS Web Processing Service (WPS) Interfaz est´andar que proporciona reglas para estandarizar la forma en entradas y salidas para servicios de procesamiento geoespacial, tales como la superposici´on de pol´ıgonos. Define c´omo un cliente puede solicitar la ejecuci´on de un proceso, y c´omo el resultado del proceso se maneja. Define una interfaz que facilita la publicaci´on de procesos geoespaciales y el descubrimiento de los clientes y el enlace a esos procesos. Los datos requeridos por el WPS se pueden entregar a trav´es de la red o pueden estar disponibles en el servidor. 105 3.5 OTRAS APLICACIONES RELACIONADAS Figura 3.70: Extensi´on de SEXTANTE. extensiones en funci´on de si la informaci´on disponible en la ventana activa es suficiente para poder ejecutar la extensi´on o no. Una vez ejecutada una extensi´on realizando doble click sobre ella aparece una nueva pantalla de recogida de los par´ametros de entrada (ver imagen 3.70) y en algunos casos con la posibilidad de crear nuevas capas de salida. Modelizador gr´afico. Esta herramienta permite la creaci´on de complejos modelos mediante una sencilla interfaz. De esta forma simplifica procesos que impliquen el uso de varias extensiones de forma encadenada. As´ı poder realizar una extensi´on que tome datos del usuario como par´ametros de entrada y ejecute extensiones cuya salidas alimenten la entrada de nuevas extensiones encadenadas para conformar la extensi´on general. Proceso por lotes. Ls extensiones de SEXTANTE, incluyendo los modelos, pueden ser ejecutadas como proceso por lotes, es decir, pueden ser ejecutadas repetidamente sobre un conjunto de par´ametros de entrada sin tener que realizar varias ocasiones lla106 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 3.71: Modelador gr´afico de SEXTANTE. Figura 3.72: Ejecuci´on por lotes de SEXTANTE. madas a la extensi´on desde el gestor de extensiones. De este modo es posible, por ejemplo, la realizaci´on de una operaci´on como puede ser un filtro sobre una serie de capas. L´ınea de comandos. Mediante la l´ınea de comandos los usuarios avanzados de SEXTANTE pueden automatizar taeas creando sencillos scripts. La web oficial del proyecto es http://www.sextantegis.com. Algunas de las utilidades disponibles en SEXTANTE: An´alisis de patrones. An´alisis hidrol´ogico b´asico. Costes, distancias y rutas. Estad´ısticas de celda para m´ultiples capas raster. Estad´ısticas por vecindad para una capa raster. 107 3.5 OTRAS APLICACIONES RELACIONADAS Figura 3.73: L´ınea de comandos de SEXTANTE. Geoestad´ıstica. Geomorfometr´ıa y an´alisis del relieve. Herramientas b´asicas para capas raster. Herramientas de an´alisis para capas raster. Herramientas de c´alculo para capas raster. Herramientas para capas de l´ıneas. Herramientas para capas de puntos. Herramientas para capas de pol´ıgonos. Herramientas para capas raster categ´oricas. Herramientas para capas discretas e informaci´on categ´orica. Herramientas para capas vectoriales. Herramientas para crear nuevas capas raster. Herramientas para tablas. Iluminaci´on y visibilidad. Localizaci´on ´optima de elementos. L´ogica difusa. M´etodos estad´ısticos. Perfiles. Rasterizaci´on e interpolaci´on. Tratamiento y an´alisis de im´agenes. 108 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Vectorizaci´on. Zonas de influencia (buffers). ´ Indices de vegetaci´on. ´ Indices y otros par´ametros hidrol´ogicos. 109 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ CAP´ ITULO 5 An´alisis 5.1 Introducci´on Son muchas las definiciones existentes para la Ingenier´ıa del Software: Seg´un Boehm. La INS supone la aplicaci´on pr´actica y sistem´atica del conocimiento cient´ıfico a la producci´on de programas que se desarrollan a tiempo y dentro de las estimaciones de presupuesto y la correspondiente documentaci´on para desarrollarlos, instalarlos, usarlos y mantenerlos. Seg´un Pressman. La INS es una disciplina que integra m´etodos, herramientas y procedimientos para el desarrollo de SW de computador. Seg´un Davis. La INS es la aplicaci´on de principios cient´ıficos para: (1) la transformaci´on ordenada de un problema en una soluci´on SW y (2) el mantenimiento del mismo durante toda su vida ´util. Seg´un Sommerville. La INS es una disciplina ingenieril que abarca todos los aspectos de la producci´on de software. 117 5.1 INTRODUCCI ´ ON Pese a las distintas definiciones aportadas todos coinciden en la importancia de la disciplina metodol´ogica. De esta manera se minimizan los errores cometidos a lo largo del proceso de desarrollo. Los errores que pudieran cometerse deben ser detectados lo antes posible puesto que errores cometidos en fases tempranas suponen un alto coste de correcci´on si son corregidos en fases tard´ıas. En las figuras 5.1 y 5.2 se muestran el porcentaje de aparici´on de errores en las distintas fases del desarrollo de software y el coste que supone la correcci´on de los mismos seg´un en la fase que se hayan producido respectivamente. La fase de an´alisis es la etapa del proceso de desarrollo de sistemas de informaci´on que busca obtener la mayor claridad posible con respecto a los requerimientos y necesidades del usuario o usuarios del sistema a desarrollar. La realizaci´on de esta fase sirve para la obtenenci´on de documentos de requisitos, modelos relacionales, diagramas de clases, etc. Durante la misma se debe tener especial cuidado, pues de ella depende la calidad y aceptaci´on de los resultados finales. Si un an´alisis ha sido bien realizado y es muy completo, representa un 70 % de la soluci´on ya obtenida. La fase de an´alisis o fase inicial para la realizaci´on de un desarrollo de software de calidad supone un paso crucial para alcanzar el ´exito. La aparici´on de errores en esta fase y su transmisi´on a las siguientes fases puede suponer un claro fracaso en la consecuci´on del proyecto. Entre los factores que determinan la calidad de un software se pueden destacar los siguientes: Correcci´on ¿Hace el software lo que se espera de ´el? Fiabilidad ¿Lo hace de forma fiable todo el tiempo? Eficiencia ¿Se ejecutar´a en el Hw lo mejor que pueda? Integridad ¿Es seguro? Facilidad de uso ¿Est´a dise˜nado para ser usado? Facilidad de mantenimiento ¿Puede corregirse? Flexibilidad ¿Es posible cambiarlo f´acilmente? Facilidad de prueba Es posible probarlo? 118 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Reusabilidad ¿Es posible reusar alguna parte del Sw? Portabilidad ¿Ser´a posible usarlo en otra m´aquina o SO? Facilidad de interoperaci´on ¿Ser´a posible hacerlo interactuar con otro sistema? Figura 5.1: Aparici´on de errores en las distintas fases de desarrollo de software. Figura 5.2: Coste de correcci´on de errores producidos en las distintas fases de desarrollo de software. 119 5.2 ARQUITECTURA DE GVSIG 5.2 Arquitectura de gvSIG 5.2.1 Introducci´on El proyecto gvSIG se presenta como un framework 1sobre el que se pueden ir a˜nadiendo plugins que le doten de nuevas funcionalidades. La plataforma que proporciona gvSIG se sustenta en una arquitectura abierta. gvSIG usa un modelo que consiste en presentar una serie de herramientas de forma homog´enea desde el punto de vista del usuario. Las herramientas se integran dentro de gvSIG usando unos mecanismos llamados plugins. Figura 5.3: Esquema de la arquitectura de gvSIG. La plataforma gvSIG en si misma est´a construida a modo de capas, cada una de las cuales define sus propios puntos de extensi´on. A su vez, cada plugin puede definir sus propios puntos de extensi´on. Este modelo de plugins, permite a los desarrolladores a˜nadir gran variedad 1En el desarrollo de software, un framework es una estructura conceptual y tecnol´ogica de soporte definida, normalmente con artefactos o m´odulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado. T´ıpicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros programas para ayudar a desarrollar y unir los diferentes componentes de un proyecto. (Wikipedia) En el cap´ıtulo 5.2.2 se detalla m´as a fondo el funcionamiento del framework andami. 120 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 5.4: Diagrama de subsistemas de gvSIG. de funcionalidades a la plataforma base de gvSIG, de forma que los artefactos de cada herramienta, como pueden ser los distintos tipos de capas, o botones, se presentan al usuario desde la plataforma com´un. Los desarrolladores de plugins tambi´en se benefician de esta arquitectura. El framework base de gvSIG les proporciona una serie de servicios de los cuales ellos no tienen que preocuparse, pudi´endose centrar en las tareas espec´ıficas de su extensi´on. La plataforma gvSIG se sustenta en una arquitectura abierta en la que cada equipo que desarrolla un plugin se puede centrar en su ´area 121 5.2 ARQUITECTURA DE GVSIG de experiencia. gvSIG presenta un conjunto de herramientas de forma homog´enea para el usuario. Las herramientas se integran dentro del marco de gvSIG usando unos mecanismos ya definidos llamados plugins. La plataforma gvSIG esta construida a modo de capas, cada una define sus propios puntos de extensi´on. Tambi´en cada plugin puede definir sus propios puntos de extensi´on. Este modelo de plugins, posibilita a los desarrolladores a˜nadir gran variedad de funcionalidades a la plataforma base. Los desarrolladores de plugins se benefician tambi´en de esta arquitectura. El framework base de gvSIG les proporciona servicios, pudi´endose centrar en las tareas especificas de su extensi´on. gvSIG est´a estructurada en subsistemas. ´ Estos est´an implementados como librer´ıas y como plugins en si mismos. La plataforma gvSIG esta conformada en su n´ucleo por los siguientes tres subsistemas: gvSIG. Representa los datos geogr´aficos manejados por Fmap. En este subsistema encontraremos las clases que implementan la mayor´ıa de cuadros de di´alogo que utiliza la aplicaci´on, as´ı como las clases de soporte a ´esos. Por ejemplo, aqu´ı se encuentran formularios para asignar leyendas, creaci´on de mapas y vistas, definici´on de escalas, etc. FMap. Es el coraz´on SIG de la plataforma. Incluye todas las clases para manejar objetos SIG, como drivers y adaptadores para el manejo de los formatos m´as usados para el almacenamiento de datos cartogr´aficos. En esta librer´ıa encontramos clases de lectura y escritura de los formatos soportados, de dibujo de mapas a las escalas adecuadas, y de asignaci´on leyendas, definici´on de simbolog´ıas, realizaci´on de b´usquedas, consultas, an´alisis, etc. Subdriver. En este subsistema se encuentran las clases que permiten el acceso y la gesti´on de los datos. 5.2.2 Andami. Un framework es una estructura de soporte, que permite desarrollar una aplicaci´on sobre ´el. En general, define la arquitectura b´asica de la aplicaci´on y provee de servicios que agilizar´an y simplificar´an el desarrollo del proyecto. 122 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 5.5: Esquema de la arquitectura de gvSIG. Andami es el framework sobre el que se ha construido gvSIG. Dise˜nado para ser extensible mediante la implementaci´on de nuevos plugins. Los plugins se consideran m´odulos que a˜naden nueva funcionalidad a la aplicaci´on. Andami da soporte, adem´as, a gvSIG en la composici´on b´asica de la interfaz de usuario y en la gesti´on de ventanas y eventos. Proporciona una forma simple importante en la gesti´on de estos aspectos, as´ı resulta muy sencilla la creaci´on de un plugin funcional de gvSIG. El proyecto Andami se localiza dentro del c´odigo fuente de gvSIG, en el directorio fwAndami. Una vez compilado, genera un fichero andami.jar que se suele situar en la ra´ız de la estructura de directorios de gvSIG. Andami contiene la parte de gvSIG encargada de iniciar la ejecuci´on, realiza la carga de plugins e inicializa los subsistemas de la aplicaci´on. Esencialmente, hay dos tipos de entidades que se relacionan con Andami, directa o indirectamente: los plugins y el resto de librer´ıas. Un plugin tiene una estructura especial que Andami reconoce y carga en el arranque, y se conecta con la interfaz de usuario en unos puntos definidos por el plugin. El resto de librer´ıas son aquellas que tambi´en son utilizadas en gvSIG pero que no adoptan forma de plugins. La mayor parte de la funcionalidad de gvSIG es proporcionada por los plugins, y ´estos a su vez se apoyan en librer´ıas. El propio gvSIG 123 5.2 ARQUITECTURA DE GVSIG es un plugin de Andami, que le aporta el concepto de documento (vista, tabla, mapa), capacidad de abrir y guardar proyectos, el gestor de proyectos, y otras funcionalidades. Conviene por tanto distinguir entre referirse al plugin gvSIG (llamado com.iver.cit.gvsig), y la aplicaci´on gvSIG (que engloba Andami, plugin gvSIG, el resto de plugins y librer´ıas). Las librer´ıas se encuentran en el directorio “bin/lib” de la instalaci´on de gvSIG, se incluyen en el CLASSPATH y por tanto est´an disponibles para toda la aplicaci´on. Las librer´ıas que se encuentran en el directorio de librer´ıas de un plugin s´olo est´an disponibles para ´este plugin que las contiene, y para plugins que declaran una dependencia sobre ´este. Habitualmente, los plugins tienen definida una dependencia sobre el plugin gvSIG (com.iver.cit.gvsig), de este modo las librer´ıas de gvSIG est´an disponibles para ellos. 5.2.2.1 Funcionalidad. Andami proporciona la siguiente funcionalidad: Extensibilidad con plugins. Carga de plugins, carga din´amica de clases y recursos de los plugins, etc. Creaci´on de la interfaz principal desde ficheros XML: men´us, barras de herramientas y barra de estado. Gesti´on de ventanas: creaci´on, cierre, propiedades, etc. Persistencia de datos: permite a los plugins el almacenamiento de datos en disco y posterior recuperaci´on de forma muy sencilla. Traducciones: proporciona servicios de traducci´on de los textos de la interfaz de usuario. Ejecuci´on de tareas en segundo plano: facilita la creaci´on y gesti´on de tareas que se ejecutan en segundo plano. Servicio de registro: aporta un registro (log) de sistema en el que escribir los errores producidos o eventos significativos (´util para detecci´on y depuraci´on de errores). Acceso al portapapeles. 124 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 5.6: Descripci´on de los bloques funcionales de Andami. Creaci´on de ficheros temporales. Acceso a recursos de los plugins Estas funcionalidades que proporciona Andami han sido utilizadas, practicamente en su totalidad, en la realizaci´on de este proyecto. En la figura 5.7 se muestra una perspectiva general de los bloques funcionales de Andami. Gesti´on de ventanas: Entre la funcionalidad aportada por Andami se encuentra la gesti´on de ventanas. El programador s´olo necesita crear un panel que incorpore el contenido de la ventana, y Andami crea la ventana real. 125 5.2 ARQUITECTURA DE GVSIG "UTF-8","ISO-8859-15"e"ISO-8859-1". <plugin-config> Esta etiquta marca el inicio y el fin del fichero de configuraci´on. Es la ra´ız del ´arbol XML. <resourceBundle> Indica el nombre base de los ficheros de traducci´on. Por ejemplo si toma el valor <resourceBundle name="text"> indica que los ficheros de traducciones se llaman text.properties,text_en.properties, etc. <depends> Indica los plugins de los que depende el plugin, a nivel de librer´ıas. Si se desea usar alguna clase o librer´ıa que est´en en un plugin distinto, se debe declarar una dependencia de ese plugin. De este modo habr´a una entrada <depends>por cada plugin del que dependa. Las dependencias determinan el orden de carga de plugins. Un plugin siempre se carga despu´es de haber cargado sus dependencias. Habitualmente, los plugins dependen del plugin gvSIG (com.iver.cit.gvsig), que es el plugin que se carga primero. <libraries> Establece el directorio de las librer´ıas del plugin. Habitualmente se utiliza <libraries library-dir="."> para el directorio ra´ız del plugin, o<libraries library-dir="lib"> para indicar el subdirectorio lib. Dos plugins diferentes pueden tener distintas versiones de la misma librer´ıa, y ambas funcionar´an sin interferencias excepto en los siguientes casos: Si un plugin A declara una dependencia de un plugin B, y ambos poseen diferente versiones de la misma librer´ıa, el plugin B usar´a su propia versi´on sin ning´un problema y el plugin A usar´a su propia versi´on si el plugin B se carga despu´es de A, en caso contrario se usar´a la versi´on de B. Si existe un plugin A que tiene una librer´ıa, y ´esta est´a en el CLASSPATH inicial de Andami (declarado al lanzar Andami), el 132 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ plugin A utilizar´a la versi´on presente en el CLASSPATH inicial. <label-set> Esta etiqueta indica el comienzo de un grupo de etiquetas, label, para la barra de estado. Cada grupo de etiquetas, label-set, asociado a una clase, y s´olo visible cuando la ventana visible es instancia de dicha clase. Acepta el siguiente atributo: class-name nombre de la clase asociada a este label-set. Las etiquetas del label-set s´olo ser´an visibles si la ventana activa es instancia de esta clase. <label> Instala una etiqueta, que se trata de texto no editable, en la barra de estado. La etiqueta pertenece siempre a un grupo de etiquetas, label-set, y s´olo ser´a visible cuando lo sea el label-set al que pertenece. Acepta los siguientes atributos: id Identificador de la etiqueta. Se usar´a para el acceso a la etiqueta y la escritura sobre ella. size Anchura de la etiqueta en p´ıxeles. <extensions> Marca el inicio de la lista de extensiones. <extension> Sirve para declarar una extensi´on de Andami. La declaraci´on incluye el nombre de la clase Java que implementa la extensi´on, y una serie de elementos de interfaz de usuario que se a˜nadir´an a la aplicaci´on y estar´an asociados con esta extensi´on. Acepta los siguientes atributos: class-name Nombre de la clase que implementa esta extensi´on. La clase debe estar ubicada en alguna librer´ıa incluida en el plugin. description Descripci´on de la funcionalidad que aportada por la extensi´on. 133 5.2 ARQUITECTURA DE GVSIG active Establece si la extensi´on est´a activa o no. El hecho de no estar activa resulta como si no existiera. priority La prioridad de la extensi´on. Determina el orden de carga respecto a otras extensiones del mismo plugin. Una extensi´on con prioridad menor se carga antes que otra extensi´on con prioridad mayor. Las dependencias entre plugin son las que determinan el orden de carga de los plugins, por lo tanto si queremos es cambiar el orden de carga de dos extensiones que est´an en plugins distintos, se debe modificar las dependencias entre ellos, y no la prioridad. Se usan valores, por convenci´on entre 1 y 99999 aunque se admiten rangos mayores. Para una extensi´on sin ninguna necesidad especial, es posible omitir el valor prioridad, o darle un valor de 2000. <tool-bar> Esta etiqueta crea una barra de herramientas. Dentro esta etiqueta se anidar´an los botones que se pretenden incorporar a esta barra de herramientas. Distintas extensiones pueden a˜nadir botones a la misma barra de herramientas, para ello deben llamarla igual. Acepta los siguientes atributos: name Nombre de la barra de herramientas. Si el nombre de la toolbar de distintas extensiones es el mismo, se a˜nadir´an a la misma tool-bar. Tambi´en se mostrar´a traducido al idioma correspondiente en la lista de barras de herramientas , por esto que name debe ser considerada como una clave de traducci´on. position Sirve para establecer la posici´on de la barra de herramientas respecto a otras. Un valor de position m´as bajo que la de otra tool-bar indica que se situar´a m´as a la izquierda que la de mayor valor. Si distintas extensiones definen positions diferentes para la misma tool-bar, se tendr´a ´unicamente en cuenta la definida en la extensi´on con mayor prioridad, esto es, la de valor de priority m´as bajo. is-visible Determina la visibilidad inicial de la tool-bar. Es posible cambiarlo posteriormente por c´odigo, o por el usuario en los men´us. 134 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ <action-tool> Una action-tool se trata de una herramienta, por ejemplo un bot´on, que lanza una acci´on determinada. El mecanismo consiste en los siguientes pasos: el bot´on es pulsado por el usuario, el evento de pulsado lo recibe Andami, quien consulta la extensi´on asociada al bot´on y ejecuta el m´etodo execute(String actionCommand), de la extensi´on, pas´andole como par´ametro el valor de action-command definido para el bot´on. Acepta los siguientes atributos: action-command Especifica el comando que se desea ejecutar por la extensi´on asociada. Puede omitirse si la extensi´on va a tener un solo bot´on o men´u, asociado, o si todos los botones, men´us, etc ejecutan la misma acci´on. name Nombre del bot´on. De utilidad si se desea posteriormente obtener el bot´on para cambiarle, por ejemplo, el icono. position Para establecer la posici´on del bot´on en de la barra de herramientas. Un valor position m´as bajo que la de otro bot´on situar´a m´as a la izquierda que el mayor. En el caso de existir diferentes botones con la misma posici´on o sin posici´on, se ordenar´an de manera arbitraria. Un bot´on con posici´on ir´a a la izquierda de uno sin posici´on. De todas formas, no es recomendable la omisi´on de este atributo. icon Icono que aparecer´a dentro del bot´on. La ruta de la imagen debe ser relativa al directorio ra´ız del plugin. text Texto opcional a mostrar junto al icono. tooltip Texto que se mostrar´a en el globo de texto mostrado al situar el rat´on sobre el bot´on durante unos segundos. enable-text Texto informativo de las condiciones para que el bot´on est´e activo. Si el bot´on est´a visible pero desactivado, el tooltip muestra este texto en lugar del normal, para informar al usuario de lo que debe hacer para poder utilizar esta herramienta. last Sirve para dejar un espacio extra en la parte derecha de este icono. Suele usarse en el ´ultimo icono de una barra de herramientas, y as´ı marcar m´as la separaci´on respecto a la barra de her135 5.2 ARQUITECTURA DE GVSIG ramientas siguiente. <selectable-tool> Una selectable-tool es un bot´on que puede estar pulsado o no pulsado, y no ejecuta una acci´on como la action-tool, sino que indica un cambio de estado. Un ejemplo de selectable-tool es el Zoom+, Zoom-. Cuando una selectable-tool est´a pulsada, las dem´as est´an no pulsadas. Al pulsar en otra selectable-tool, la anterior pasa a no estar pulsada. La selectable-tool seleccionada va asociada a la ventana activa: al cambiar de ventana activa, se carga la selectable-tool seleccionada asociada a la nueva ventana activa. Al volver a la ventana anterior, pasa a seleccionarse la selectable-tool asociada a la ventana anterior. La etiqueta selectable-tool admite los mismos atributos que la etiqueta actiontool, con la misma sem´antica, a excepci´on de action-command que en este caso indica qu´e herramienta est´a seleccionada. Adicionalmente selectable-tool permite: is-default Determina si la herramienta estar´a seleccionada inicialmente. <menu> Esta etiqueta sirve para crear una entrada de men´u. El men´u funcionar´a como una action-tool, al pinchar en el men´u se ejecutar´a el m´etodo execute(String actionCommand) de la extensi´on asociada, como par´ametro se le pasa el action-command del men´u. Admite los siguientes atributos: action-command Indica el comando que se desea ejecutar en la extensi´on asociada. Es posible omitirlo si la extensi´on va a tener un ´unico bot´on o men´u, etc. asociado, o bien si todos los botones, men´us, etc. ejecutan la misma acci´on. text Determina la localizaci´on y el texto que se mostrar´a en la entrada del men´u. La etiqueta text tiene la forma "Archivo/Abrir". Cada porci´on separada por la barra (/) indica un contenedor de men´u, como Archivo, a excepci´on de la ´ultima porci´on que indica el texto que se mostrar´a en la propia entrada. En el ejemplo "Archivo/Abrir"crear´a una entrada Abrir en el men´u Archivo. Otro ejemplo: "Archivo/Plantillas/Abrir Plantillas"crear´a una 136 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ entrada Abrir Plantillas dentro del submen´u Plantillas, dentro del men´u Archivo. Si los men´us contenedores no existieran, se crear´ıan de forma autom´atica. El texto real mostrado en los men´us y submen´us se traduce por lo que cada porci´on de texto utilizado aqu´ı constituye una clave de traducci´on. position Se utiliza para establecer la posici´on de la entrada de men´u en el submen´u en el que se ubica. Un valor position m´as bajo que el de otra entrada situar´a m´as arriba la entrada, es decir, m´as cerca del inicio del men´u. En el caso de existir diferentes entradas con la misma posici´on, o sin posici´on, se ordenar´an de forma arbitraria. Una entrada con posici´on estar´a m´as arriba que una entrada que no tenga posici´on. Es recomendable no omitir este atributo. icon Icono a mostrar en el bot´on. La ruta de la imagen es relativa al directorio ra´ız del plugin. tooltip Texto que se muestra en el globo de texto, tooltip, que se muestra al situar el rat´on sobre el bot´on durante unos segundos. enable-text Texto informativo de las condiciones que activar´ıan el bot´on. Si el bot´on est´a visible pero tambi´en desactivado, el tooltip muestra este textoen lugar del normal, para informar al usuario de la manera de activar esta herramienta. key La key es el car´acter que forma la combinaci´on de teclas que lanza este men´u. Se forma utilizando el modificador del sistema operativo + key. Por ejemplo en Windows el modificador es la tecla ALT, y la key de la entrada de men´u A˜nadir capa es O, por lo tanto pulsando ALT+O aparece el di´alogo de a˜nadir capa. mnemonic El mnemonic es la tecla que activa esta entrada de men´u cuando ´este est´e desplegado y tenga el foco. Por ejemplo, si el men´u Archivo est´a seleccionado, y pulsamos la tecla A, aparece el di´alogo de abrir proyecto ya que A es el mnemot´ecnico de la entrada Abrir proyecto. is_separator Atributo que a˜nade un separador en esta posici´on de la barra de men´us. Debe a˜nadirse en una entrada de men´u aparte, puwato que no a˜nade un separador bajo la entrada actual, sino 137 5.2 ARQUITECTURA DE GVSIG que transforma la entrada actual en un separador, por tanto no se mostrar´a texto ni icono, ni se podr´a pulsar sobre ella. <combo-scale> A˜nade a la barra de estado un control de tipo combo box. Se trata de un control que permite elegir un valor de una lista de valores, o bien escribir el valor deseado. Aparece adem´as una etiqueta de texto descriptiva a la izquierda. Acepta los siguientes atributos: name Nombre del control. Deber´ıa ser distinto al nombre de cualquier otro control. label El texto que se muestra a la izquierda del combo box. elements Lista de valores num´ericos separados por punto y coma. Cada valor representa una entrada del combo box. value Valor inicialmente seleccionado. En caso de omitirse aparece el primer elemento seleccionado. action-command Especifica el comando que se pretende que ejecute la extensi´on asociada. Si la extensi´on va a tener un solo bot´on, o men´u, etc. asociado se puede omitir, del mismo modo que si todos los botones, men´us, etc. ejecutan la misma acci´on. 5.2.2.4 Extensiones Las extensiones son clases puente entre la funcionalidad de gvSIG y las funcionalidades que aporta el plugin. La extensi´on recibe notificaci´on de las acciones realizadas, y ejecuta el c´odigo apropiado en respuesta a estas acciones, posiblemente usando otras clases del plugin. El siguiente diagrama (ver imagen 5.10) muestra un esquema de todas las clases implicadas en la creaci´on de extensiones. Todas las extensiones en gvSIG implementan la interfaz IExtension, que incluye los siguientes m´etodos: public void initialize() Una vez leidas y ordenadas todas las extensiones presentes en los plugins, este m´etodo es invocado para cada una de ellas, secuencialmente atendiendo al orden definido en la prioridad de las extensiones. 138 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 5.8: Diagrama de las clases implicadas en la creaci´on de extensiones. public void postInitialize() Una vez inicializadas todas las extensiones, se llama a este m´etodo para cada extensi´on, siguiendo el mismo orden de antes. public void terminate() A la salida de la aplicaci´on, se invoca a este m´etodo para cada extensi´on, siguiendo un orden secuencial inverso al seguido en la inicializaci´on. La ´ultima extensi´on inicializada es la primera que se finalizar´a, y la primera que se inicializ´o ser´a la ´ultima en ser finalizada. public void execute(String actionCommand) En el fichero config.xml se definen elementos de la interfaz de usuario como botones, men´us, etc. asociados a una extensi´on. Al pulsar en uno de estos elementos de la interfaz, se busca la extensi´on asociada y se invoca a este m´etodo. Los botones, men´us, etc pueden tener asociada una cadena de texto que act´ua como identificador de comando llmada action command. Al llamar al m´etodo execute, se pasa como par´ametro el actionCommand asociado al bot´on pulsado. De este modo, si existen varios botones, men´us, etc. asociados a esta extensi´on, es posible discriminar mediante una comprobaci´on 139 5.2 ARQUITECTURA DE GVSIG del actionCommand recibido. Normalmente, ser´a en este m´etodo donde se encuentran las acciones principales de la extensi´on (abrir un asistente, comenzar alg´un procesamiento, etc). public boolean isEnabled() Los elementos de interfaz de usuario tales como botones, men´us, controles de la barra de estado, etc. asociados a esta extensi´on estar´an activados, o desactivados en funci´on del valor devuelto por este m´etodo. Si un bot´on est´a desactivado, aparece en gris claro y no se puede pulsar sobre ´el. public boolean isVisible() Los elementos de interfaz de usuario tales como botones, men´us, controles de la barra de estado, etc. asociados a esta extensi´on estar´an visibles o invisibles en funci´on del valor devuelto por este m´etodo. Si un bot´on est´a invisible, no se mostrar´a independientemente del valor que devuelva el m´etodo isEnabled(). Tanto este m´etodo, isVisible(), como el anterior, isEnabled(), determinan si la extensi´on y sus elementos de interfaz de usuario asociados ser´an visibles y estar´an activos. Estas propiedades se comprueban para todas las extensiones cada vez que cambia la ventana activa y tambi´en justo despu´es de procesar un evento de interfaz de usuario, es decir, despu´es de invocar al m´etodo execute de una extensi´on. public boolean isEnabled(IExtension extension) Decide si la extensi´on que se pasa como par´ametro estar´a activada o no, ignorando el valor devuelto por el m´etodo isEnabled de la propia extensi´on. public boolean isVisible(IExtension extension) Decide si la extensi´on que se pasa como par´ametro estar´a visible o no, ignorando el valor devuelto por el m´etodo isVisible de la propia extensi´on. Tnto este m´etodo como el anterior s´olo se usan con el mecanismo ExclusiveUIExtension. Esto permite a una extensi´on tomar el control de la interfaz y poder activar o desactivar otras extensiones, es decir mostrarlas u ocultarlas. Permite crear extensiones que personalicen gvSIG por ejemplo, una extensi´on que convierta gvSIG en un simple visor de cartograf´ıa. Salvo que exista una necesidad especial, normalmente no se implementar´a directamente la interfaz IExtension, sino que se extender´a la clase abstracta Extension. ´ Esta a su vez ya implementa IExtension. 140 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Esto ofrece cierta tranquilidad de futuro en el funcionamiento de la extensi´on, puesto que si se a˜nadiera alg´un m´etodo a la interfaz IExtension, este m´etodo se implementar´ıa en la clase Extension de modo que la extensi´on continuar´ıa funcionando sin cambios a menos que necesitara un comportamiento para el nuevo m´etodo diferente al implementado en Extension. El mecanismo ExclusiveUIExtension permite poder hacer algo parecido a lo que se consigue mediante ExtensionDecorator, solo que en este caso existe una ´unica extensi´on que decidir´a el estado de las dem´as extensiones. ExtensionDecorator permite que cualquier extensi´on modifique el estado de las dem´as. ExclusiveUIExtension permite definir una ´unica extensi´on que podr´a mostrar, ocultar, activar y desactivar el resto de extensiones. Ambos mecanismos pueden ser usados al mismo tiempo. ExclusiveUIExtension respetar´a lo definido por ExtensionDecorator, de modo que si ExtensionDecorator define una visibilidad como ALWAYS_VISIBLE, siempre visible, la extensi´on estar´a visible pese a lo definido en ExclusiveUIExtension. Esto significa que ExclusiveUIExtension actuar´a s´olo en caso de que el ExtensionDecorator est´e inactivo, es decir, modo ExtensionDecorator.INACTIVE. En cualquier caso, ExtensionDecorator s´olo act´ua sobre la visibilidad de la extensi´on, mientras que ExclusiveUIExtension puede definir adem´as si la extensi´on est´a activa, es decir enabled, o no. Para utilizar ExclusiveUIExtension se necesita: Una extensi´on que implemente los m´etodos isEnabled(IExtension extension) e isVisible(IExtension extension). La extensi´on actuar´a como ExclusiveUIExtension, decidiendo el estado visible, invisible, activa o desactivada, del resto de extensiones. Registrarse como ExclusiveUIExtension en Andami, dentro del m´etodo initialize de la extensi´on, empleanto el m´etodo PluginServices.setExclusiveUIExtension(). Otra modo equivalente al uso del m´etodo setExclusiveUIExtension es sumistrar un par´ametro de arranque a gvSIG. El par´ametro es: ExclusiveUIExtension=NombreDeExtension, donde NombreDeExtension es el nombre de la extensi´on mencionada en el punto anterior. 141 7.4 IMPLEMENTACI ´ ON DEL PLUGIN tras seleccionar la herramienta de la barra de herramientas para carga autom´atica de capas y pintarlo sobre la vista. Por lo tanto la extensi´on de carga de capas busca, en los productos definidos en el documento LiDAR activo cuales est´an disponibles para la selecci´on realizada. A continuaci´on se muestra ,en primer lugar, el c´odigo Java que calcula el Rectangle2D asociado a un Producto, y en segundo lugar, el c´odigo que compara la extensi´on de una colecci´on de capas LiDAR ajustadas, con el rect´angulo de selecci´on de la herramienta, para verificar si son de la misma zona: /** * Metodo que calcula el fullextent del pruducto y lo setea * Unicamente ha de tener seteado el path como requisito * Aqui NO setearemos el campo Name ya que es generico y no se si estoy tratando lidar ajustados, * sin ajustar, ortos, vectoriales, AOI o Bloques */ public void calcularExtension(){ String path =this.path; File f = new File(path); FiltroTipoArchivos filtro = new FiltroTipoArchivos(); if(path.equals("")){ //si no tiene una ruta la extension la seteamos a 0 this.setExtension(new Rectangle2D.Double()); } else if(filtro.esVectorial(f)){ this.setDriverName(filtro.getVectorialDriverName(f)); Rectangle2D rect=null; try { Driver d = LayerFactory.getDM().getDriver(this.getDriverName()); ((VectorialFileDriver)d).open(f); ((VectorialFileDriver)d).initialize(); // comprueba que contenga datos el fichero. if(((VectorialFileDriver)d).getShapeCount()>0){ // obtenemos el rectagle2D que forman los vectoriales y lo asignamos al producto rect = ((VectorialFileDriver)d).getFullExtent(); this.setExtension(rect); } else this.setExtension(new Rectangle2D.Double()); }catch (IOException exc) { // TODO Auto-generated catch block JFrame j= new JFrame(); JOptionPane.showMessageDialog(j,PluginServices.getText(null,"Error al cargar el fichero"+this.getPath())); this.setExtension(new Rectangle2D.Double()); exc.printStackTrace(); } 244 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ } else if (filtro.esImagen(f)){ this.setDriverName("gvSIG Image Driver"); Rectangle2D rect=null; try { FLayer layer; layer = LayerFactory.createLayer("auxiliar",this.driverName, f, Project.getDefaultProjection()); if(layer!=null && layer.isOk()){ // obtenemos el rectagle2D que forman los shp rect = layer.getFullExtent(); this.setExtension(rect); } }catch(Exception ex){ JFrame j= new JFrame(); JOptionPane.showMessageDialog(j,PluginServices.getText(null,"Error al cargar el fichero"+this.getPath())); this.setExtension(new Rectangle2D.Double()); ex.printStackTrace(); } } } C´odigo que compara la extensi´on de una colecci´on de capas LiDAR ajustadas, con el rect´angulo de selecci´on de la herramienta: //la variable rect contiene el rect´angulo de selecci´on del usuario sobre la vista ... for(int i=0;i<productosLiDARAdjusted.size();i++){ if(productosLiDARAdjusted.get(i).getExtension().intersects(rect)){ if(numProductosLiDARAdjustedIntersect==0) model.addElement(productosLiDARAdjusted.get(0).getName()); //todos se llaman igual, cojo cualquiera numProductosLiDARAdjustedIntersect++; //corto el bucle cuando encuentro 2 que lo intersectan ya que si solo hay uno que intersecta //no crear´e una agrupacion de capas y si hay m´ınimo 2 s´ı la crear´e. if(numProductosLiDARAdjustedIntersect==2) break; } } 7.4.4 La extensi´on de selecci´on del proyecto activo Esta extensi´on permite la selecci´on del documento LiDAR activo. ´ Es necesario definir uno como activo para ciertas operaciones como el caso de la extensi´on de carga autom´atica de capas definidas en un documento LiDAR. Puesto que es posible tener definidos varios documentos LiDAR al mismo tiempo se necesita saber de cual de ellos obtener la informaci´on. <extension class-name="com.dielmo.lidar.extension.ActiveProjectExtension" description="SeleccionProyectoActivo" active="true"> 245 7.4 IMPLEMENTACI ´ ON DEL PLUGIN Figura 7.10: Bot´on de la extensi´on de selecci´on del documento LiDAR activo. <tool-bar name="LiDAR_Tool"> <action-tool icon="images/lidarActive.png" action-command="LIDAR_DOC_ACTIVE" tooltip="lidar_document_active" position="3"/> </tool-bar> <menu text="LiDAR/lidar_document_active" tooltip="lidar_document_active" action-command="LIDAR_DOC_ACTIVE" icon="images/lidarActive.png" position="3" /> </extension> En el caso de otros documentos, como por ejemplo las vistas, se considera activa aquella que tiene el foco. Sin embargo en el caso de un documento LiDAR no se interact´ua con su interfaz, sino que se definen los datos y se cierra el panel del documento, y estos datos ser´an le´ıdos en interacciones con vistas, en algoritmos de c´alculo, etc, de ah´ı la importancia de esta extensi´on por definir el documento LiDAR activo. De la misma forma que en la extensi´on anterior, se han declarado un action-tool y un menu text, es decir, una entrada en el mismo men´u que la extensi´on anterior y un bot´on en la barra de herramientas de la ventana principal de gvSIG. En la figura 7.10 se muestra la apariencia del bot´on de la barra de herramientas y el tooltip resultado de traducir el valor la etiqueta tooltip del xml de la extensi´on. A continuaci´on se muestra el trozo de c´odigo Java que implementa el bot´on de aceptar tras seleccionar el documento activo que dispone de la funcionalidad necesaria para setearlo como tal: private JButton getJButtonAccept(){ JButton jButtonAcetpar=new JButton(PluginServices.getText(null,"Aceptar")); jButtonAcetpar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(jComboLidarProjects.getSelectedItem()!= null){ lidarDocumentSelected = (LiDARDocument)jComboLidarProjects. getSelectedItem(); LiDARProject.setInstance(lidarDocumentSelected.getLidarProject()); lidarDocumentSelected.getLidarProject().setSoyProyectoActivo(true); 246 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ //recorro los demas y los seteo a false ProjectExtension projectextension = (ProjectExtension) PluginServices. getExtension(com.iver.cit.gvsig.ProjectExtension.class); lidarProjects = projectextension.getProject().getDocumentsByType( LiDARDocumentFactory.registerName); for(int i = 0;i<lidarProjects.size();i++){ LiDARDocument ld=lidarProjects.get(i); if(!ld.getLidarProject().equals(lidarDocumentSelected. getLidarProject())) lidarProjects.get(i).getLidarProject().setSoyProyectoActivo( false); } } PluginServices.getMDIManager().closeWindow(LidarDocumentSelectionPanel.this ); } }); return jButtonAcetpar; } 7.4.5 La extensi´on de visualizaci´on de gr´aficas longitudinales Esta extensi´on permite la visualizaci´on de perfiles longitudinales de los datos LiDAR. Esta funcionalidad, como se ha mostrado durante el an´alisis de otras aplicaciones que utilizan datos LiDAR, es muy ´util para un an´alisis visual de los datos. <extension class-name="com.dielmo.lidar.extension.GraficaLongitudinalExtension" description="Creaci´on de gr´aficas longitudinales a partir de la selecci´on de una franja sobre datos LiDAR. " active="true"> <tool-bar name="LiDAR_Tool"> <action-tool icon="images/longitudinal.png" action-command="grafica_long" tooltip="graf_long" position="4"/> </tool-bar> <menu text="LiDAR/graf_long" tooltip="graf_long" action-command="grafica_long" icon="images/longitudinal.png" position="4" /> </extension> Para la implementaci´on de la herramienta se ha declarado un actiontool y un menu text, una entrada en el mismo men´u que la extensi´on anterior y un bot´on en la barra de herramientas de la ventana principal de gvSIG. public class GraficaLongitudinalExtension extends Extension { private com.dielmo.lidar.utiles.chart.GraficaLongitudinalLineListener listener = null; 247 7.4 IMPLEMENTACI ´ ON DEL PLUGIN public void execute(String actionCommand) { if(actionCommand.equals("grafica_long")){ View view = (View)PluginServices.getMDIManager().getActiveWindow(); if(view == null)return; MapControl mc = view.getMapControl(); StatusBarListener sbl = new StatusBarListener(mc); listener = new com.dielmo.lidar.utiles.chart.GraficaLongitudinalLineListener(mc ); mc.addMapTool("grafica_long",new Behavior[]{ new ThreePointsBehavior(listener), new MouseMovementBehavior(sbl)}); mc.setTool("grafica_long"); } } public boolean isEnabled() { com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager(). getActiveWindow(); if (f == null)return false; if (f instanceof View) { View vista = (View) f; IProjectView model = vista.getModel(); FLayers layers = model.getMapContext().getLayers(); FLayer lyr; SingleLayerIterator it = new SingleLayerIterator(layers); while (it.hasNext()) { lyr = it.next(); if(LiDARDriver.isLidarLayer(lyr) && lyr.isAvailable()) return true; } } return false; } public boolean isVisible() { com.iver.andami.ui.mdiManager.IWindow f = PluginServices.getMDIManager(). getActiveWindow(); if (f == null)return false; if (f instanceof View) { View vista = (View) f; IProjectView model = vista.getModel(); FLayers layers = model.getMapContext().getLayers(); FLayer lyr; SingleLayerIterator it = new SingleLayerIterator(layers); while (it.hasNext()) { lyr = it.next(); if(LiDARDriver.isLidarLayer(lyr) && lyr.isAvailable()) return true; } } return false; } public void initialize() {} %%%%%%%%%% } En el c´odigo de la extensi´on se observa que los m´etodos isVisible() y isEnabled(), que determinan la visibilidad y disponibilidad de las her248 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 7.11: Herramienta de selecci´on de franjas. ramientas del men´u y de la barra, permitir´an el uso de la herramienta de perfiles longitudinales siempre que la ventana activa sea una vista que contenga alguna capa LiDAR disponible. De la misma forma que en la extensi´on de carga de capas autom´atica, el m´etodo execute activa una herramienta que permite interactuar con la vista. Esta herramienta permite localizar 3 puntos que definen la franja a mostrar el perfil. Los dos primeros puntos forman una l´ınea y el tercero define el grosor de la franja (ver figura 7.11). A continuaci´on se muestra la parte de c´odigo java que calcula la franja a partir de los tres puntos definidos: /** * Obtiene la IGeometry que forman los 3 puntos con los que formamos nuestra franja rectangular de seleccion de puntos LiDAR * en la vista. * * @param franja Franja de la cual extraemos la geometria. * @return geometria que forma el rectangulo de nuestra franja de entrada. */ private IGeometry obtenerIGeometryFranja(Franja franja){ Point2D p1=franja.getPunto1(); Point2D p2=franja.getPunto2(); Point2D p3=franja.getPunto3(); org.jfree.data.xy.Vector vec2 = new org.jfree.data.xy.Vector(p2.getY() - p1.getY() ,-(p2.getX() - p1.getX()) ); double moduleV2=vec2.getLength(); org.jfree.data.xy.Vector vec2Unit = new org.jfree.data.xy.Vector(vec2.getX()/ moduleV2 , vec2.getY()/moduleV2 ); Line2D l=new Line2D.Double(p1,p2); grosor=2*l.ptLineDist(p3); 249 7.4 IMPLEMENTACI ´ ON DEL PLUGIN //busco punto pvert1 en recta y=m2x + n2 q ademas diste GROSOR/2 de p1 //la distancia es el modulo del vectorr entre ambos puntos Point2D pvert1 = new Point2D.Double(p1.getX()+vec2Unit.getX()*(grosor/2) , p1.getY ()+vec2Unit.getY()*(grosor/2)); Point2D pvert2 = new Point2D.Double(p1.getX()-vec2Unit.getX()*(grosor/2) , p1.getY ()-vec2Unit.getY()*(grosor/2)); Point2D pvert3 = new Point2D.Double(p2.getX()+vec2Unit.getX()*(grosor/2) , p2.getY ()+vec2Unit.getY()*(grosor/2)); Point2D pvert4 = new Point2D.Double(p2.getX()-vec2Unit.getX()*(grosor/2) , p2.getY ()-vec2Unit.getY()*(grosor/2)); // obtenemos la geometria con los puntos que formaran el rectangulo de nuestra Franja de seleccion sobre la capa LiDAR. GeneralPathX iteratorPath = new GeneralPathX(); iteratorPath.moveTo(pvert1.getX(),pvert1.getY()); iteratorPath.lineTo(pvert2.getX(),pvert2.getY()); iteratorPath.lineTo(pvert4.getX(),pvert4.getY()); iteratorPath.lineTo(pvert3.getX(),pvert3.getY()); iteratorPath.lineTo(pvert1.getX(),pvert1.getY()); IGeometry geom = ShapeFactory.createPolygon2D(iteratorPath); return geom; } Una vez obtenida la franja del terreno que se desea representar mediante un perfil, en primer lugar hay que obtener qu´e puntos lidar, est´an dentro de esta franja (si desatendemos la altura z del punto LiDAR el punto est´a situado dentro del rect´amgulo definido por la franja), en segundo lugar los puntos hay que trasladarlos al origen de coordenadas y finalmente rotarlos para poder visualizarlos de frente mediante sus alturas. A continuaci´on se adjunta la parte de c´odigo que se encarga de esta tarea: //obtengo la IGeometry de la franja de seleccion y creo el objeto TransformaPuntos3D para trasladar y rotar puntos IGeometry geometry= obtenerIGeometryFranja(franja); //para trasladar y rotar los puntos inicializo trans3d trans3d = new TransformaPuntos3D(franja.getPunto1().getX(),franja.getPunto1().getY (),franja.getPunto2().getX(),franja.getPunto2().getY(),null); //arraylist de todas las capas lidar visibles en la vista ArrayList<FLyrVect> capasLidarVisibles = obtenerCapasLidarVisibles(); ArrayList<double[]> todosLosRows=new ArrayList<double[]>(); for(int i=0;i<capasLidarVisibles.size();i++){ FLyrVect lyrVect= capasLidarVisibles.get(i); if(LiDARDriver.isLidarLayer(lyrVect)){ ArrayList<double[]> dat = getArrayPuntosFromGeom(geometry,lyrVect, i); todosLosRows.addAll(dat); } } // seteamos los row de puntos 250 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ this.trans3d.setPuntos(todosLosRows); float[][] data=transformaPuntos(todosLosRows); capaSeleccionXZ = crearCapaAuxiliar(todosLosRows); // la capa auxiliar contiene los puntos dentro de la franja ya trasladados y rotados. // Pintamos la gr´afica en un diagrama basado en un panel de jfreechart adaptado para la funcionalidad erquerida. ScatterPlotDialog panel2= new ScatterPlotDialog(565,400,data, trans3d, grosor, capaSeleccionXZ); En el c´odigo anterior hay que aclarar un par de m´etodos. getArrayPuntosFromGeom() y transformaPuntos(). El primero de ellos getArrayPuntosFromGeom realiza una petici´on queryByShape o lo que es lo mismo obtiene los puntos situados dentro de la geometr´ıa pasada como par´ametro. /** * Obtiene los rows de la capa flyer que intersectan con la geometria geom y fueron pintados en la vista. * * @param geom geometria de interes para la seleccion de puntos. * @param flyer capa sobre la que extraer los puntos. * @param iDLayer id del orden de las capas visibles en el toc * @return array con los row de los puntos que buscamos dentro de la capa y que intersectan con la geometria. */ private ArrayList<double[]> getArrayPuntosFromGeom(IGeometry geom, FLyrVect flyer, int iDLayer){ ArrayList<double[]> arrayRetornar = null; if(flyer.getStrategy() instanceof LiDARStrategy){ LiDARStrategy lidarStrategy = (LiDARStrategy) flyer.getStrategy(); ArrayList<Integer> indicesVista = (ArrayList<Integer>) lidarStrategy.getIndice ().clone(); if(indicesVista!=null) arrayRetornar = queryByShape(geom, flyer, indicesVista, iDLayer); } return arrayRetornar; } El segundo de los m´etodos transformaPuntos traslada y rota punto por punto usando la clase TransformaPuntos3D como se muestra a continuaci´on: /** * Transforma los puntos LiDAR que caen dentro de nuestra franja. * * @param arrayDatos vector de puntos * * @return matriz con las xz transformadas de todos los puntos. */ private float[][] transformaPuntos(ArrayList<double[]> arrayDatos){ 251 7.4 IMPLEMENTACI ´ ON DEL PLUGIN float[][] data = new float[3][arrayDatos.size()]; for(int i=0;i< arrayDatos.size();i++){ double[] punto =arrayDatos.get(i); this.trans3d.trasladaPunto(punto); this.trans3d.rotaPunto(punto); // nos quedamos con la x y la z para hacer la grafica respecto a esos ejes. data[0][i]= (float)punto[0]; data[1][i]= (float)punto[2]; data[2][i]= (float)punto[5]; } return data; } /** * Traslada el row pasado, el cual contiene en la posicion 0 la x y en la posicion 1 la y. * La traslacion consta a restarle la x e y del primero punto con el cual formabamos nuestra franja de seleccion. * * @param punto punto a trasladar. */ public void trasladaPunto(double[] punto){ punto[0]=punto[0]-this.x1; punto[1]=punto[1]-this.y1; } /** * Rota el row pasado, el cual contiene en la posicion 0 la x y en la posicion 1 la y. * La rotacion consta en la formula x*cos(angulo)-y*sin(angulo), siendo angulo el angulo que forma la recta de la franja * con respecto al eje x. * * @param punto punto a rotar. */ public void rotaPunto(double[] punto){ double x=punto[0]; double y=punto[1]; punto[0] = x*Math.cos(this.angulo) - y*Math.sin(this.angulo); punto[1]= x*Math.sin(this.angulo) + y*Math.cos(this.angulo); } El resultado ver figura 7.12. 7.4.6 La extensi´on de conversi´on de .LAS a .XYZ <extension class-name="com.dielmo.lidar.extension.LAStoXYZWithFilterExtension" description="LasToXYZWithFilter" active="true"> <tool-bar name="LiDAR_Tool"> <action-tool icon="images/las_to_xyz.png" action-command="XYZtoLAS" tooltip="las_to_xyz" position="2"/> </tool-bar> 252 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Figura 7.12: Perfil de un valle. <menu text="Vista/Proyecto/las_to_xyz" tooltip="las_to_xyz" action-command="las_to_xyz" icon="images/las_to_xyz.png" /> </extension> La extensi´on de conversi´on de formatos de .LAS a XYZ dota a gvSIG de la capacidad de pasar a distintos formatos los datos para asegurar su compatibilidad con otros softwares. Permite en primer lugar agregar una cantidad de ficheros a la herramienta de conversi´on, lo que permitir´a lanzar un ´unico proceso que realice todas las conversiones. En segundo lugar dispone de un filtro que permite realizar expresiones a ser evaluadas por cada uno de los puntos LiDAR, pudiendo as´ı ´unicamente pasar al formato destino, por ejemplo, los puntos en un rango de alturas determinado, de una intensidad determinada, o los obtenidos entre un determinado ´angulo de apertura del l´aser. En tercer lugar permite definir los ficheros de salida, pudiendo decidir qu´e campos de entrada ser´an campos de salida, en qu´e orden situar estos campos, qu´e precisi´on en decimales tendr´an, y si se quiere obtener un ´unico fichero de salida o varios de un tama˜no m´aximo definido. Se trata por tanto de una herramienta avanzada de conversi´on. Una vez definidos todos los par´ametros se lanza la tarea en segundo plano haciendo uso del servicio que proporciona andami a los plugins para este fin. Por c´odigo se abren las capas LiDAR para ver los campos disponibles,y as´ı mostrarlos para permitir realizar una expresi´on de filtro utilizando 253 7.5 IMPLEMENTACI ´ ON DE ALGORITMOS •Puntos planos: A partir de los datos LiDAR originales, buscamos zonas muy planas, donde la variaci´on m´axima en altura (diferencia entre la altura m´axima y m´ınima) sea inferior a 30cm dentro de la resoluci´on de trabajo. A partir de esta selecci´on de puntos, nos quedaremos con aquellos que caen en zonas de solape y almacenamos un fichero vectorial de puntos con las diferencias de alturas entre pasadas que nos servir´a para realizar un an´alisis del ajuste en altura entre pasadas. analisisejecucionvuelo2dielmoopenlidar Este algoritmo es la continuaci´on del algoritmo analisis de ejecuci´on del vuelo, y coge como entrada las salidas descritas en dicho algoritmo. Se ha decidido separar este proceso en dos fases debido a que la primera fase tiene un elevado coste computacional a tener que recorrer el 100 % de los datos, y si se produce un error en esta segunda fase no es necesario tener que repetir todo el proceso anterior. Como resultado se obtienen otros 4 ficheros vectoriales que describimos a continuaci´on: •´ Ambito total de la zona volada: Partiendo del fichero vectorial de la zona volada se disuelve para obtener un ´unico pol´ıgono con el ´area de la zona volada. •L´ıneas de vuelo: Partiendo del fichero vectorial de la zona volada se disuelve por el campo que almacena el c´odigo de l´ınea de vuelo para obtener un ´unico pol´ıgono por cada l´ınea de vuelo, donde se almacena su c´odigo, el n´umero de puntos contenidos en dicha l´ınea de vuelo, el ´area del pol´ıgono y la densidad media de puntos en la l´ınea de vuelo. •Zonas de solape: Partiendo del fichero de l´ıneas de vuelo, obtenemos un nuevo fichero vectorial con los solapes entre pasadas y generamos una nueva capa vectorial de pol´ıgonos con los recubrimientos transversales entre pasadas. En la tabla adjunta se almacena el c´odigo de las dos l´ıneas de vuelo que dan como resultado este solape, el porcentaje m´ınimo, m´aximo y medio de solape entre dichas pasadas. •Agujeros: Termina de generar este producto a partir del ´ambito total de la zona volada. 260 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ analisispreviodatosdielmoopenlidar Este algoritmo coge como entrada un listado de capas LiDAR y genera como salida un fichero vectorial de pol´ıgonos en formato shp que contiene un rect´angulo con la extensi´on geom´etrica de cada uno de los ficheros LiDAR de entrada. Adem´as, para cada pol´ıgono se a˜nade una tabla adjunta con la informaci´on de la ruta del fichero de entrada, densidad aproximada de puntos por metro cuadrado, n´umero total de puntos del fichero, ´area del rect´angulo generado y alturas m´axima y m´ınima dentro del fichero. Toda esta informaci´on se obtiene de la cabecera de los ficheros de entrada, por lo que se genera de forma muy r´apida y sirve para tener una primera idea de si est´an todos los datos. analisissolapedielmoopenlidar Partiendo del fichero de l´ıneas de vuelo, obtenemos un nuevo fichero vectorial con los solapes entre pasadas y generamos una nueva capa vectorial de pol´ıgonos con los recubrimientos transversales entre pasadas. En la tabla adjunta se almacena el c´odigo de las dos l´ıneas de vuelo que dan como resultado este solape, el porcentaje m´ınimo, m´aximo y medio de solape entre dichas pasadas precisionalturadielmoopenlidar Este algoritmo coge como entrada un listado de capas LiDAR, una capa vectorial en formato shp de puntos con las zonas de control, un desplegable para elegir el campo que tiene la informaci´on de la altura en el shp de puntos de entrada y un par´ametro num´erico con el radio (en metros) con el que vamos a buscar. Para cada punto de la capa de entrada busca entre todas las capas LiDAR los puntos que caen dentro del radio indicado como entrada (suponemos que los puntos de control se han tomado en zonas planas) y realiza un c´alculo estad´ıstico con el error medio y desviaci´on est´andar, comparando la altura del punto de control con los puntos LiDAR encontrados dentro del radio indicado. Posteriormente, hacemos una segunda selecci´on de puntos, eliminando los extremos que est´an fuera de una desviaci´on est´andar de la media (para eliminar puntos altos o bajos que nos a˜nadan un error a la medida). Internamente se llama al algoritmo de agrupar puntos, para agrupar aquellos puntos de control que pertenecen a las misma zona de control, de forma que se puedan hacer informes de precisi´on en altura por cada punto, por grupo o 261 7.5 IMPLEMENTACI ´ ON DE ALGORITMOS por el total de los puntos, por lo que tambi´en se a˜nade un campo con la identificaci´on de grupo en el SHP que se genera 262 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ CAP´ ITULO 8 Pruebas, resultados y rendimiento 8.1 Introducci´on Las pruebas de software, o testing consiste en los procesos que permiten verificar y revelar la calidad de un producto software. Son utilizadas para identificar posibles fallos de implementaci´on, calidad, o usabilidad de un programa de ordenador o videojuego. Es una fase en el desarrollo de software consistente en probar las aplicaciones construidas. Las pruebas de software se integran en las diferentes fases del ciclo del software en la Ingenier´ıa de software. De este modo se ejecuta un programa y mediante t´ecnicas experimentales se trata de descubrir errores que pueda tener. Para la determinaci´on del nivel de calidad se deben efectuar una serie de medidas o pruebas que permitan comprobar el grado de cumplimiento respecto de las especificaciones establecidas inicialmente del sistema. 263 8.1 INTRODUCCI ´ ON Edsger Dijkstra dijo: "El testing puede probar la presencia de errores pero no la ausencia de ellos" Para verificar productos complejos, de forma efectiva, el proceso de pruebas requiere de un proceso de investigaci´on, m´as que seguir un procedimiento al pie de la letra. Una definici´on de "testing"es: proceso de evaluaci´on de un producto desde un punto de vista cr´ıtico, donde el "tester"(persona que realiza las pruebas) somete el producto a una serie de acciones inquisitivas, y el producto responde con su comportamiento como reacci´on. Nunca se debe testear el software en un entorno de producci´on. Es necesario testear los nuevos programas en un entorno de pruebas separado f´ısicamente del de producci´on. Para crear un entorno de pruebas en una m´aquina independiente de la m´aquina de producci´on es necesario crear las mismas condiciones que en la m´aquina de producci´on. Existen a tal efecto varias herramientas vendidas por los mismos fabricantes de hardware. Esas utilidades reproducen autom´aticamente las bases de datos para simular un entorno de producci´on. Los inform´aticos distinguen, en general, entre errores de programaci´on ”bugs 2 defectos de forma. En un defecto de forma, el programa no realiza lo que el usuario espera. Por el contrario, un error de programaci´on puede describirse como un fallo en la sem´antica de un programa. ´ Este podr´ıa presentarse, o no, como un defecto de forma si se diesen ciertas condiciones de c´alculo. Una pr´actica habitual es que el proceso de pruebas de un programa sea realizado por un grupo independiente de "testers"al terminar su desarrollo y antes de sacarlo al mercado. Una pr´actica que viene siendo muy popular es distribuir de forma gratuita una versi´on no final del producto para que los propios consumidores sean los que la prueben. En ambos casos, a la versi´on del producto en pruebas y que es anterior a la versi´on final (o "master") se denomina beta, y a dicha fase de pruebas, beta testing. Puede adem´as existir una versi´on anterior en el proceso de desarrollo llamada alpha, en la que el programa, aunque incompleto, dispone de funcionalidad b´asica y puede ser testeado. 264 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ Es cada vez m´as habitual que se realice una fase de RTM (Release To Market) testing antes de salir al mercado , d´onde se comprueba cada funcionalidad del programa completo en entornos de producci´on. Otra pr´actica es que el proceso de pruebas se realice desde que empieza el desarrollo y contin´ue hasta que finaliza. En la cadena de valor del desarrollo de un software espec´ıfico, el proceso de prueba es clave a la hora de detectar errores o fallas. Conceptos como estabilidad, escalabilidad, eficiencia y seguridad se relacionan a la calidad de un producto bien desarrollado. Las aplicaciones de software han crecido en complejidad y tama˜no, y por consiguiente tambi´en en costos. Hoy en d´ıa es crucial verificar y evaluar la calidad de lo construido de modo de minimizar el costo de su reparaci´on. Mientras antes se detecte una falla, m´as barata es su correcci´on. El proceso de prueba es un proceso t´ecnico especializado de investigaci´on que requiere de profesionales altamente capacitados en lenguajes de desarrollo, m´etodos y t´ecnicas de pruebas y herramientas especializadas. El conocimiento que debe manejar un ingeniero de prueba es muchas veces superior al del desarrollador de software. 8.2 Pruebas de rendimiento Las herramientas incluidas en el plugin han sido testeadas desde el principio de la implementaci´on. Se han superado fallos por un mal entendimiento del problema, se han mejorado estrategias poco eficientes de b´usquedas de puntos en herramientas como el visualizador de perfiles longitudinales. Tambi´en se han buscado f´ormulas para una correcta gest´on de largos procesos de c´alculo, como en el caso de los convertidores de formatos .LAS a .XYZ y de .XYZ a .LAS. En este caso ha sido de vital importancia la utilizaci´on de una tarea en segundo plano para ejecutarlos. De no ser as´ı el hilo principal del programa habr´ıa quedado bloqueado no produci´endose ninguna respuesta hasta la finalizaci´on del proceso. Se ha sometido a una simple prueba de stress a la gr´afica longitudinal 265 8.2 PRUEBAS DE RENDIMIENTO obteniendo los siguientes resultados. Para la obtenci´on de los tiempos de ejecuci´on se han empleado c´odigo como este ... long t1 = System.currentTimeMillis(); //obtengo la IGeometry de la franja de seleccion y creo el objeto TransformaPuntos3D para trasladar y rotar puntos //arraylist de todas las capas lidar visibles en la vista ArrayList<FLyrVect> capasLidarVisibles = obtenerCapasLidarVisibles(); ArrayList<double[]> todosLosRows=new ArrayList<double[]>(); int total=0; for(int i=0;i<capasLidarVisibles.size();i++){ FLyrVect lyrVect= capasLidarVisibles.get(i); if(LiDARDriver.isLidarLayer(lyrVect)){ ArrayList<double[]> dat = getArrayPuntosFromGeom(geometry,lyrVect, i); todosLosRows.addAll(dat); total+= dat.size(); } } log.info(new String("Se han obtenido "+total+ "puntos para el perfil en "+t4+"= ms. ")); this.trans3d.setPuntos(todosLosRows); float[][] data=transformaPuntos(todosLosRows); capaSeleccionXZ = crearCapaAuxiliar(todosLosRows); ScatterPlotDialog panel2= new ScatterPlotDialog(565,400,data, trans3d, grosor, capaSeleccionXZ); long t2 = System.currentTimeMillis(); long t3 = t2-t1; log.info("Tarda "+t3+"= ms. en mostrar la grafica"); Puntos leidos Tiempo obtener puntos (ms) 616 248 98688 2196 178107 10983 1004241 48860 2004241 98860 616 248 Tabla 8.1: Tabla de tiempos de respuesta de la gr´afica. La prueba de stress ha puesto de manifiesto que se deber´ıa limitar de alguna manera el n´umero de puntos a poder visualizar. Porque se obtienen tiempos de respuesta no tolerables. Otra posible estrategia podr´ıa consistir en lanzar la tarea de c´alculo de la gr´afica, en segundo plano, para no bloquear el hilo principal de ejecuci´on de la aplicaci´on. En la herramienta de conversi´on de ficheros .LAS a .XYZ se han 266 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ obtenido los siguientes resultados: Puntos .LAS Tiempo convertirlos a .XYZ (ms) 22330853 24min40seg 42330853 44min10seg 92330853 127min24seg Tabla 8.2: Tabla de tiempos de respuesta de la gr´afica. Como la tabla pone de manifiesto, resulta un proceso costoso la escritura en ficheros de texto de los datos de los puntos LiDAR. En ocasiones esta herramienta se ha dejado convirtiendo ficheros tras concluir la jornada laboral para poder disponer de los datos al d´ıa siguiente. 267 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ CAP´ ITULO 9 Conclusiones 9.1 S´ıntesis del trabajo En este proyecto final de carrera se han logrado los objetivos marcados: se ha dasarrollado un software para la gesti´on de un proyecto de datos LiDAR en el sistema de informaci´on geogr´afica gvSIG. En algunos aspectos se han logrado alcanzar metas y objetivos por encima de los planificados como es el caso de las herramientas avanzadas de conversi´on de formatos LAS a XYZ y viceversa. Para un desarrollo de este tipo se requiere un an´alisis exhaustivo previo de gvSIG. Recabar informaci´on sobre SIG y gvSIG. Obtener y montar en Eclipse el c´odigo m´ınimo necesario para arrancar la aplicaci´on. Incorporar las extensiones oficiales que se consideren interesantes a˜nadi´endolas al workspace de Eclipse para adquirir funcionalidad complementaria. Obtener la documentaci´on necesaria para el desarrollo de plugins y extensiones sobre gvSIG. Documentarse sobre el desarrollo de nuevos tipos de documentos sobre gvSIG. Conocer los elementos de la interfaz de ´este SIG. Participar de herramientas de colaboraci´on como la lista de correo de desarrolladores de gvSIG y tambi´en de SEXTANTE. La asistencia a eventos tales como las 269 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ CAP´ ITULO 10 Anexos 10.1 Manual de usuario DielmoOpenLidar 277 Manual Usuario DielmoOpenLiDAR 2.0 Die lmoOpenL iDAR 2.0 para gvS IG 1.1 .2 Manua l de usuar io Fecha: 14/1/2010 © 2010 Dielmo 3D S.L. 1 Manual Usuario DielmoOpenLiDAR 2.0 Índice de contenido 1.- Introducción....................................................................................................................................3 2.- Driver para el acceso a datos LiDAR en gvSIG..............................................................................4 3.- Configuración de las preferencias...................................................................................................5 4.- Manejo de datos LiDAR en gvSIG.................................................................................................6 5.- Herramientas para la gestión de proyectos (el documento LiDAR).............................................13 6.- Más información, actualizaciones, actualizaciones y datos de muestra .......................................28 © 2010 Dielmo 3D S.L. 2 Manual Usuario DielmoOpenLiDAR 2.0 1.- Introducción 1.- Introducción Después de la adquisición de datos LiDAR, disponemos de una gran nube irregular de puntos XYZ. Después de la adquisición de datos LiDAR, disponemos de una gran nube irregular de puntos XYZ. Imaginemos al avión volando durante más de cuatro horas al día, midiendo 150.000 puntos por segundo, y para cada Imaginemos al avión volando durante más de cuatro horas al día, midiendo 150.000 puntos por segundo, y para cada uno de esos puntos se guardan las coordenadas XYZ del primer y último pulso, el valor de la intensidad de la señal que uno de esos puntos se guardan las coordenadas XYZ del primer y último pulso, el valor de la intensidad de la señal que vuelve hasta el sensor, el tiempo GPS, etc. vuelve hasta el sensor, el tiempo GPS, etc. Hace unos años había muy pocos datos LiDAR disponibles, limitándose a pequeños proyectos para zonas Hace unos años había muy pocos datos LiDAR disponibles, limitándose a pequeños proyectos para zonas inundables, etc., pero gracias al Plan Nacional de Ortofotografía Aérea (PNOA) habrá disponibles datos LiDAR de toda inundables, etc., pero gracias al Plan Nacional de Ortofotografía Aérea (PNOA) habrá disponibles datos LiDAR de toda España actualizados cada 4 años y toda esta información será libre para que cualquiera pueda acceder a ella. España actualizados cada 4 años y toda esta información será libre para que cualquiera pueda acceder a ella. La intención de este software es ir más allá de la visualización de los datos como se consiguió en la primera La intención de este software es ir más allá de la visualización de los datos como se consiguió en la primera versión del software DielmoOpenLiDAR 1.0., es decir, usar el driver realizado para trabajar en aplicaciones que versión del software DielmoOpenLiDAR 1.0., es decir, usar el driver realizado para trabajar en aplicaciones que realmente consiguen otros productos de salida como el control de calidad de la ejecución vuelos LiDAR financiada por realmente consiguen otros productos de salida como el control de calidad de la ejecución vuelos LiDAR financiada por el Instituto Geográfico Nacional de España. el Instituto Geográfico Nacional de España. Para ello DIELMO 3D S.L. aporta su experiencia investigadora en el ámbito de la teledetección, el desarrollo Para ello DIELMO 3D S.L. aporta su experiencia investigadora en el ámbito de la teledetección, el desarrollo de software para la generación y tratamiento de modelos digitales del terreno y para el procesado de datos LiDAR, de software para la generación y tratamiento de modelos digitales del terreno y para el procesado de datos LiDAR, además del conocimiento del mercado al ser uno de los principales proveedores de datos LiDAR en España y haber además del conocimiento del mercado al ser uno de los principales proveedores de datos LiDAR en España y haber trabajado en numerosos proyectos de adquisición y procesado de datos para diferentes aplicaciones. trabajado en numerosos proyectos de adquisición y procesado de datos para diferentes aplicaciones. A continuación se hace una descripción de la metodología y las herramientas que hemos planteado en el A continuación se hace una descripción de la metodología y las herramientas que hemos planteado en el desarrollo de este software libre llamado DielmoOpenLiDAR 2.0. desarrollo de este software libre llamado DielmoOpenLiDAR 2.0. © 2010 Dielmo 3D S.L. 3 Manual Usuario DielmoOpenLiDAR 2.0 2.- Driver para el acceso a datos LiDAR en gvSIG 2.- Driver para el acceso a datos LiDAR en gvSIG En 2008 DIELMO comenzó el desarrollo del software libre DielmoOpenLiDAR 1.0 con una fase inicial que En 2008 DIELMO comenzó el desarrollo del software libre DielmoOpenLiDAR 1.0 con una fase inicial que consiste en un driver para el acceso a datos LiDAR en gvSIG. Este driver es la base para el manejo de los datos en consiste en un driver para el acceso a datos LiDAR en gvSIG. Este driver es la base para el manejo de los datos en diferentes formatos estándar, de forma que se ha dotado a gvSIG con las herramientas básicas que permiten a los diferentes formatos estándar, de forma que se ha dotado a gvSIG con las herramientas básicas que permiten a los desarrolladores el trabajar con datos LIDAR de la forma más transparente y sencilla posible. Por otro lado, también se desarrolladores el trabajar con datos LIDAR de la forma más transparente y sencilla posible. Por otro lado, también se permite abrir datos LiDAR originales (LAS y BIN), visualizarlos superpuestos a cualquier otra información geográfica, permite abrir datos LiDAR originales (LAS y BIN), visualizarlos superpuestos a cualquier otra información geográfica, consultar los valores originales de cada uno de los puntos y editarlos, realizar un análisis visual de los datos y un control consultar los valores originales de cada uno de los puntos y editarlos, realizar un análisis visual de los datos y un control de calidad de los mismos. de calidad de los mismos. DielmoOpenLiDAR está pensado para manejar grandes volúmenes de datos LiDAR (cientos de GigaBytes) de una forma rápida y robusta. Para ello, no carga los datos en memoria y solamente pinta los datos necesarios en función de la escala de visualización. En concreto, hemos añadido a gvSIG las siguientes funcionalidades: •Driver para el acceso a los datos LiDAR en formato LAS y BIN para lectura y escritura. •Botones para aplicar simbología automática en función de la altura, intensidad, clasificación o color a todas las capas LiDAR disponibles en una vista de gvSIG. •Botón para volver a aplicar una leyenda por defecto a las capas LiDAR, de forma que cada una se pinte con un símbolo único aleatorio. © 2010 Dielmo 3D S.L. 4 Manual Usuario DielmoOpenLiDAR 2.0 3.- Configuración de las preferencias 3.- Configuración de las preferencias Para entrar en las preferencias hay que ir al menú ventana/preferencias o pulsar el botón correspondiente en la vista y luego seleccionar el apartado DielmoOpenLiDAR y nos aparecerá esta ventana: A la hora de visualizar los datos LiDAR en la vista, dependiendo de la escala de visualización los puntos se pintan con tamaños diferentes. Por ejemplo, cuando estamos muy lejos se pinta solamente un pixel por punto y cuando estamos muy cerca se pintan los puntos con un grosor mayor para que se visualicen mejor. El primer parámetro es el tamaño máximo del pixel que indica el grosor máximo que tendrán los puntos. Este parámetro es interesante a la hora de superponer los datos LiDAR con ortofotos, de forma que podamos ajustar el grosor para una mejor visualización. Por otro lado tenemos dos parámetros para configurar a donde hacer las peticiones de perfiles y descargas por región LiDAR. De manera que si conocemos de algún servicio que de esta posibilidad nosotros podríamos hacerle peticiones configurando estos parámetros. Además, si quisiéramos guardarnos en una ruta los datos que descargamos en las peticiones de descarga por región, tenemos un cuarto parámetro que indica la ruta donde descargar los datos. Podemos hacer uso de estas descargas una vez configurado todo desde el menú LiDAR->Descargar datos LiDAR y desde ahí elegir entre descargar perfiles o descargar por región. © 2010 Dielmo 3D S.L. 5 Manual Usuario DielmoOpenLiDAR 2.0 4.- Manejo de datos LiDAR en gvSIG 4.- Manejo de datos LiDAR en gvSIG Una vez instalada la extensión aparecerá un nuevo driver (gvSIG LiDAR driver) en la ventana de añadir capa por fichero, y es el que debemos seleccionar para abrir un fichero LiDAR en formato LAS o BIN. Al abrir un fichero LiDAR, éste se añade al TOC de la vista como si se tratara de una capa vectorial de puntos, aplicando un color aleatorio para cada capa. A continuación vemos como aparecen 4 ficheros LiDAR por defecto al abrirlos en gvSIG. © 2010 Dielmo 3D S.L. 6 Manual Usuario DielmoOpenLiDAR 2.0 El driver para la visualización de los datos LiDAR en gvSIG tiene una estrategia que permite dibujar, seleccionar e imprimir los millones de puntos que pueden existir en un fichero LiDAR. La estrategia contemplada sigue la idea de que según la resolución a la que el usuario este visualizando su capa LiDAR se dibujaran más o menos puntos, de forma que se aligeren las tareas de representación, teniendo en cuenta que se quieren manejar miles de millones de puntos a la vez. Por este motivo, hay que tener en cuenta que cuando el zoom está alejado es posible que no se estén pintando todos los puntos del fichero, y se puede considerar como una previsualización hasta que no nos acercamos los suficiente. Estos ficheros tienen una tabla asociada que en función del formato tendrá más o menos columnas y que contiene información asociada a cada punto como la altura, intensidad, clasificación, tiempo GPS, etc. Al comenzar la edición podemos cambiar los valores de esta tabla, pero no podremos modificar la estructura de la tabla al no permitirlo los formatos de este tipo de datos. © 2010 Dielmo 3D S.L. 7 Manual Usuario DielmoOpenLiDAR 2.0 Al abrir estos ficheros en la vista aparece esta nueva barra de botones que utilizaremos para cambiar de forma automática la simbología de las capas LiDAR que tengamos abiertas en la vista. A continuación pasamos a describir lo que hace cada uno de estos botones. Pinta los datos LiDAR en función de la altura. Al pinchar en este botón se realiza un cálculo estadístico de los valores de altura de los puntos que caen dentro de la vista. De esta forma, podemos ir ajustando la simbología para que se visualicen con más detalle las zonas que nos interesan. Esta simbología se aplica a todas las capas LiDAR disponibles en la vista, de forma que los datos se visualizan todos con la misma simbología y no se nota donde está el cambio de una capa a otra. Por ejemplo, a continuación vemos los mismos datos que en la figura anterior, pero después de haber pulsado este botón: © 2010 Dielmo 3D S.L. 8 Manual Usuario DielmoOpenLiDAR 2.0 desde la vista. desde la vista. •Vectoriales Vectoriales: Aquí se definen las capas vectoriales (en cualquiera de los formatos soportados por gvSIG) : Aquí se definen las capas vectoriales (en cualquiera de los formatos soportados por gvSIG) asociados a la zona de estudio. También se puede definir una leyenda por defecto para cada una de las capas asociados a la zona de estudio. También se puede definir una leyenda por defecto para cada una de las capas vectoriales, de forma que cuando se carguen automáticamente desde la vista lo hagan con dicha simbología. vectoriales, de forma que cuando se carguen automáticamente desde la vista lo hagan con dicha simbología. •Parámetros Parámetros: Corresponde con la imagen siguiente. Aquí se definen las rutas del área de interés (fichero shp de : Corresponde con la imagen siguiente. Aquí se definen las rutas del área de interés (fichero shp de polígonos) que define la zona a procesar. Los bloques (fichero shp de polígonos) en los que vamos a cortar los polígonos) que define la zona a procesar. Los bloques (fichero shp de polígonos) en los que vamos a cortar los datos para poder procesarlos de una forma más ágil (por ejemplo en bloques de 2x2 km). La ruta de salida datos para poder procesarlos de una forma más ágil (por ejemplo en bloques de 2x2 km). La ruta de salida donde se guardarán los resultados. La resolución con la que vamos a generar los productos de salida y el solape donde se guardarán los resultados. La resolución con la que vamos a generar los productos de salida y el solape que se dará a cada uno de los bloques a la hora de procesar los datos para conseguir una correcta unión entre que se dará a cada uno de los bloques a la hora de procesar los datos para conseguir una correcta unión entre bloques después de hacer el mosaicado de los productos finales. Este apartado también esta reservado para bloques después de hacer el mosaicado de los productos finales. Este apartado también esta reservado para futuros algoritmos y formas de trabajo, pero de momento se puede usar para definir el área de interés que nos futuros algoritmos y formas de trabajo, pero de momento se puede usar para definir el área de interés que nos facilita desde el cargador de capas el centrarnos la vista en nuestra zona de trabajo. facilita desde el cargador de capas el centrarnos la vista en nuestra zona de trabajo. © 2010 Dielmo 3D S.L. 15 Manual Usuario DielmoOpenLiDAR 2.0 • Clasificación Clasificación: Corresponde a la imagen de la figura siguiente. Aquí definiremos la tabla de clasificaciones que : Corresponde a la imagen de la figura siguiente. Aquí definiremos la tabla de clasificaciones que tendremos en cuenta a la hora de visualizar los datos clasificados y a la hora de interpretar los valores del tendremos en cuenta a la hora de visualizar los datos clasificados y a la hora de interpretar los valores del campo Clasificación en la tabla correspondiente a cada uno de los puntos. Esto sustituye a las leyendas que se campo Clasificación en la tabla correspondiente a cada uno de los puntos. Esto sustituye a las leyendas que se usaban en la fase 1 del desarrollo. Este panel nos permite cambiar el color con el que se pinta cada una de las usaban en la fase 1 del desarrollo. Este panel nos permite cambiar el color con el que se pinta cada una de las clases, cambiar el valor con el que se clasifica cada una de las 11 clases por defecto (definidas como estándar clases, cambiar el valor con el que se clasifica cada una de las 11 clases por defecto (definidas como estándar en el formato Las 1.1 y superiores), añadir nuevas clases y activar las que serán visibles o invisibles en la vista. en el formato Las 1.1 y superiores), añadir nuevas clases y activar las que serán visibles o invisibles en la vista. •Control de calidad Control de calidad: Este panel sirve para indicar la ruta de salida de los ficheros vectoriales resultado del : Este panel sirve para indicar la ruta de salida de los ficheros vectoriales resultado del control de calidad, para indicar cual es el campo que contiene el código de línea de vuelo en los ficheros control de calidad, para indicar cual es el campo que contiene el código de línea de vuelo en los ficheros LiDAR y definir la resolución de trabajo para el análisis de la ejecución del vuelo (se describirá más adelante). LiDAR y definir la resolución de trabajo para el análisis de la ejecución del vuelo (se describirá más adelante). © 2010 Dielmo 3D S.L. 16 Manual Usuario DielmoOpenLiDAR 2.0 •INFO INFO: Este panel se reserva para definir información adicional como el operador que está trabajando con los : Este panel se reserva para definir información adicional como el operador que está trabajando con los datos o la ruta del fichero log donde se irán guardando información de los procesos que se ejecuten. datos o la ruta del fichero log donde se irán guardando información de los procesos que se ejecuten. Al pulsar el botón de Aceptar, se recopila la información de las rutas de los ficheros en diferentes formatos Al pulsar el botón de Aceptar, se recopila la información de las rutas de los ficheros en diferentes formatos (LiDAR, vectoriales y raster) y la extensión geográfica que ocupa cada fichero de forma que esta información se pueda (LiDAR, vectoriales y raster) y la extensión geográfica que ocupa cada fichero de forma que esta información se pueda utilizar desde la vista cuando usemos la herramienta que carga capas de forma automática. utilizar desde la vista cuando usemos la herramienta que carga capas de forma automática. Una vez definidos los datos disponibles relacionados con el proyecto LiDAR, podemos volver a la vista y Una vez definidos los datos disponibles relacionados con el proyecto LiDAR, podemos volver a la vista y trabajar con los datos de una forma mucho más ágil. La nueva barra de herramientas LiDAR disponibles en la vista en trabajar con los datos de una forma mucho más ágil. La nueva barra de herramientas LiDAR disponibles en la vista en esta segunda fase del proyecto es: esta segunda fase del proyecto es: © 2010 Dielmo 3D S.L. 17 Manual Usuario DielmoOpenLiDAR 2.0 A continuación pasamos a describir los nuevos botones que no estaban en la fase 1. Cargador de capas automático Cargador de capas automático. Previamente, en la descripción de la fase 1 hemos visto como para cargar una . Previamente, en la descripción de la fase 1 hemos visto como para cargar una capa teníamos que pulsar el botón de añadir capa y buscar la ruta del fichero que queremos abrir. Este proceso parece capa teníamos que pulsar el botón de añadir capa y buscar la ruta del fichero que queremos abrir. Este proceso parece sencillo cuando estamos trabajando con poca información, pero no es trivial si tenemos en cuenta la cantidad de datos sencillo cuando estamos trabajando con poca información, pero no es trivial si tenemos en cuenta la cantidad de datos de la que vamos a disponer a nivel de toda España. En este caso, para encontrar entre todos esos ficheros el que cae de la que vamos a disponer a nivel de toda España. En este caso, para encontrar entre todos esos ficheros el que cae dentro de la zona que queremos visualizar o aunque lo supiéramos, solamente el buscar el nombre del fichero entre los dentro de la zona que queremos visualizar o aunque lo supiéramos, solamente el buscar el nombre del fichero entre los que tendremos en la misma carpeta sería un proceso muy lento. Por este motivo, la primera de las herramientas que se que tendremos en la misma carpeta sería un proceso muy lento. Por este motivo, la primera de las herramientas que se han añadido a la vista en esta fase 2 del proyecto consiste en este cargador de capas automático. Al pulsar este botón, se han añadido a la vista en esta fase 2 del proyecto consiste en este cargador de capas automático. Al pulsar este botón, se nos permite dibujar un rectángulo dentro de la vista y posteriormente se hace una búsqueda automática entre todos los nos permite dibujar un rectángulo dentro de la vista y posteriormente se hace una búsqueda automática entre todos los datos geográficos definidos previamente en el documento LiDAR, mostrando esta ventana para elegir el tipo de dato datos geográficos definidos previamente en el documento LiDAR, mostrando esta ventana para elegir el tipo de dato que queremos cargar: que queremos cargar: En la parte superior de la venta se indica el nombre del documento LiDAR activo, a partir del cual se cogerán En la parte superior de la venta se indica el nombre del documento LiDAR activo, a partir del cual se cogerán los datos geográficos. Si quisiéramos cambiar el documento LiDAR activo, podemos pulsar el botón “A” que se los datos geográficos. Si quisiéramos cambiar el documento LiDAR activo, podemos pulsar el botón “A” que se describirá en el siguiente punto. describirá en el siguiente punto. © 2010 Dielmo 3D S.L. 18 Manual Usuario DielmoOpenLiDAR 2.0 La ventana de selección de capas automática nos muestra un listado de todos los datos geográficos que están La ventana de selección de capas automática nos muestra un listado de todos los datos geográficos que están definidos en el documento LiDAR activo y que caen dentro del rectángulo que previamente hemos dibujado en la vista. definidos en el documento LiDAR activo y que caen dentro del rectángulo que previamente hemos dibujado en la vista. Podemos seleccionar uno o varios elementos, y al pulsar el botón Aceptar estos datos se añaden a la tabla de contenidos Podemos seleccionar uno o varios elementos, y al pulsar el botón Aceptar estos datos se añaden a la tabla de contenidos de la vista activa y se visualizan superpuestos al resto de información que hubiera disponible. de la vista activa y se visualizan superpuestos al resto de información que hubiera disponible. Selección del documento LiDAR activo Selección del documento LiDAR activo del cual se cogerán los datos de entrada/salida para cargar capas de del cual se cogerán los datos de entrada/salida para cargar capas de forma automática o para lanzar los algoritmos de cálculo. Este modo de trabajar permite definir diferentes documentos forma automática o para lanzar los algoritmos de cálculo. Este modo de trabajar permite definir diferentes documentos LiDAR a la vez en un mismo proyecto de gvSIG y es muy útil en el caso de trabajar con una serie temporal de datos de LiDAR a la vez en un mismo proyecto de gvSIG y es muy útil en el caso de trabajar con una serie temporal de datos de la misma zona. Por ejemplo, en el caso de Gipuzkoa hay disponibles datos LiDAR del año 2005 y del año 2008, los la misma zona. Por ejemplo, en el caso de Gipuzkoa hay disponibles datos LiDAR del año 2005 y del año 2008, los ficheros correspondientes a cada uno de los años podrían estar definidos en un documento LiDAR diferente, y desde la ficheros correspondientes a cada uno de los años podrían estar definidos en un documento LiDAR diferente, y desde la vista podríamos seleccionar de qué año queremos cargar las capas de forma automática, de forma que podamos estudiar vista podríamos seleccionar de qué año queremos cargar las capas de forma automática, de forma que podamos estudiar la evolución de la superficie terrestre. El documento LiDAR activo por defecto es el primero de la lista o el último que la evolución de la superficie terrestre. El documento LiDAR activo por defecto es el primero de la lista o el último que se ha utilizado. se ha utilizado. A continuación vemos la ventana que aparece al pulsar este botón para seleccionar el documento que A continuación vemos la ventana que aparece al pulsar este botón para seleccionar el documento que queremos activar: queremos activar: Selección por clasificación Selección por clasificación: Esta herramienta nos muestra una ventana con el listado de clases definido en el : Esta herramienta nos muestra una ventana con el listado de clases definido en el documento LiDAR activo y posteriormente parte de los puntos LiDAR que están seleccionados entre una o varias capas documento LiDAR activo y posteriormente parte de los puntos LiDAR que están seleccionados entre una o varias capas de la vista activa y realiza un filtro que restringe la selección solamente a los puntos que pertenecen a las clases de la vista activa y realiza un filtro que restringe la selección solamente a los puntos que pertenecen a las clases seleccionadas. seleccionadas. © 2010 Dielmo 3D S.L. 19 Manual Usuario DielmoOpenLiDAR 2.0 Establecer clasificación Establecer clasificación: Esta herramienta nos muestra la misma ventana que en el caso anterior con el listado : Esta herramienta nos muestra la misma ventana que en el caso anterior con el listado de clases definido en el documento LiDAR activo y posteriormente asigna la clasificación deseada a los puntos de clases definido en el documento LiDAR activo y posteriormente asigna la clasificación deseada a los puntos seleccionados entre una o varias capas de la vista activa. Esta herramienta solamente está activa cuando las capas seleccionados entre una o varias capas de la vista activa. Esta herramienta solamente está activa cuando las capas LiDAR están en edición y cuando el nivel de zoom es lo suficientemente alto como para pintar todos los puntos en la LiDAR están en edición y cuando el nivel de zoom es lo suficientemente alto como para pintar todos los puntos en la vista. vista. Perfil longitudinal Perfil longitudinal. Esta herramienta permite un análisis más profundo de los datos así como hacer . Esta herramienta permite un análisis más profundo de los datos así como hacer clasificaciones manuales o corregir las clasificaciones automáticas de los datos LiDAR, permitiendo realizar un clasificaciones manuales o corregir las clasificaciones automáticas de los datos LiDAR, permitiendo realizar un adecuado control de calidad de los datos. adecuado control de calidad de los datos. La herramienta se activa cuando hay alguna capa LiDAR en la vista y al pinchar este botón se nos permite La herramienta se activa cuando hay alguna capa LiDAR en la vista y al pinchar este botón se nos permite definir la región de datos LiDAR para los cuales queremos visualizar el perfil longitudinal. Para ello en primer lugar definir la región de datos LiDAR para los cuales queremos visualizar el perfil longitudinal. Para ello en primer lugar definiremos una línea pinchando sobre dos puntos en la vista, y posteriormente alejando el ratón de la línea y volviendo definiremos una línea pinchando sobre dos puntos en la vista, y posteriormente alejando el ratón de la línea y volviendo a pinchar sobre la vista, podremos definir la profundidad del perfil. a pinchar sobre la vista, podremos definir la profundidad del perfil. Una vez definida la zona, aparece esta ventana con el perfil longitudinal de los puntos que hemos seleccionado. Una vez definida la zona, aparece esta ventana con el perfil longitudinal de los puntos que hemos seleccionado. Por ejemplo, en la figura siguiente vemos un perfil longitudinal sobre dos edificios, y podemos identificar Por ejemplo, en la figura siguiente vemos un perfil longitudinal sobre dos edificios, y podemos identificar perfectamente los puntos que han caído en el tejado de los edificios, así como los puntos que son suelo y también perfectamente los puntos que han caído en el tejado de los edificios, así como los puntos que son suelo y también observamos unos puntos que son vegetación en medio de los dos edificios. observamos unos puntos que son vegetación en medio de los dos edificios. © 2010 Dielmo 3D S.L. 20 Manual Usuario DielmoOpenLiDAR 2.0 Dentro de la gráfica, los puntos se pintan en función de su clasificación según la tabla de clasificaciones Dentro de la gráfica, los puntos se pintan en función de su clasificación según la tabla de clasificaciones definida en el documento LiDAR activo. Si los puntos no estuvieran clasificados o no hubiera un documento LiDAR, definida en el documento LiDAR activo. Si los puntos no estuvieran clasificados o no hubiera un documento LiDAR, estos se pintarán en el color que se haya definido para la clase creado, nunca clasificado. En la figura siguiente vemos estos se pintarán en el color que se haya definido para la clase creado, nunca clasificado. En la figura siguiente vemos otro ejemplo de gráfica longitudinal sobre una línea eléctrica. En este caso todos los puntos salen del mismo color otro ejemplo de gráfica longitudinal sobre una línea eléctrica. En este caso todos los puntos salen del mismo color porque el fichero las no está clasificado. porque el fichero las no está clasificado. Sobre la gráfica solamente se pintan Sobre la gráfica solamente se pintan los puntos LiDAR que se estaban visualizando en la vista en el los puntos LiDAR que se estaban visualizando en la vista en el momento que se definió la región del perfil, por lo que hay que tener en cuenta dos cosas: momento que se definió la región del perfil, por lo que hay que tener en cuenta dos cosas: © 2010 Dielmo 3D S.L. 21 Manual Usuario DielmoOpenLiDAR 2.0 • •Si se define la región del perfil mientras se están pintando puntos en la vista, en la gráfica longitudinal Si se define la región del perfil mientras se están pintando puntos en la vista, en la gráfica longitudinal solamente aparecerán aquellos puntos que ya se habían pintado en la vista, y no los que se pinten solamente aparecerán aquellos puntos que ya se habían pintado en la vista, y no los que se pinten posteriormente. posteriormente. • •Como ya comentamos previamente, la estrategia del driver para la visualización de los datos LiDAR en gvSIG Como ya comentamos previamente, la estrategia del driver para la visualización de los datos LiDAR en gvSIG pinta menos puntos en la vista conforme vamos alejando el nivel de zoom, por lo tanto si hacemos un perfil pinta menos puntos en la vista conforme vamos alejando el nivel de zoom, por lo tanto si hacemos un perfil con un nivel de zoom alejado hay que tener en cuenta que no se están visualizando todos los puntos. con un nivel de zoom alejado hay que tener en cuenta que no se están visualizando todos los puntos. Dentro de la gráfica longitudinal tenemos una serie de herramientas que nos permiten analizar los datos de una Dentro de la gráfica longitudinal tenemos una serie de herramientas que nos permiten analizar los datos de una forma más ágil. A continuación pasamos a describir cada una de estas herramientas. forma más ágil. A continuación pasamos a describir cada una de estas herramientas. •Selección Selección: Permite definir sobre la gráfica longitudinal un polígono para seleccionar los puntos deseados. Una : Permite definir sobre la gráfica longitudinal un polígono para seleccionar los puntos deseados. Una vez definido el polígono, los puntos seleccionados se pintan en color naranja dentro del gráfico longitudinal y vez definido el polígono, los puntos seleccionados se pintan en color naranja dentro del gráfico longitudinal y los mismos puntos también quedan seleccionados en la vista. los mismos puntos también quedan seleccionados en la vista. •Zoom Zoom: Permite hacer un zoom dentro de la gráfica longitudinal para ver con más detalle los puntos deseados o : Permite hacer un zoom dentro de la gráfica longitudinal para ver con más detalle los puntos deseados o seleccionar con más precisión. Si pulsamos sobre la gráfica con el botón derecho del ratón volvemos al zoom seleccionar con más precisión. Si pulsamos sobre la gráfica con el botón derecho del ratón volvemos al zoom original. original. • Selección por clasificación Selección por clasificación: Después de hacer una selección en la gráfica, podemos usar esta : Después de hacer una selección en la gráfica, podemos usar esta herramienta para que partiendo de los puntos seleccionados, se restrinja solamente a las clases seleccionadas. herramienta para que partiendo de los puntos seleccionados, se restrinja solamente a las clases seleccionadas. Este botón es equivalente al de la vista que hemos descrito previamente. Este botón es equivalente al de la vista que hemos descrito previamente. • Establecer clasificación Establecer clasificación: Después de hacer una selección en la gráfica, podemos usar esta herramienta : Después de hacer una selección en la gráfica, podemos usar esta herramienta para asignar la clasificación deseada a los puntos seleccionados. Esta herramienta solamente está activa cuando para asignar la clasificación deseada a los puntos seleccionados. Esta herramienta solamente está activa cuando la capa LiDAR está en edición y cuando el nivel de zoom es lo suficientemente alto como para pintar todos los la capa LiDAR está en edición y cuando el nivel de zoom es lo suficientemente alto como para pintar todos los puntos en la vista). Este botón es equivalente al de la vista que hemos descrito previamente. puntos en la vista). Este botón es equivalente al de la vista que hemos descrito previamente. • Imprimir: Imprimir: Imprime la gráfica longitudinal en la impresora seleccionada. Imprime la gráfica longitudinal en la impresora seleccionada. • Guardar Guardar: Guarda la gráfica longitudinal en una imagen en formato png. : Guarda la gráfica longitudinal en una imagen en formato png. © 2010 Dielmo 3D S.L. 22 Manual Usuario DielmoOpenLiDAR 2.0 Algoritmos LiDAR Algoritmos LiDAR: Aquí tenemos un recopilatorio donde vamos añadiendo todos los algoritmos de análisis : Aquí tenemos un recopilatorio donde vamos añadiendo todos los algoritmos de análisis necesarios de los datos LiDAR. En la figura siguiente vemos los disponibles hasta el momento y a continuación necesarios de los datos LiDAR. En la figura siguiente vemos los disponibles hasta el momento y a continuación hacemos una breve descripción de cada uno de ellos. hacemos una breve descripción de cada uno de ellos. •Previsualizar datos Previsualizar datos. Se trata de tres algoritmos que permiten obtener una previsualización de la cabecera de . Se trata de tres algoritmos que permiten obtener una previsualización de la cabecera de cualquier fichero en formato LAS, BIN o XYZ. Por ejemplo, en la figura siguiente vemos la cabecera de un cualquier fichero en formato LAS, BIN o XYZ. Por ejemplo, en la figura siguiente vemos la cabecera de un fichero LAS, donde podemos observar entre otras muchas cosas, el número de puntos, los valores máximos y fichero LAS, donde podemos observar entre otras muchas cosas, el número de puntos, los valores máximos y mínimos de X, Y, Z, etc. mínimos de X, Y, Z, etc. © 2010 Dielmo 3D S.L. 23 Manual Usuario DielmoOpenLiDAR 2.0 •Control de calidad Control de calidad. Estos algoritmos se aplican a los datos LiDAR, obteniendo como resultado ficheros . Estos algoritmos se aplican a los datos LiDAR, obteniendo como resultado ficheros vectoriales con la información necesaria para que un técnico pueda determinar si la ejecución de los vuelos se vectoriales con la información necesaria para que un técnico pueda determinar si la ejecución de los vuelos se ha ejecutado en función de las especificaciones: ha ejecutado en función de las especificaciones: 1. Análisis previo de los datos Análisis previo de los datos. Este algoritmo coge como entrada un listado de capas LiDAR y genera . Este algoritmo coge como entrada un listado de capas LiDAR y genera como salida un fichero vectorial de polígonos en formato shp que contiene un rectángulo con la extensión como salida un fichero vectorial de polígonos en formato shp que contiene un rectángulo con la extensión geométrica de cada uno de los ficheros LiDAR de entrada. Además, para cada polígono se añade una tabla geométrica de cada uno de los ficheros LiDAR de entrada. Además, para cada polígono se añade una tabla adjunta con la información de la ruta del fichero de entrada, densidad aproximada de puntos por metro adjunta con la información de la ruta del fichero de entrada, densidad aproximada de puntos por metro cuadrado, número total de puntos del fichero, área del rectángulo generado y alturas máxima y mínima cuadrado, número total de puntos del fichero, área del rectángulo generado y alturas máxima y mínima dentro del fichero. Toda esta información se obtiene de la cabecera de los ficheros de entrada, por lo que dentro del fichero. Toda esta información se obtiene de la cabecera de los ficheros de entrada, por lo que se genera de forma muy rápida y sirve para tener una primera idea de si están todos los datos. se genera de forma muy rápida y sirve para tener una primera idea de si están todos los datos. © 2010 Dielmo 3D S.L. 24 Manual Usuario DielmoOpenLiDAR 2.0 does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. © 2010 Dielmo 3D S.L. 31 Manual Usuario DielmoOpenLiDAR 2.0 If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed © 2010 Dielmo 3D S.L. 32 Manual Usuario DielmoOpenLiDAR 2.0 through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY © 2010 Dielmo 3D S.L. 33 Manual Usuario DielmoOpenLiDAR 2.0 YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the program's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. © 2010 Dielmo 3D S.L. 34 Manual Usuario DielmoOpenLiDAR 2.0 <signature of Ty Coon>, 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. © 2010 Dielmo 3D S.L. 35 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ A. ACR´ ONIMOS 313 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ B. LICENCIA GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software–to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation’s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, 315 10.1 MANUAL DE USUARIO DIELMOOPENLIDAR and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author’s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors’reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone’s free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The ”Program”, below, refers to any such program or work, and a ”work based on the Program”means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term ”modification”.) Each licensee is addressed as 2 ou”. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program’s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate 316 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your 317 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ BIBLIOGRAF´ IA [1] distribuci´on de binarios y c´odigo de gvsig. Conseller´ıa de infraestructura y transporte (CIT). [2] Eclipse, descargas y manuales de eclipse. http://www.eclipse.org/. [3] Sextante, sistema extreme˜no de an´alisis territorial. http://forge.osor.eu/plugins/wiki/index.php?id=13type=g. [4] Terrascan, distribuci´on del software, manuales, tutoriales, etc, de terrascan. http://www.terrasolid.fi/. [5] Simon Bennet. An´alisis y dise˜no orientado a objetos de sistemas usando UML. McGraw-Hill/Interamericana de Espa˜na, 2003. [6] Dielmo 3D S.L. [online]. URL: http://www.dielmo.com/. [7] Oscar Garc´ıa Gonz´alez. Desarrollo de software libre para el manejo, visualizaci´on y an´alisis de datos lidar. Universidad de Valencia, 2009. [8] Portal gvSIG [online]. URL: http://www.gvsig.org/web/. [9] El Mahdi Haloui. Adaptaci´on del formato DWG 2004 a gvSIG. Universidad Polit´ecnica de Valencia, 2008. [10] The Java tutorials [online]. URL: http://download.oracle. com/javase/tutorial/. [11] JTS Topology Suite [online]. URL: http://www. vividsolutions.com/jts/JTSHome.htm. [12] Latex [online]. URL: http://en.wikibooks.org/wiki/LaTeX/. [13] LIDAR, informaci´on sobre esta tecnolog´ıa [online]. URL: http: //es.wikipedia.org/wiki/Lidar. [14] Henry Chang Lo Huang. Aplicaci´on para el aprendizaje de la Geograf´ıa con GVSIG. Universidad Polit´ecnica de Valencia, 2007. 325 BIBLIOGRAF´ IA [15] Open Geospatial Consortium [online]. URL: http://www. opengeospatial.org/. [16] Francisco Jos´e Pe˜narrubia. Manual para desarrolladores gvsig v1.1. http://www.gvsig.org/, 2010. [17] Aurelio V. Garc´ıa Rochera. Proyecto lidar en oliva. Universidad Polit´ecnica de Valencia, 2005. [18] John Wiley Sons. Advances in remote sensing and GIS analysis. Chichester, 1999. [19] Desarrollo Orientado a Objetos con UML [online]. URL: http: //www.clikear.com/manuales/uml/index.aspx. [20] Eustaquio Vercher G´omez. Desarrollo de un driver de lectura y un writer de escritura para gvSIG de los formatos de MapInfo y MicroStation. Universidad Polit´ecnica de Valencia, 2008. [21] Jose Vidal Salvador. Creaci´on de extensi´on para soporte a SLD en gvSIG. Universidad Polit´ecnica de Valencia, 2008. [22] World Wide Web Consortium W3C [online]. URL: http://www. w3.org/. [23] gvSIG, informaci´on acerca del proyecto. [online]. URL: http: //es.wikipedia.org/wiki/GvSIG. [24] SEXTANTE (SIG), informaci´on acerca del proyecto. [online]. URL: http://es.wikipedia.org/wiki/SEXTANTE_(SIG). [25] Jesus Zarzoso Mu˜noz. Edici´on de escenas 3D sobre OpenSceneGraph. Integraci´on en el Sistema de Informaci´on Geogr´afica gvSIG. Universidad Polit´ecnica de Valencia, 2008. 326 P.F.C. DANIEL L ´ OPEZ S ´ ANCHEZ C. AGRADECIMIENTOS A mis padres por haberme dado todo. Sin ellos no sera hoy quien soy. A Laura que me ha soportado y me ha animado en los momentos que flaqueaban las fuerzas para seguir adelante. A mi hermano y mi cu˜nada. A Dielmo 3D S.L. y Jose Carlos Garc´ıa por permitirme desarrollar este proyecto que me ha enriquecido tanto personalmente como laboralmente. A los compa˜neros de Dielmo Oscar´ın, JV, Aure, Cristina, Carlitos, Rub´en, Rosa ha sido un placer trabajar con vosotros. 327