• No se han encontrado resultados

Tecnologías y herramientas para el desarrollo del módulo

Comenzando por los servidores de mapas, a la hora de elegir el servidor de mapas apropiado, es posible encontrarse con varias alternativas, ya sean comerciales o gratuitos. El MS4W en su versión 2.3.0, es un paquete que fue creado para facilitar la utilización e instalación del programa MapServer para cualquier nivel de usuarios para

35

ambiente Windows, el paquete consta de varios componentes de los cuales solo se mencionan los de utilización en la presente investigación:

MapServer CGI. El MapServer es otro framework5 de código abierto que permite la creación de aplicaciones para la manipulación de datos geográficos (Kropla, 2005). Fue construida utilizando el lenguaje C. Posibilita la creación de imágenes de mapas a partir de diferentes fuentes de datos geo-espaciales (e.g., Shapefiles de ESRI ArcGIS), vectoriales o ráster.

MapServer puede operar en dos modos distintos, concretamente en modo CGI o

MapScript. Cuando está siendo utilizado en modo CGI, funciona como un servidor Web que procesa pedidos provenientes de los clientes y produce las imágenes de los mapas deseados con muy buena calidad. Esta es la forma más simple de usar el framework. En modo MapScript, MapServer funciona como una API accesible a partir de lenguajes de programación tales como: Perl, Python, PHP, Ruby o Java. Posibilita de este modo la creación de aplicaciones SIG complejas, a partir de estos lenguajes. Soporta proyecciones on-the-fly, para la generación de mapas de forma dinámica.

Licencia. MapServer se distribuye con la licencia de la Universidad de Minnesota, la cual le da libertad al usuario de utilizar, copiar y distribuir sin ninguna limitación, el software no incluye garantía.

Entrada de datos soportada. ESRI Shapefiles, postGIS, OGR, MapInfo, WFS, GML, Virtual Spatial Data, ArcInfo, ArcSDE, DGN, S57, ESRI Personal Geodatabase, KML, Oracle Spatial, MySQL, NTF, SDTS, USGS TIGER, GPS Exchange Format. TIFF/GeoTIFF, GIF, PNG, JPEG, Erdas.LAN/.GIS, GDAL. Salida de Mapas soportadas.GIF, JPEG, JPEG24, PNG, PNG24, WBMP, SWF, SVG, PDF.

Lenguajes de Programación. PHP, Python, Perl, Ruby, Java y .NET.

5En el desarrollo de software, un framework es una estructura conceptual y tecnológica de soporte

definida, normalmente con artefactos o módulos de software concretos, con base en la cual otro proyecto de software puede ser organizado y desarrollado.

36

Interoperabilidades implementadas. WMS, WMS Time, WFS no transactional, WMC, WCS, WFS Filter.

Existen otros servidores de mapas de con muy buen desempeño para la implementación de sistemas de información geográfica en Web. Tal es el caso de Geoserver, que es un servidor de código abierto desarrollado en Java, lo que le hace ser multiplataforma, que permite a los usuarios compartir y editar datos geoespaciales (Fitzke, 2004). Diseñado para la interoperabilidad, publica datos de cualquier fuente de datos espaciales con estándares abiertos. Está desarrollado sobre la base Geotools, una biblioteca de SIG. Las razones por las cuales el servidor de mapas MapServer es el escogido para implementar el módulo de tematización son descritas a continuación:

 Soporte para mostrar y consultar cientos de formatos ráster, vector y bases de datos.

 Ejecución en varios SO's (Windows, Linux, Mac OS X, etc).  Proyecciones on-the-fly (dinámicas).

 Soporte de lenguajes de scripting y entornos de desarrollo (PHP,Python, Perl, Ruby, Java, .NET)

 Dibujos de alta calidad.

 Soporte nativo de las tematizaciones a ser utilizadas haciendo de este un sistema fuerte para la cartografía.

WMS. Una de las normas definidas por la OGC es la Web Map Service (WMS) (Beaujardiere, 2006). Esta norma define una interfaz Web para un servicio basado en pedidos HTTP capaz de producir dinámicamente mapas a partir de información geográfica. Normalmente, los mapas producidos por un WMS son producidos en formatos pictóricos tales como Portable Network Graphics (PNG), o Graphics Interchange Format (GIF) o el formato propuesto por el comité Joint Photographic Experts Group (JPEG). Utilizando formatos de imagen que soporten transparencia (ejemplo con el formato PNG) es posible efectuar la sobreposición de mapas, los cuales pueden ser obtenidos a partir de diferentes servidores que soporten WMS, con el objetivo de crear mapas más complejos. Para tal propósito, es necesario que los mapas a sobreponer obedezcan a determinados requisitos, tales como la equidad de dimensiones y parámetros geográficos. La norma WMS posibilita también la generación de mapas en

37

formatos vectoriales, tales como Scalable Vector Graphics (SVG) o Web Computer Graphics Metafile (CGM).

La información contenida en los mapas, accesibles a través de un WMS, está normalmente organizada en diferentes capas. Estas capas son caracterizadas por un identificador, normalmente relacionados con su contenido. De este modo, en un pedido WMS de obtención de un mapa, son pedidas capas utilizando sus identificadores. Las diferentes capas pueden ser creadas por diferentes estilos ofrecidos por el servicio WMS, obteniéndose de este modo una visualización más explícita y adecuada. Por estilo entiéndase toda la forma de presentación visual de la información (e.g., tipos de letra, espesura de las líneas, etc.) asociada al mapa.

La norma WMS define tres operaciones elementales:

1. GetCapabilities: El objetivo de esta operación es obtener información (service metadata) sobre las capacidades del servicio WMS al cual el pedido fue efectuado. El servicio responde a esta operación devolviendo un documento XML conteniendo información sobre su capacidad.

2. GetMap: Esta operación devuelve un mapa con dimensionamiento e información geográfica definidos a través de los parámetros especificados cuando es invocado.

3. GetFeatureInfo: GetFeatureInfo es una operación opcional que devuelve información acerca de un determinado punto en un mapa obtenido a través de la operación GetMap. Siendo el WMS un protocolo sin estado, es necesario incluir en los parámetros de la operación GetFeatureInfo gran parte de los parámetros incluidos en la operación original GetMap para que un servidor tenga conocimientos del mapa acerca de cuál la información es pedida. También es necesario indicar las coordenadas del punto, en la imagen obtenida, sobre la cual se pretende obtener información.

OpenLayers. Este visualizador Web es principalmente una API, una biblioteca de funciones para manejar la navegación de mapas en la Web y como tal no está pensada para ofrecer una GUI. Sin embargo nos proporciona también unos cuantos objetos muy útiles para la interacción del usuario con el mapa.

38

PostgreSQL ofrece una potencia adicional sustancial al incorporar los siguientes cuatro conceptos adicionales básicos en una vía en la que los usuarios pueden extender fácilmente el sistema, clases, herencia, tipos, funciones(Lockhart, 1996). Otras características aportan potencia y flexibilidad adicional: Restricciones, Disparadores, Reglas, Integridad transaccional.

Estas características colocan al mencionado gestor en la categoría de las Bases de Datos identificadas como objeto-relacionales. Nótese que éstas son diferentes de las referidas como orientadas a objetos, que en general no son bien aprovechables para soportar lenguajes de Bases de Datos relacionales tradicionales. PostgreSQL tiene algunas características que son propias del mundo de las bases de datos orientadas a objetos. De hecho, algunas Bases de Datos comerciales han incorporado recientemente características en las que este fue pionera.

PostGIS: Es una extensión al sistema de base de datos objeto-relacional PostgreSQL. Permite el uso de objetos SIG. Esta extensión incluye soporte para índices GiST basados en R-Tree, y funciones básicas para el análisis de objetos GIS. Está creado por

Refractions Research Inc, como un proyecto de investigación de tecnologías de bases de datos espaciales. Está publicado bajo licencia GNU. Con PostGIS es posible usar todos los objetos que aparecen en la especificación OpenGIS como puntos, líneas, polígonos, multilíneas, multipuntos, y colecciones geométricas.

Google Web Toolkit (GWT). Es un framework, o una herramienta como cataloga (Kereki, 2010), de desarrollo en Java de código abierto, que te permite escapar de la “matriz” de tecnologías usadas actualmente para escribir aplicaciones AJAX, las cuales son difíciles de manejar y propensas a errores. Con GWT, puedes desarrollar y depurar aplicaciones AJAX usando el lenguaje de programación Java en el entorno de desarrollo de tu preferencia. Cuando se ha terminado la aplicación (escrita en Java), GWT compila y traduce dicho programa a JavaScript y HTML compatible con cualquier navegador Web.

Patrón Model-View-Presenter (MVP).La descomposición del concepto de Model- View-Controler (MVC) formaliza la separación del Modelo de la Vista-Controlador y refinándolo ayuda a los programadores a desarrollar aplicaciones complejas. Lo anteriormente planteado hace que el Controlador pueda ser referido como Presentador.

39

El patrón MVP separa el modelo del dominio, la presentación y las acciones basadas en la interacción con el usuario en tres clases separadas. La Vista le delega a su Presentador toda la responsabilidad del manejo de los eventos del usuario. El Presentador se encarga de actualizar el Modelo cuando surge un evento en la Vista, pero también es responsable de actualizar a la Vista cuando el Modelo le indica que ha cambiado. El Modelo no conoce la existencia del Presentador. Por lo tanto, si el Modelo cambia por acción de algún otro componente que no sea el Presentador, debe disparar un evento para que este se entere.

Las aplicaciones cliente/servidor determinan cuál de los conceptos abstractos MVP se implementan completa o parcialmente sobre el cliente o el servidor. Lo más tradicional sería hacer la descomposición en factores del Presentador, ver figura 2.2.El Modelo en todo su conjunto representa la funcionalidad del lado del servidor. La Vista representa la típica parte del cliente. El Presentador queda incrustado sobre los límites del cliente y el servidor. El código del Presentador aparece en ambas partes representando un simple Presentador conceptual. La mayor parte del código del Presentador podría estar sobre el cliente llamándose “fat client” o de manera inversa, la mayor parte del código del Presentador podría estar sobre el servidor, con solamente la aplicación de GUI sobre el cliente, denominándose este enfoque como “thin GUI”. La naturaleza de la división condiciona a que el desarrollador elija que protocolo usar al para la comunicación cliente servidor (Potel, 1996). Uno de los protocolos más utilizados para la comunicación entre el cliente y el servidor es Remote Procedure Call (RPC).

40

Figura 2.2. Patrón Modelo Vista Presentador para aplicaciones Cliente/Servidor según (Potel, 1996).

GWTP. Es una colección de componentes que se acumulan para formar una arquitectura basadas en las mejores prácticas de GWT descritas por (Ryan, 2009). Esto garantiza que el compilador de GWT optimice el código para asegurarse de que sólo las características que realmente necesita la aplicación son parte de su código final.

En el corazón de GWTP está la arquitectura de Modelo-Vista-Presentador (MVP). Aunque este modelo ha sido reconocido como uno de los mejores enfoques para el desarrollo de GWT, todavía es difícil encontrar una solución que soporte todos los requisitos de las aplicaciones Web modernas. GWTP tiene como objetivo proporcionar una solución que aglomere la mayoría de los requisitos demandados por estas aplicaciones.

GWTP tiene características que ofrece un fácil uso de la arquitectura MVP sin sacrificar las mejores características de GWT. Estas características son:

 La inyección de dependencia a través de Gin y Guice.  Simple, pero poderoso mecanismo de gestión del historial.  Soporte de presentadores anidados.

41  Fácil y eficiente separación de código.

 Utilizar los procesadores de anotación para generar eventos, acciones y respuestas, y Data Transfered Object (DTO).

 Integra patrón Commad en los procedimientos remotos.

Otro aspecto por el cual GWTP tiene muy buena referencia es porque utiliza el bus de eventos de una manera clara y eficiente. Los eventos se utilizan para comunicar los objetos débilmente relacionados, mientras que la invocación de métodos directos se utiliza para aclarar el flujo del programa entre los componentes fuertemente acoplados. El resultado de desarrollar con GWTP es una aplicación que es fácil de entender y que puede crecer con el tiempo.

SmartGWT. Es un API que permite usar desde Google Web Toolkit la librería Ajax SmartClient. Los widgets que lo integran son muy llamativos y van desde un Calendar tipo Google Calendar, animaciones, representaciones de árboles hasta componentes no visuales que auxilian a conectar tus aplicaciones con el servidor, por ejemplo, un datasource para servicios REST o uno para usar los servicios JSON de Yahoo! (Jivan, 2008).

Este producto se distribuye en dos versiones: uno open source bajo la licencia LGPL 3.0 y otro empresarial de pago. Las versiones empresariales se distinguen de la abierta en que incluyen un componente Java para el lado del servidor que permite una integración sencilla con tecnologías como Hibernate o Spring, además de incluir un plug-in para IDEs que permite construir las interfaces de forma gráfica. Para la implementación del módulo de tematización SmartGWT constituye una opción factible ante el costo de la licencia de GWT-Ext, que es muy utilizado para la implementación de SIG en Web. Eclipse. Es un ambiente de desarrollo integrado y un sistema extensible de plug-in. Está escrito en Java mayormente y puede ser utilizado para desarrollar aplicaciones en Java y otros lenguajes de programación como Ada, C, C++, COBOL, Perl, PHP, Python, R, Ruby entre muchos otros. Eclipse es liberado bajo los términos de Eclipse Public License, siendo software libre y código abierto

42

Categoría Nombre Versión

SGBD PostgreSQL 8.4.1

Extensión de para Datos Geográficos

PostGIS84 1.4.0

Servidor de mapas MapServer 4.4.2

OGC Web Service WMS -

Servidor de aplicaciones Apache Tomcat 6.0.26

Framework de desarrollo GWT 2.1.0

Bibliotecas de Widgets SmartGWT 2.2

Visualizador Web Geográfico

OpenLayers 2.8

Plataforma de desarrollo JDK 1.6.20

Lenguaje de desarrollo Java 1.6.0

IDE de desarrollo Eclipse 3.5 Galileo

Tabla 2.1 Tecnologías y herramientas utilizadas para el desarrollo de SIGSEC Módulo de Tematización.

Es muy importante dentro del debate sobre las tecnologías utilizadas por el módulo de tematización, analizar el papel tan fundamental que posee el MapFile como archivo donde el servidor de mapas MapServer obtiene todos los datos para la representación de los mapas. Esta relación e importancia es discutida en siguiente epígrafe.

Documento similar