img_7175

 

En el marco de nuestros proyectos de Fin de curso de los alumnos hoy os vamos a enseñar uno que es rematadamente interesante. El alumno es Federico Piñuela y cursó el Master GIS Web. El trabajo es de alto nivel y pone de manifiesto que cuando los alumnos y profes trabajan juntos el resultado es impresionante.

El planteamiento que le hicimos a Federico fue el siguiente. Vamos a montar una página web en la que los usuarios puedan buscar los bancos más cercanos. Esto que en apariencia es sencillo lo abordamos de forma que el alumno tiene que crease un servicio web que pueda ser consumido desde una web o incluso desde una app móvil. Además, el servicio o app tiene dos operaciones espaciales sencillas pero críticas:

·         Recuperar la ubicación del usuario (x,y)

·         Lanzar con esas x,y una consulta a una base de datos habilitada espacialmente para devolver los bancos más cercanos

Bueno, como el proceso tiene su cierta complejidad lo que pensamos fue que para entenderlo bien lo mejor sería hacer una breve entrevista a Federico para que lo explique:

¿Qué es exactamente un servicio web? ¿Y un servicio web REST?

Se trata de una tecnología que permite el intercambio de datos entre aplicaciones software desarrolladas en diferentes plataformas y lenguajes haciendo uso de principios de interoperabilidad hechos patentes a través de la adopción de estándares abiertos.

rest

Un servicio web REST basa su funcionamiento en cuatro principios clave:

  1. Protocolo cliente/servidor sin estado. Cada petición HTTP contiene toda la información necesaria para levar a cabo la operación correspondiente.
  2. Conjunto de operaciones simples que garantizan el desarrollo de la gran mayoria de operaciones más complejas: POST, GET, PUT, DELETE.
  3.  Sintaxis universal. Cada recurso puede ser direccionado con una única URI.
  4. Uso de hipermedios, esencialmente HTML y XML.

¿Cómo se programa un servicio web? ¿es algo que se pueda hace con Javascript?

Para programar un servicio web, es prioritario conocer la forma en la cuál se va a producir la comunicación de entrada de datos y salida de la información de respuesta. En este sentido, los servicios REST presentan una metodología basada en clases que permiten la configuración de las cuatro acciones básicas anteriormente comentadas y que garantizan el encapsulamiento de las funciones desarrolladas.

Javascript como tal es un lenguaje desarrollado para trabajar en máquinas cliente ofreciendo funcionalidad e inteligencia a los desarrollos web. Debido a ello, no es un lenguaje útil en el desarrollo de estos servicios ya que su ejecución y lógica se desarrollan en un servidor. Mención a parte supone node.js, que permite aplicar la sintaxis de Javascript a desarrollos en servidor.

¿Qué tecnología has usado para desplegar los servicios? ¿cuánto tiempo lleva este trabajo?

La base para el desarrollo del servicio es PHP. PHP permite el acceso a la base de datos de la aplicación de forma directa. PHP recibe los parámetros a través de la URI de entrada, y mediante con ellos organiza la consulta a la base de datos de la aplicación (Postgres + PostGIS). A partir de aquí, la respuesta de la consulta a la base de datos es adaptada para devolver objetos GeoJSON.

El front-end de la aplicación se ha desarrollado en HTML5, haciendo uso de las librerías de Javascript Jquery y Leaflet. La primera de ellas se emplea en varios casos, pero especialmente en el desarrollo del módulo AJAX para la actualización parcial del mapa. Leaflet por su parte se centra en el despliegue de un visor cartográfico que es el principal consumidor de la respuesta al servicio, mostrando la información en forma de iconos con popups desplegables.

El uso de esta tecnología en conjunto permite desplegar este tipo de arquitecturas de forma rápida y segura, con el mínimo de problemas de interoperabilidad entre elementos.

post-gis-500x500

¿Como participa PostGIS en este proceso?

PostGIS se encarga de desplegar la inteligencia espacial a la hora de desarrollar las consultas a la base de datos. Permite responder a preguntas que implican el uso de análisis espacial a través de la información de posición de cada elemento presente en la base de datos.

En este sentido, la herramienta es capaz de elegir aquellas entidades que se encuentran a una distancia inferior de la dada por el usuario. PostGIS es quien se encarga de aportar esta inteligencia.

 

Si yo quisiera montar este servicio para que desde una web cualquiera pudiera consultar el cajero más cercano, ¿cómo lo puedo hacer público?

Mediante el empleo de una sentencia GET HTTP correcta. A través de esta, los parámetros de la consulta son insertados en una URI que envía la petición GET al servicio. En un principio, el mínimo de parámetros a enviar son la posición en forma de coordenadas en el sistema de referencia EPSG:4326 así como una distancia en metros.

Estos parámetros permiten que la aplicación desarrolle la consulta correspondiente a la base de datos y devuelvan una respuesta adaptada a un formato estándar como en este caso es GeoJSON.