Mapguide Open Source (cont)
Seguimos hablando en este post sobre mapguide, esta vez voy a profundizar un poco más en su arquitectura interna, así que seguramente el post será un poco más técnico. Pese a todo intentaré que sea lo más ameno posible
En la siguiente imagen se ve la arquitectura general de mapguide:
A grandes rasgos, está formado por 3 componentes: Visor web de cartografía, la capa web y el servicio de mapas.
Visor web
Existen dos visores implementados a dia de hoy, el primero es un visor AJAX, es decir lo que se conoce como DHTML o HTML dinámico, que al final no es más que HTML + Javascript. El misterio del famoso AJAX consiste en que el navegador realiza peticiones asíncronas (sin bloquearse hasta recibir respuesta) al servidor normalmente usando XML como formato de intercambio. En el fondo, el resultado de todo esto, es que todo el peso de ejecutar la aplicación ya no reside completamente en el servidor web como venía haciéndose hasta ahora con las páginas web dinámicas (ASP, PHP, JSP…).
Con AJAX, el navegador del usuario (cliente) realiza gran parte del trabajo y sólo se intercambia información con el servidor web cuando es necesario. Para los usuarios, esto se traduce en una notable mejora de la sensación que tiene el usuario cuando está ejecutando el visor en este caso o cualquier web implementada con esta técnica. La otra implicación importante, es que al estar íntegramente programado en HTML y javascript, no es necesario el uso de plugins adicionales como ActiveX, applets etc ya que todos los navegadores incorporan un motor javascript y son capaces de interpretarlo. Es por esto que el visor ajax funciona en prácticamente todos los navegadores actuales: IE6 y 7, Firefox, Chrome y Safari. Existe un segundo visor basado en el formato de Autodesk DWF (Design Web Format). Es un formato vectorial ligero creado con el fin de compartir los diseños CAD para revisión a través de la web. Es un formato liberado por Autodesk y que puede visualizarse en Internet Explorer a través de un ActiveX gratuito o mediante aplicaciones de escritorio gratuitas como Autodesk Design Review. El hecho de requerir un control ActiveX y por tanto estar limitado únicamente a Internet Explorer es uno de los motivos por los que no goza de muchos admiradores. En cambio si esto no supone un problema, se trata de un visor más rápido que el basado en AJAX y que vale la pena probar.
Web Server Extensions
Esta es la capa que hace de enlace entre el visor y el núcleo del servidor de mapas. Esta capa es realmente flexible y ello se refleja en las posibilidades que tiene el usuario a la hora de escoger como quiere servir sus mapas en internet. Podemos servir los mapas desde windows o linux, podemos servir las páginas web desde apache o IIS, podemos implementar nuestras aplicaciones en php, java o .net etc. Sus principales componentes son:
- Servidor web: En caso de escoger apache, el usuario podrá desplegar su geoportal en PHP o JAVA. En caso de escoger IIS, podrá desplegarlo en ASP.NET o en PHP. Desde aquí se servirán todas las páginas web, no sólo el visor de cartografía, sino también nuestros informes y formularios web.
- Agente: Se encarga de pasar las peticiones de la capa web al servicio de mapas. En definitiva, enlace el visor con el servidor de mapas en todo lo referente a operaciones con la cartografía: zoom, pan, selección etc.
- Finalmente y muy importante para los programadores, están los API de programación para poder desarrollar nuestras propias aplicaciones sobre mapguide. Se puede programar en PHP, JAVA y ASP.NET.
Servicio de mapas
Es la tercera capa y la de más bajo nivel. Esta capa es la que se encarga de acceder a la cartografía en última instancia a través de las librerías FDO. Estas librerías son las que permiten conectar a múltiples orígenes de datos de forma transparente para el usuario y es la misma tecnología de acceso a datos que usa AutoCAD Map desde su versión 2007. Seguramente dedicaré el próximo post a hablar de FDO exclusivamente, así que simplemente os podéis quedar con la idea de que es una capa de acceso a datos que permite acceder a múltiples orígenes de datos espaciales, tanto BBDD como en fichero. Se implementa a base de proveedores y es un proyecto Open Source independiente de mapguide. La lista de formatos a los que se puede acceder es muy importante:
- BBDD: MySQL, Sql Server, Oracle Spatial, Oracle XE, Informix, ODBC, Sql Server 2008 Spatial, PostGIS, ArcSDE.
- Fichero: Raster (todos los formatos habituales y algunos más), SHP, SDF, DGN, DEM.
- Servicios Web: WMS y WFS.
El servico de mapas está implementado a base de servicios, así pues hay un servicio encargado de generar los tiles, otro para renderizar una imagen del mapa, otro para generar un KML de la cartografía y exportar a google maps etc. El servicio de mapas gestiona la toda la información a través de una base de datos en XML libre (dbxml). Así pues, ahi se almacena las capas que tiene un mapa, los estilos de las capas etc. Todo se almacena en XML.
NOTA: Es interesante saber que el servidor de mapas puede estar en un servidor físico diferente de las extensiones web.
Otros componentes
Desde la versión 2009 comercial, es decir la 2.0 Open Source, se han integrado lo que se denominan Flexible Layout frente a los clásicos Basic Layout, que son un conjunto de plantillas y widgets que permiten crear un geoportal a base de widgets desde la herramienta de authoring. Para ello existen una serie widgets predefinidos que se pueden incorporar a nuestro geoportal de forma sencilla (Vista de pájaro, buffer, medición de distancias etc). A su vez, podemos escoger de entre varias plantillas prefefinidas con estilos y aspectos predefinidos o crear una desde cero con el aspecto visual que queramos darle a nuestra web. Fuinalmente vale la pena destacar que este trabajo lo está llevando a cabo la empresa estadounidense DMSolutions, especializada en este tipo de visores no sólo sobre mapguide, sino también sobre mapserver. En su página web podréis encontrar más información, la tecnología que permite esto se llama Fusion y se puede integrar tanto en mapguide como en mapserver.
Como creo que esto me ha quedado un poco técnico, en breve publicaré un post excusivamente con ejemplos que utilizan este servidor de mapas para que podáis ver el resultado que se puede obtener, pero una de las ideas principales es evitar que el usuario tenga que realizar configuraciones a bajo nivel, en este sentido las herramientas de authoring juega un papel muy importante.


4 de Marzo, 2009 - 2:58 am
Mis respetos Toni, creo que será muy educativo tenerte por aquí con post de este nivel.
Un saludo
4 de Marzo, 2009 - 4:59 pm
Muy interesante el post. Actualmente estoy trabajando con Mapguide y eché en falta en su momento un poco de base para saber por donde andar.
Estoy teneiendo muchos problemas para conectar mi servidor a diferentes origenes de datos, asi que espero ansioso tu post sobre FDO.
Saludos y animo.
4 de Marzo, 2009 - 11:03 pm
Hola Michogar,
Si tienes algún problema puntual con la conexión a datos igual te puedo echar una mano si me cuentas el problema.
5 de Marzo, 2009 - 6:15 pm
Ufff, no sabria por donde empezar, jejejej, la verdad es que algunas cosas son de expediente X, o eso, o que estoy todavia muy verde. De todas maneras gracias la semana que viene en las Jornadas de Girona, tengo un taller de Mapguide, a ver si abuso un poco del profesor y soluciono algo. De todas maneras estoy teniendo problemas al conectarme a fuentes de datos, MySQL, PostGIS, etc, estoy usando shp, de momento, pero no me valdrán en un futuro.
También tengo código que crea puntos en un shp y me funciona a la perfección, pero al realizar lo mismo con poligonos, nada de nada, ni siquiera un error. Ayer al crear de nuevo el featuresource ocn el mismo shp donde estaba trabajando, me aparecieron los poligonos que antes no veia, raro, raro. Me tiene un poco desesperado, pero a ver si poco a poco me voy centrando.
Saludos y gracias.
5 de Marzo, 2009 - 8:04 pm
Hola Toni,
increible, pero después de estar muchas horas dandole vueltas, mi jefe me ha hecho probar a crear el shp que utilizaba con ArcGIS, y ha funcionado, mientras que cuando creaba el shp con gvSIG, me daba problemas al crear el poligono con el mismo código. Voy a ver si lo comento en la lista de gvSIG y alguien puede saber que es lo que pasa.
Saludos y gracias.
8 de Marzo, 2009 - 1:04 pm
muy interesante post……esperaré a tus próximas entradas.
gracias
8 de Marzo, 2009 - 1:44 pm
Hola Michogar,
Cuando dices que tienes problemas para conectar a datos MySQL, como has creado esos datos? Me refiero al programa con el que has creado la base de datos espacial en MySQL.
Dependiedo de con qué herramienta edites los datos, deberías escoger tu bbdd espacial. Por ejemplo, si creas la BBDD con GvSIG, en ese caso te recomiendo que trabajes con PostGIS, ya que el conector de PostGIS para mapguide respeta la estructura típica de una bbdd postgis. Si editas desde AutoCAD Map, puedes utiizar cualquiera de las opciones que te brinda FDO, entre ellas MySQL que además te puedo decir que funciona bastante bien. Si editas desde herramientas de ESRI, te recomendaría ARCSDE sobre SQL Server u Oracle etc.
Como ves, no hay una respuesta mágica. Tienes que tener claro la herramienta con la que vas a editar, puesto que mapguide acepta muchas fuentes de datos, vas a estar más limitado por la herramienta de edición que por otra cosa.
Un saludo.
13 de Abril, 2009 - 10:47 am
Hola Toni, aqui sigo con Mapguide, y de nuevo atrancado. Al final conseguí conectarme a MySQL, y ya tengo my aplicación funcionando. Respecto a los archivos shp, lo raro era que si creabas el shp con gvSIG, daba problemas, mientras que con ArcGIS, estos no aparecian, por lo que daba la impresión de ser algún proceso en la creación de los shp desde gvSIG. De todas maneras ya lo tengo solucionado.
Ahora me encuentro con el siguiente problema: quiero que al cargar un mapa, solo me aparezcan los objetos que cumplan una condición que le paso como filtro. He conseguido hacer que me seleccione solo los objetos que cumplen esa condición, pero me no el cargarlos solo a ellos. He estado buscando ejemplos de código, pero no he encontrado nada que me ayude.
Muchas gracias, y animo con el blog.
16 de Abril, 2009 - 6:43 pm
michogar dijo:
Hola michogar,
Para no inundar la parte de comentarios del post te propongo que me envies por mail con algunos detalles como por ejemplo si todos los objetos que filtrar son de la misma capa. Mi dirección de correo aparece en el blog en acerca de….
3 de Mayo, 2009 - 9:13 pm
Estoy realizando unas pruebas con mapguide open source empleando una base de datos MySQL, pero apenas estoy comenzando en este tema, requiero un poco de orientación de por donde comenzar. Saludos,
4 de Mayo, 2009 - 10:10 pm
Hola Juan,
El primer paso una vez decidido que vas a usar mapguide como servidor y mysql como repositorio de datos espaciales, sería cargar los datos en mysql. Esto puedes hacerlo de muchas formas, si eres usuario de AutoCAD Map o Civil tienen una herramienta llamada “bulkcopy”. Si eres usuario de otro software de edición, tendrás que ver como cargar datos en mysql. Si tu software no lo permite y no quieres cambiarlo, deberías plantearte si mysql es la opción correcta. Una vez tengas la cartografía en la BBDD, el siguiente paso sería mediante la herramienta de autor (Mapguide Maestro) estilizar, tematizar,crear los mapas y publicarlos.
No quiero extenderme más aquí porque no es el lugar adecuado, como te he comentado podemos abrir un hilo en cartesia si quieres
Un saludo.
6 de Mayo, 2009 - 5:06 pm
hola necesito su ayuda por favor, estoy haciendo una aplicacion con mapserver y vi algunas caacteristicas que es parecido con mapguide pero no tengo idea de como hacer hacer mi conexion con mi base de datos de mysql me podrian ayudar por favor o mandarme algunos post estoy deseperada no se que hacer
saludos
7 de Mayo, 2009 - 2:48 pm
Hola Gaby,
En principio aunque algunas características sean comunes en ambos servidores de mapas, como por ejemplom puede ser la capacidad de conectarse por WMS, la forma en la que se crean son completamente diferentes. No soy un experto en mapserver, no obstante si quieres abrimos un hilo en el foro de cartesia donde plantees exactamente el problema que tienes y a ver si te podemos ayudar. Para crear un hilo sobre tu problema tienes que hacerlo aquí (tendrás que registrarte).
21 de Junio, 2009 - 10:09 pm
Toni, que tal he instalado mapguide open source en windows es muy fácil, pero en linux redhat 5 no lo he podido echar andar ya lo he instalado varias veces y no consigo ver el mapa de ejemplo desplegar, no se que este pasando o si me podrias proporcionar un manual para instalarlo correctamente, ya he leido la página oficial pero no he encontrado una solucion te agradeceria de ante mano tus consejo. gracias
20 de Julio, 2009 - 11:18 am
Hola Jose Luis,
Instalar mapguide en linux es bastante más complicado que sobre Windows, principalmente porque implica recompilar el código fuente de todos los componentes y como sabes cada distribución de linux va a su aire, con lo que siempre hay problemas de dependencias entre paquetes etc.
Yo he conseguido instalar sobre varias distribuciones, precisamente has hecho una buena elección con Red Hat 5, ya que es la que emplea Autodesk para sus pruebas y da pocos problemas comparado con el resto.
Te voy a recomendar dos enlaces, mi primera opción si lo que quieres es probar el producto es probar la versión enterprise sobre linux que puedes descargar de forma gratuita aquí:
http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=10301587
Esta versión se puede instalar sin problemas en RH5, ya que viene empaquetada por Autodesk directamente y de este modo puedes probar el servidor de mapas sin invertir mucho tiempo en instalaciones.
Si quieres compilar la versión open source, aquí tienes el enlace al wiki con los sistemas operativos que se han ido probando:
http://wiki.osgeo.org/wiki/Building_MapGuide_quick_starts_guides
(Lo más parecido a RH5 es Centos 5, que es prácticamente igual)
He de decirte que yo siempre he ido siguiendo la guía paso a paso y peleando con las dependencias una a una.
Un saludo.
18 de Febrero, 2010 - 6:17 pm
Hola
Estoy trabajando on Studio 2009 y mapguide open source 2.0.
Todo funciona, pero la respuesta a la peticion del mapa tarda como unos 2 minutos hasta que me presenta el mapa. Se pueden optimizar algunos parametros para que el servidor sea mas rapido?
Es urgente.Gracias.
21 de Febrero, 2010 - 5:53 pm
Hola Mafeca,
Esos tiempos de respuesta no son normales. Habría que ver en detalle la configuración de tu proyecto: Orígenes de datos que estás empleando, si la cartografía está optimizada etc.
Desde luego, no debería tardar tanto, no obstante sin tener detalles de tu configuración no puedo decirte mucho más.
Un saludo.