Mapas Industriales en Odoo

OpenLayers y D3 para la producción de una Aplicación con Mapas en Odoo

Ignacio Buioli
- 23/10/2018

 En esta oportunidad, les hablaremos de uno de nuestros proyectos más ambiciosos, GeoEcon, donde producimos una aplicación de Mapas Industriales (con datos de la Geografía Económica en América Latina) en el sistema de Odoo. La propuesta fue extender uno de nuestros anteriores proyectos, Mapas Industriales EU-LAC, ahora bajo la mirada de la Fundación Observatorio Pyme. El nuevo sistema tenía que comportarse como una App, traer más opciones de personalización de la interfaz para el usuario, optimizar todo lo posible las multicapas sobre el mapa (los datos geográficos pesan mucho), mejorar el sistema de reportes, mejorar el responsivo, tener un CMS por detrás que permita a los investigadores subir información de los documentos, mostrar datos del proyecto, tener un sistema privado para gestionar las tareas pendientes, entre otras cosas. Por nuestra experiencia, pensamos en Odoo para dicha labor.

Odoo como un CMS para mostrar Datos

Realmente Odoo como plataforma es muy completa a la hora de permitir crear un pequeño administrador para que un usuario o cliente complete los datos y los muestre en su Web. Los pedidos en GeoEcon fue poder mostrar la investigación realizada, la cual se encontraba en informes PDF. Los investigadores seguirían con dicha investigación, por lo cual necesitan que la plataforma permita actualizar documentos o subir nuevos. Para esto hicimos uso del módulo de slides de Odoo, haciendo sus correspondientes modificaciones (más que nada para mejorar las vistas). También se creó un template para una página de ayuda, que linkea ciertos documentos de los slides, a modo de información para un visitante. Para la gestión de tareas pendientes utilizamos el módulo de proyectos de Odoo, el cual modificamos levemente en lo visual, y tuvo tan buenos resultados que también se lo utilizó (y se utiliza) para reportar Bugs.


Vista de Proyecto de GeoEcon








Mapas en Odoo

Lo más interesante de todo, quizás porque el secreto es que no están hechos con Odoo, sino con tecnologías Web (JavaScript y muy poco PHP, de hecho es posible que dejemos de usar el PHP de la App). En el mismo servidor donde alojamos el Odoo, tenemos alojado un server Apache que tiene corriendo la App. En odoo simplemente la llamamos mediante una tag IFRAME y le mandamos datos a través del link. Utilizamos las librerías OpenLayers, para la construcción de los Mapas y su recorrido; D3 para el dibujo de SVG sobre el Mapa; jQuery para algunos detalles con AJAX (estamos en la tarea de eliminar esa librería porque ya prácticamente no la usamos) y algunas librerías menores que funcionan como dependencias. Nuestra idea a futuro es achicar el código lo más posible, por eso estamos tratando de prescindir de librerías innecesarias que ocupan más de lo que aportan y empezando a utilizar SCSS en lugar de CSS.

La información de cada Cluster (un Cluster es una agrupación de Shapes, corresponden a áreas políticas de nivel 1, 2 y 3) está almacenada en una base de datos, generada con R (de lo cual hablaremos en futuras entregas), y se almacenan como datos tipo GeoJSON. El sistema de GeoJSON es sumamente interesante para el trabajo de mapas, y nos encontramos actualmente en la tarea de mejorar el rendimiento y la optimización ya que los SVG se dibujan en relación a la cantidad de datos, y esta cantidad permite producir mapas con más o menos definición.


Demo de GeoEcon












La Web en Cuestión es la Siguiente: www.geoecon.io


Actualmente nos encontramos con vistas a una actualización, y nuestro paso siguiente es migrar toda la plataforma de la App a Angular y que funcione directamente dentro de Odoo (incluso pudiendo traer datos del propio sistema de Odoo). Ampliaremos!