Aplicación SIG de gestión de plagas y salud ambiental

Aplicación SIG de gestión de plagas y salud ambiental

 

Hace unos meses nos contactó CTL Salud Ambiental, una empresa dedicada al control de plagas y la salud ambiental, con un número de empleados de 80 personas aproximadamente, y más de 35 años de experiencia, para desarrollar un conjunto de aplicaciones que incorporaran un Sistema de Información Geográfica. En concreto, sus necesidades pasaban por el desarrollo de una aplicación web y una aplicación móvil, ambas interconectadas con su actual sistema de control de partes y de gestión de sus clientes.

Con estas aplicaciones, lo que quieren conseguir es agilizar y estandarizar el trabajo en campo, así como disponer de una plataforma para que sus clientes puedan acceder a los trabajos realizados en sus instalaciones.

Desde la aplicación móvil, diseñada para tablets Android, puede cumplimentar partes de trabajo de los siguientes tipos:

  • Tratamiento contra roedores, cucarachas, pulgas, chinches…y plagas en general.
  • Control de fauna silvestre
  • Control de vectores voladores, como mosquitos o moscas.
  • Tratamientos fitosanitarios.
  • Calidad del aire interior.
  • Tratamiento de maderas.
  • Legionela.

 

Vamos a ordenar el proyecto en los siguientes puntos para poder ver con total transparencia todos los pasos que se dieron desde las reuniones iniciales con el cliente, hasta la consecución final del proyecto.

      1. Necesidades del cliente.
      2. Solución planteada.
      3. Características del hardware / software del proyecto.
      4. Funcionalidades de la aplicación web.
      5. Funcionalidades de la aplicación móvil.
      6. Comunicación con el Software ERP del cliente.

 

1.- Necesidades del cliente.

 

Cuando acudimos a la primera reunión, el cliente disponía ya de un Sistema de Información Geográfica desarrollado por su propio departamento de informática. Era un producto funcional, pero algo básico y prácticamente sin conexión con su ERP, y a todas luces se quedaba corto para lo que ellos tenían en mente, que era agilizar la toma de datos y la comunicación con sus clientes. Básicamente ese era el punto de partida, incorporar lo que ya tenían,  y ampliarlo con nuevas funcionalidades.

Ya que es una empresa con clientes, tanto de tipo privado, como entidades públicas (ayuntamientos principalmente), las aplicaciones a desarrollar, debían adaptarse a cualquier tipo de clientes, y también debía gestionar todos los servicios que ofrece la empresa, y que hemos enumerado inicialmente, con lo cual, debía de ser una herramienta muy versátil.

Además, todos los técnicos aplicadores debían disponer de una aplicación móvil, con un sistema de información geográfica (SIG) incorporado y que permitiera incorporar todos los tipos de partes, cartografía y planos, conectándose a su servidor en tiempo real y pudiendo trabajar con los datos y partes con conexión o sin conexión a internet.

Todo ello comunicado con su ERP, y desarrollar una serie de servicios capaces de enviar y recoger toda la información captada por los técnicos y que se vea reflejada en su propia herramienta de gestión, además de poder visualizarse en la aplicación SIG web desarrollada, con acceso privativo también para sus clientes, de modo que con sus propias credenciales, los clientes de esta empresa, pueden acceder a sus propios partes y visualizar en mapas y planos las actuaciones realizadas.

 

2.- Solución planteada.

 

La arquitectura de componentes planteada sigue el siguiente esquema visual, presentado al cliente para que vean a vista de pájaro los componentes del proyecto y la relación entre ellos.

Con todo esto encima de la mesa, había que plantear una solución con 3 patas, básicamente:

Esquema de distribución de componentes de software.

      1. Aplicación web: con un Sistema de Información Geográfica incorporado capaz de visualizar y consultar los datos de los clientes, instalaciones y partes, tanto con buscadores alfanuméricos, así como consultas directamente en los mapas y planos incorporados.

A través de distintos roles de acceso, tanto aplicadores, como clientes puede acceder a información reservada para ellos, compartimentando así la información.

      1. Aplicación móvil: también con componentes de información geográfica, donde el técnico introduce sus credenciales, y se descarga los partes de trabajo que tiene asignados, incluída la cartografía y planos vinculados a cada parte de trabajo. En esta aplicación puede introducir los datos de cada parte de trabajo, ubicar trampas o elementos en los planos y mapas, tomar fotografías, etc…
      2. Scripts de servidor: preparados en el servidor para manejar y generar toda la información, tanto para enviarla a las tablets, como para recogerlas y enviarlas al ERP. Esta parte es vital para proveer de información a todos los componentes, aunque algo totalmente invisible para el cliente.

 

3.- Características del hardware / software del proyecto.

 

Nosotros, desde Avantgeo, siempre que se nos plantea un proyecto, ya sea dentro de los Sistemas de Información Geográfica, como proyectos de otras características,  básicamente lo diseñamos desde cero, es decir, cada proyecto es diseñado y ejecutado para un cliente en específico.

Otra decisión que tomamos es desarrollar todos nuestros proyectos con Software Libre. Es cierto que existe software privativo muy bueno, pero también es cierto que en el mundo del desarrollo, y sobre todo en el tema de desarrollo de Sistemas de Información Geográfica, bases de datos espaciales, etc… existe software libre de probada calidad, eficiencia y robustez, y en su día tomamos la decisión de desarrollar productos de esta forma.

En términos generales, cuando abordamos un proyecto, necesitamos conocer, tanto el tipo de información y cantidad de datos que maneja el cliente, como la cantidad de personas que van a conectarse a las aplicaciones y su concurrencia.

Esto es vital a la hora de dimensionar el hardware donde va a estar alojado el proyecto, por motivos evidentes. Si nos quedamos cortos en la(s) máquinas que alojan el proyecto, no van a poder dar abasto con la cantidad de peticiones y colapsará a la primera de cambio. Esto se traduce en que las respuestas son lentas, que los servicios instalados en el servidor se paran… En definitiva, por muy bien programado que esté un producto, si la máquina no es la adecuada, tendremos una mala experiencia.

Siempre optamos por servidores Linux, por el rendimiento y la estabilidad que ofrecen, independientemente del pago de licencias. A mismo hardware, son mucho más eficientes que sistemas operativos de servidor como puede ser Windows Server.

Por otro lado, en cuanto a la elección de lenguajes de programación, es vital también conocer la cantidad y tipo de datos, concurrencia de conexiones por parte de los usuarios de las aplicaciones. Cada lenguaje tiene sus puntos fuertes y débiles, y conocerlos es fundamental para aplicar uno u otro, incluso, como en este caso, aplicar varios de ellos dependiendo de la funcionalidad que va a servir.

En este caso tenemos información de tipo alfanumérico, pero también información mucho más pesada que necesita de cierta agilidad y asincronía para generarla y servirla, como pueden ser los mapas generados en tiempo real, o bien los planos.

Las características técnicas del servidor son las siguientes:

Sistema Operativo Ubuntu 64 bits

Intel Xeon Silver 2,1 GHz. 2 cores. 4 Gb RAM. 150 GB HD.

Los lenguajes y frameworks de programación empleados son los siguientes:

Los componentes principales que van a estar instalados en el servidor GIS (Ubuntu Server), serán: Geoserver (Apache Tomcat), PostgreSQL / PostGIS, Servidor web Apache, Servidor web Node.js, y Python.

Geoserver: servidor de mapas en java que funciona bajo Apache Tomcat.

PostgreSQL + PostGIS: sistema de base de datos relacional orientado a objetos y de código abierto. Soporta extensiones espaciales (PostGIS).

Leaflet: framework de desarrollo de mapas en formato web basado en javascript.

Node.js: entorno de ejecución multiplataforma para la capa de servidor. Es asíncrono y está orientado a eventos, basado en el motor v8 de Google

Python: lenguaje de programación interpretado multiplataforma.

Apache Cordova: framework de desarrollo de aplicaciones móviles híbrido, basado en HTML5, CSS3 y javascript. Permite portar un mismo código  a distintas plataformas: iOS, Android, Windows.

Mapbox GL JS: Utilizaremos Mapbox GL JS para la publicación de la cartografía vectorial en Android. Este framework es compatible con la mayoría de los tipos de datos GIS que pueden cargarse en la actualidad, ya que soporte datos vectoriales (GeoJSON, MBTiles), raster (WMS, WMTS, XYZ).

Tippecanoe: generador de ficheros MBtiles vectoriales en base a ficheros GeoJSON

Osmconvert: utilidad de creación, transformación, recorte, unión, etc entre distintas fuentes de datos de OpenStreetMaps.

Ogr2ogr: utilidad de transformación entre datos geográficos, incluyendo PostgreSQL, GeoJSON y numerosos formatos vectoriales más.

Bootstrap: biblioteca multiplataforma para el diseño de sitios y aplicaciones web.

Materialize: biblioteca de estilos genéricos con utilidades estándar que puede ser aprovechadas en distintos sitios web. Combinado con Bootstrap ofrece mayor configuración visual de las aplicaciones web.

SQLite: sistema de gestión de base de datos relacional. Es una base de datos multiplataforma y portable

Apache Tomcat: servidor de aplicaciones multiplataforma

Apache WebServer: servidor web multiplataforma

PHP: lenguaje de programación del lado del servidor aplicado en el desarrollo de aplicaciones de contenido dinámico web. Las últimas estadísticas indica que es empleado en más de 20 millones de sitios web y más de 1 millón de servidores.

HTML5: última versión del lenguaje web HTML, con nuevos elementos, atributos y comportamientos.

Javascript: lenguaje de cliente (se ejecuta en el navegador), ligero e interpretado, orientado a objetos. Más conocido como lenguaje de script para páginas web

CSS3: última versión del lenguaje de hojas de estilo en cascada (CSS). Permite la simbolización y diseño de todos los elementos que conforman una página web.

JQuery: biblioteca multiplataforma de Javascript, que permite simplificar la manera de interactuar con los objetos HTML y manipular el árbol de objetos del documento, manejar eventos y agregar interacción.

4.- Funcionalidades de la aplicación web.

 

A la aplicación se accede introduciendo las credenciales del usuario. Dependiendo del usuario, se mostrarán una información u otra.

Existen básicamente 3 roles en la aplicación:

  • Rol de administrador
  • Rol de delegación.
  • Rol de técnico
  • Rol de cliente.

Con el rol de administrador, podremos acceder a gestionar datos principales de la aplicación, como son Usuarios, delegaciones, clientes, servicios, geolocalización de activos y zonas, además de acceder a los datos de cada parte efectuado.

Con toda esta información, que básicamente es información vinculada a los clientes, instalaciones y partes, podemos gestionar los partes sin ningún problema.

El rol de delegación accederá a todos los partes del ámbito geográfico que tenga asignado.

El rol de técnico, accederá únicamente a los partes de clientes que haya rellenado y se le asignaran en su día.

El rol de cliente accede únicamente a sus partes, actuales e históricos.

En esta aplicación básicamente se ha trasladado la manera de operar del cliente en base a cómo actúa con SUS clientes, y cómo organiza su información.

Al ser un producto a medida, el cliente no tiene que adaptar su manera de trabajar a una plataforma estándar, sino que es la plataforma la que aterriza la manera de trabajar del cliente en ella. De este modo, la integración de la herramienta en la organización de la empresa es mucho más sencilla y rápida.

 

5.- Funcionalidades de la aplicación móvil.

 

Mapa municipal con la ubicación de las trapas del municipio.

El objetivo de la aplicación móvil era que los técnicos aplicadores pudieran disponer de toda la información necesaria para hacer su trabajo en un dispositivo móvil, además de poder rellenar y estandarizar la información que introducen, con ciertos parámetros de calidad.

Cuando el aplicador accede a la app, e introduce sus credenciales, se comprueba si disponen de todos los partes asignados, y si hay alguno nuevo que no tenga al app móvil, se descarga junto con toda la información necesaria para implementarlo. A partir de ese momento, ya dispone de toda la información y puede trabajar disponga o no de conexión a internet.

En la aplicación existen 2 tipos de entrada a los partes, en cuanto a si mostramos un plano o un mapa. Cuando el aplicador se registra en la aplicación, automáticamente se descarga a la tablet todos los planos y mapas necesarios, así como todos los partes y la información necesaria para trabajar.

El aplicador al entrar en un parte, puede ver en un plano o mapa (dependiendo del tipo de parte en el que esté actuando), pudiendo ubicar  los planos los elementos de tipo trampa, o productos que se han de aplicar. Esto sucede de la misma forma en los mapas, en el caso de que se trate de clientes de tipo Ayuntamiento, donde hay que hacer intervenciones, por ejemplo en el alcantarillado. Aparecerán todas las trapas donde se debe actuar.

A la hora de rellenar el parte, le aparecerán los productos, trampas, o elementos que vienen asignados desde el ERP, con lo que se reduce la posibilidad de que el aplicador cometa errores al rellenar el parte.

Una vez que ha finalización la actuación en el municipio o la instalación del cliente, y ha rellenado los parter necesarios, estos se almacenan localmente en el dispositivo móvil, y en cualquier momento, el técnico puede sincronizar los partes con el servidor, enviando la información y quedando ya registrada tanto el la herramienta SIG web, como en el software ERP del cliente.

Del mismo modo, el técnico, si detecta que falta algun tipo de producto o elemento para poder cumplimentar el parte, puede avisar a los técnicos en la oficina, y actualizar esos datos en tiempo real. Con esto, se agiliza mucho el trabajo de campo y se mejora de manera sustancial la calidad de los datos recogidos.

El objetivo de esta herramienta es facilitar el trabajo al técnico aplicador, acelerando así la toma de datos y agilizando todo el proceso de recopilación de información y sincronización con el servidor.

6.- Comunicación con el software del cliente

 

Existe una parte del desarrollo, invisible para el cliente, que es la que se encarga de establecer los protocolos de comunicación entre las distintas partes del proyecto:

  • Base de datos espacial del desarrollo SIG
  • Aplicación ERP del cliente
  • Motor de mapas.
  • Comunicación con las tablets
  • Recepción de información desde las tablets.

 

Estos programas o webservices se encargan de controlar los siguientes aspectos:

  • Validación de los usuarios mediante sus credenciales
  • Generación del juego de datos de los partes que deben ir a cada usuario, tanto de los propios partes de actuación, como de las instalaciones, zonas, productos, etc
  • Generación de mapas al vuelo haciendo uso de un generador de mapas vectoriales
  • Envío de datos el ERP del cliente
  • Grabación de los partes y ubicación de los elementos en planos y mapas dentro del servidor GIS
  • Geolocalización automática de todos los clientes e instalaciones en base a su dirección postal.

 

Sin esta parte invisible del desarrollo, las aplicaciones no funcionarían y no se establecería una comunicación correcta entre los distintos elementos que componen el sistema desarrollado.

Si está interesado o necesita un proyecto o Sistema de Información Geográfica a medida, no dude en ponerse en contacto con nosotros. Estaremos encantado de hablar.