Una web API para delinear cuencas hidrológicas en todo el mundo

Por: David Rheinheimer
Traducido por: Laura Elisa Garza Díaz

¡Feliz Día Mundial del Agua!

Este día nos recuerda a nosotros los tecnófilos el por qué estamos trabajando arduamente en encontrar posibles soluciones a complejos desafíos que trae el manejo del agua: Ayudar a mejorar las vidas de las personas a través de un mejor acceso sostenible al agua.

Mientras que la tecnología puede parecernos tremendamente inspiradora a veces, también puede llevarnos por un mal camino. Así que en nuestra vida cotidiana mientras trabajamos con tecnología para mejorar el modelado del agua, debemos preguntarnos siempre ¿Cómo ayudará esto a mejorar la vida de las personas, la sociedad y el medio ambiente?

Nuestro Objetivo con OpenAgua es desarrollar herramientas poderosas y fáciles de usar que ayudan a informar y resolver desafíos reales del agua. Un camino que nosotros y otros están explorando es el uso global de colecciones de datos que ayuden a resolver desafíos locales sobre el manejo del agua. Mientras que existen muchas colecciones de datos, éstas son normalmente burdas o imprecisas para el soporte local de decisiones, o no existen herramientas de fácil disponibilidad para el contexto de planificación hídrica. Sin embargo, recientemente ha habido gran confluencia en innovaciones tecnológicas que están bajando significativamente los costos de desarrollo de dichas herramientas en términos técnicos y económicos.

Hemos desarrollado recientemente una herramienta que había sido visualizada hace tiempo, pero solo ahora es fácil de implementar: un Web API para delinear cuencas en cualquier parte del mundo. Aunque actualmente no está funcionando completamente, esta sirve como prueba de un concepto y existe en la plataforma.

Demostración del delineado de una cuenca hidrográfica

Primero demostraremos como este API es usado en OpenAgua, después explicaré un poco de como funciona y sus limitaciones. Primero, esta es una captura de pantalla de OpenAgua que muestra el delineado de la captación de aguas arriba del río Guayllabamba, Ecuador. (Quito se encuentra en medio a la izquierda)

upper guayllabamba
Figura 1. Delineado de cuenca hidrológica aguas arriba del río Guayllabamba, Ecuador

En OpenAgua, para crear una cuenca hidrográfica como esta, simplemente haces clic-derecho en la salida de una cuenca y seleccionas “delineate catchment hear”:

delineate catchment
Figura 2. Menu para el delineado de cuencas en OpenAgua

El API usa el HydroSHEDS dataset para el delineado. HidroSHEDS es una colección de datos digitales de elevación del Shuttle Radar Topography Mission (SRTM) del año 2001, desarrollado por WWF- World Wildlife Fund (Fondo Mundial para la Naturaleza). Yo personalmente ayudé a desarrollar HydroSHEDS mientras trabajaba para el Dr. Bernhard Lehner en WWF, mediante la corrección manual de errores en líneas de corrientes. Para que esta característica de delineación funcione (y para que la APU funcione en general), las coordenadas seleccionadas deben estar en una línea de distribución como se define por el HydroSHEDS. Por esta razón, en OpenAgua se debe mostrar la capa de las líneas de corriente de HydroSHEDS (más sobre la integración de las líneas de corriente en un post futuro). El uso de HydroSHEDS significa que esta función (y el API) funcionan hasta 60 grados hacia el norte. HydroSHEDS abarca 3 resoluciones: 3, 15 y 30 segundos de arco. Actualmente, la Web API solo soporta 15 segundos de arco, lo que probablemente sea suficiente para la mayoría de los usos, al menos por ahora.

El uso de HydroSHEDS también significa una advertencia importante: no es perfecto. Habiendo visto de primera mano los errores inherentes a los datos subyaventes, no todos los ríos son exactos, aunque yo diría que para la mayoría de los usos/locaciones lo son. Como un ejemplo, a continuación, se muestra el río Mapocho a través de Santiago de Chile.

mapocho river santiago.png
Cuenca del Río Mapocho en Santiago, Chile.

Claramente, a HydroSHEDS le faltó la porción inferior del río Mapocho. No obstante esto es realmente poco frecuente. (Mi rol en WWF era detectar estos errores y corregirlos sin embargo no trabajé en Sudamérica)

La Web API

Primero, ¿qué es una “Web API”? Muy simple, es una web basada en herramientas que aceptan comandos, hace algo, y regresa algún tipo de respuesta, posiblemente con datos (ver el artículo de Wikipedia sobre la Web API). Un comando de Web API puede lucir como lo siguiente:

http://api.example.com/function?arg1=1&arg2=3&arg3=8

Ahora, ¿qué hace la API de web de delineación de cuencas y cómo funciona? La Web API de OpenAgua toma coordenadas o un conjunto de coordenadas y devuelve datos que representan las cuencas que fluyen en esas coordenadas.

Para delinear el río Guayllabamba en el punto Latitud 0.035, Longitud -78.415, la cuenca puede ser delineada con la siguiente dirección web:

http://hydrology.openagua.org/api/delineate_point?lat=0.035&lon=-78.415

Si esta liga la copias y la pegas en tu buscador, deberías observar lo siguiente:

{
  "geometry": {
    "coordinates": [
      [
        [
          -78.0291666666655, 
          0.187499999998817
        ], 
        [
          -78.0291666666655, 
          0.179166666665484
        ],
        ...
        [
          -78.0291666666655, 
          0.187499999998817
        ]
      ]
    ], 
    "type": "Polygon"
  }, 
  "properties": {
    "fill-opacity": 0.0, 
    "id": "1", 
    "stroke": "#ff0000", 
    "stroke-opacity": 1.0
  }, 
  "type": "Feature"
}

Este pedazo de texto, en estilo JavaScript o JSON, incluye los datos necesarios para representar la cuenca alta del Guayllabamba (ver coordenadas). Como se ve en la primera figura anterior. Cuando se representa de esta manera, estos datos se llaman “GeoJSON”, que es una especificación que la mayoría de los mapas web de hoy en día comprenden. Para verificar esto, puedes copiar todo el resultado en la salida de la API y pegarlo en www.geojson.io. O bien, puedes verlo aquí.

Más Detalle

Si estás interesado en el meollo técnico, el código es abierto y puedes visualizarlo en https://github.com/OpenAgua/catchment-delineation. No hay secretos aquí, las rutinas son bastante básicas, similar a lo que un hidrólogo en ciernes aprendería en Hidrología 101. Si usted es un desarrollador o un estudiante graduado, siéntase libre de contribuir o de usar el código usted mismo. En el uso real, hay algunas limitaciones importantes, que puedes leer aquí. A pesar de las limitaciones, la propia API es bastante robusta. Está alojada en Amazon’s Web Services, implementado usando Elastic Beanstalk.

Últimas opiniones

El uso de APIs web está creciendo, y puede ser de valor estratégico para las empresas. Con esta API web particular, que todavía se encuentra en sus primeros pasos de desarrollo, permitimos que cualquiera delinee una cuenca, en cualquier parte del mundo. A medida que crezca OpenAgua, esperamos ofrecer muchas más funciones similares a la comunidad mundial de planificación de recursos hídricos. La delimitación de captación es un primer paso apropiado para que OpenAgua provea una API, ya que son esenciales no sólo para simular la escorrentía en áreas donde hay escases de datos, sino también para entender la geografía del agua en general. Una sólida comprensión de la geografía del agua es en sí misma el primer paso para mejorar la gestión del agua en todas partes y las vidas que dependen de ella.

Anuncios

Primeros pasos para integrar múltiples redes en un multisistema.

Por David Rheinheimer
Traducido por Laura Elisa Garza Díaz

Mi asesor de doctorado Dr. Jay Lund me dijo que mucho de lo que hacemos en nuestras carreras de investigación en post doctorados es hacer frente a retos que enfrentamos en nuestra travesía del doctorado. Como siempre, sus palabras fueron precisas. En mi caso tuve que lidiar con la construcción de un modelo de simulación de 13 cuencas en la zona de Sierra Nevada en California. Esas 13 cuencas eran modelos completamente separados e independientes. Aunque la parte de programarlos eficientemente en paralelo (como se hace referencia en el primer post) e integrar los resultados era el reto más importante, el simple hecho de manejarlos eficientemente también era un desafío importante. En realidad hubiera sido increíble poder editar, agrupar y visualizar cada red de cuencas en uno mismo proyecto, en un mismo sistema moderno de mapas.

Debido que OpenAgua utiliza una base de datos única y centralizada en Hydra Platform se hace posible la resolución de ambos problemas de una manera relativamente fácil. Lo anterior se demuestra por dos capturas de pantalla que recientemente he compartido con colegas y que incluye ejemplos de mi propia investigación de doctorado.  (Los códigos de 3 letras se refieren a cuencas específicas en la Sierra Nevada, como MER que define la cuenca del río Merced. Como referencia, el río Merced fluye a través del Valle de Yosemite y es relativamente no regulado).

multi-network-organization
Figura 1. Múltiples redes puedes ser almacenadas utilizando un solo proyecto. Esto es habilitado por Hydra Platform.

La capacidad de organizar múltiples redes en un mismo esquema de trabajo como se muestra en la Figura 1 es muy útil. Sin embargo, ésto por sí solo no es lo que impulsa este esfuerzo después de todo, ¿cuál es la diferencia entre esquema de trabajo y almacenar los archivos del mismo modelo en una carpeta en tu PC? No obstante, esto llegará a ser increíblemente poderoso cuando seamos capaces de enlazar eficientemente múltiples redes en un solo modelo. Deberíamos ser capaces de transferir datos fácilmente entre las redes, compartir sets de datos entre redes, etc.

Es importante mencionar que esto no está limitado a redes hídricas: podríamos eventualmente tener múltiples tipos de redes en un mismo espacio de modelación: redes de agua, redes de energía, redes de alimentos etc.

La Figura 2. muestra cómo podríamos combinar múltiples redes en un modelo simple. Esto es muy útil para visualización, pero también incrementa la eficacia del modelado. Con este sistema se puede alternar rápidamente entre las redes activas para editar y también alternar la visibilidad de otras redes en el mismo proyecto.

multi-network-viewing
Figura 2. Visualización de múltiples redes en un mismo proyecto.

En este ejemplo, tener la habilidad para ver/editar redes adyacentes en el mismo espacio es extremadamente útil. Esto podrá ser más útil cuando se trate de múltiples tipos de redes. Imagina ser capáz de ver/editar ambas redes de agua y energía en el mismo espacio. Combínalo con la capacidad para vincular estas redes eficientemente en el espacio para modelar, y podrás empezar a comprender el poder de lo que estamos haciendo. (No es que nadie pueda hacer esto – si no que estamos haciendo de esto algo necesario).

Esto no significa que estamos donde queremos en términos de conexión de redes, o incluso de la informática. A pesar de que técnicamente podemos modelar estos sistemas en OpenAgua, la infraestructura de computación es actualmente rudimentaria en el mejor de los casos y la habilidad para enlazar modelos simplemente no existe. OpenAgua es capaz de ver/editar redes desvinculadas en el mismo proyecto y esto es un importante primer paso.

*Si, OpenAgua puede importar modelos WEAP. Esta funcionalidad está en proceso, importar modelos esquemáticos funciona casi por completo. Mi investigación de doctorado fue en WEAP, por tanto, crear este ejemplo era un tanto trivial (¡ese era el punto!). Más cosas importantes sobre WEAP serán documentadas posteriormente.

Seguridad del sitio web-Let’s Encrypt

Por: David Rheinheimer
Traducido por: Laura Elisa Garza Díaz

¡Buenas noticias! El sitio web test.openagua.org ya está protegido. Esto significa que la página web pasó a ser http://test.openagua.org. Aunque este punto puede ser para algunos un detalle meramente banal, este paso es muy importante para el desarrollo de cualquier sitio web que requiera el inicio de sesión de algún usuario. El motivo es simple, hay usuarios que utilizarán OpenAgua como una herramienta de manejo de datos importantes y sensibles. Aunque nosotros como comunidad científica preferimos que todos los datos sean abiertos al público, la realidad es que el recurso del agua, si, un escaso recurso está sujeta a competencia sectorial y de diversos intereses administrativos. Nosotros queremos estar seguros que cualquier información sensible (contraseñas, números de tarjetas de crédito, etc.) estén encriptados.

Como parte del proceso de encriptado, una tercera parte verifica que el sitio web que estés visitando es quien dice que es. Esto se logra mediante la expedición de un certificado que verifique que la dirección web es correcta. La tercera parte comprueba este certificado e indica la seguridad del mismo con un pequeño candado a lado de la barra de direcciones. No obstante, este proceso cuesta dinero, ya que hay recursos computacionales significativos involucrados, por lo que los certificados generalmente cuestan y deben renovarse regularmente.

¿Cómo lo hicimos? Usando Let’s Encrypt, un servicio gratis de autoridad certificadora proporcionado por el Internet Security Research Grouo (ISRG). Esta organización tiene el respaldo de muchas entidades reconocidas como: Mozilla, Cisco, Chrome, Facebook, Automattic (propietatio de WordPress.com, sitio de nuestro blog), Fundación Ford entre muchos otros. Dado que Let’s Encrypt no cobra cargo por servicio, depende de donaciones. Por tanto, les animamos a donar a Let’s Encrypt. Si bien esta solución podría no tener sentido para una empresa con flujo de ingresos, es ideal para la etapa de prototipo en la que OpenAgua se encuentra.

Aunque la funcionalidad del sitio web es nuestra primera preocupación, todo esto no significaría nada sin aseverar la seguridad del sitio. Por lo que estamos muy contentos de añadir este elemento en nuestro prototipo.

¿Por qué OpenAgua?

Por: David Rheinheimer
Traducido por: Laura Elisa Garza Díaz

A nivel mundial, los desafíos y retos que enfrentan los países en el tema del manejo y gestión del agua son cada vez mayores. Vivimos en un mundo cambiante y dependiente del agua donde las poblaciones aumentan, la disponibilidad del agua decae, el cambio climático amenaza y la economía necesita mantenerse. Es por ello que la administración del agua se debe realizar mediante herramientas innovadoras que ayuden a la sociedad a planificar y gestionar sus recursos hídricos de manera sostenible, resiliente y transparente.

OpenAgua es una innovadora plataforma de software basada en la web para modelar sistemas de recursos hídricos que ayudan a satisfacer esta necesidad. OpenAgua es el resultado de colaboraciones entre investigadores de la Universidad de California Davis, el Tecnológico de Monterrey, la Universidad de Manchester y ahora la Universidad de Massachusetts Amherst.

En general, anticipamos que este blog será un espacio para cubrir redacciones generales sobre OpenAgua donde discutiremos sobre la aplicación (ver http://test.openagua.org), tecnologías y métodos utilizados, anuncios, reflexiones entre otros. Por supuesto que también estaremos subiendo actualizaciones a través de publicaciones en Twitter, así que síguenos. La documentación detallada sobre el proyecto OpenAgua, incluyendo sus innovaciones clave, una guía de usuario, documentación técnica, el equipo y los socios inversionistas, entre otros puede encontrarse en http://docs.openagua.org.

Con todo esto en mente, pensé en escribir sobre algunas de las motivaciones técnicas detrás de OpenAgua, específicamente sobre las condiciones actuales de la modelación de los recursos hídricos, así como de la filosofía general del desarrollo del software. Por supuesto que para OpenAgua la motivación más importante a largo plazo es la gestión eficiente del agua en términos sociales y económicos, sin embargo, a corto plazo es el desarrollo técnico y tecnológico.

Los sistemas de modelación de agua se encuentran en un momento clave en el tiempo, seguramente como algunas otras disciplinas modeladoras. Durante las últimas décadas, el modelado de sistemas de agua se ha realizado principalmente en computadoras de escritorio, utilizando sistemas de soporte de decisión personalizados o aplicaciones disponibles en el mercado (por ejemplo, WEAP, RiverWare, Aqua Tool y MIKE PLANNING). Sin embargo, utilizar softwares basados en computadoras de escritorio no es tarea sencilla aun cuando se requieren utilizarlas en paralelo para un sistema de gestión de agua básico en un tiempo relativamente corto.

Aunque las computadoras de escritorio se han vuelto cada vez más rápidas, no han sido capaces de mantenerse al día a día con la tecnología y con los rápidos cambios que están ocurriendo a medida que diversos esfuerzos sociales convergen.

  1. Como se mencionó anteriormente, el aumento poblacional y por consiguiente la demanda creciente de agua; la disminución de la calidad del agua como la contaminación o la salinización de ríos; la carencia en disponibilidad del agua, por ejemplo, el agotamiento del agua subterránea o las derivaciones aguas arriba hace que los desafíos y presiones del manejo y gestión del agua sean cada vez más cambiantes y complejos. Todo esto da pie a la necesidad de explorar mejores condiciones de gobernabilidad para modernizar y enriquecer la planificación hídrica. Hoy en día cada vez hay mayor capacidad de proyectar futuras condiciones de referencia (de clima, poblaciones, etc.), pero con un gran grado de incertidumbre, lo que hace necesario realizar evaluaciones avanzadas de escenarios.
  2. El gran volumen de datos que se generan a partir de diversos dominios relevantes para el manejo del agua está aumentando rápidamente, lo que anima a administradores e investigadores a explorar distintas posibilidades de manejo de datos de maneras diferentes y poco convencionales a como se han visto en los softwares de escritorio tradicionales. En el lenguaje actual, esto significa big data, es decir el almacenamiento de grandes cantidades de datos, en español se le puede referenciar como macro-datos o datos masivos. Dichos datos están disponibles en una amplia gama de fuentes (por ejemplo, satélites, sensores ambientales ubicuos, datos climáticos simulados, etc.). Aunque esto no significa que tengamos suficientes datos si no que cuando los datos se están convirtiendo en “macro” nos faltan herramientas fáciles de usar y métodos eficientes para aprovechar y utilizar estos datos.
  3. Incluso en casos en que la comunidad académica de planificación de los recursos hídricos dispone de las herramientas metodológicas y computacionales necesarias para llevar a cabo análisis exploratorios complejos, estas herramientas son generalmente difíciles y complicadas. Por otra parte, muchas plataformas no están diseñadas para ser utilizadas directamente por investigadores si no que son herramientas que necesitan ser personalizadas por expertos. Esto inhibe la adopción de algunos de los métodos analíticos y de modelación más populares, por ejemplo, los algoritmos genéticos y los algoritmos evolutivos. Los pocos sistemas de escritorio que existen para la planificación del agua utilizan un conjunto bastante estrecho de modelación tradicional, limitando las posibilidades de una adopción más amplia, de enfoques nuevos y mejores.
  4. Recientemente ha habido un boom en el desarrollo y disponibilidad de tecnologías de la información basadas en la web, que además de ser fáciles de usar pueden ayudar a resolver o colaborar con algunas, si no es que con la mayoría de las cuestiones descritas anteriormente. Algunos de los desarrollos computacionales son gratuitos, mientras que otros requieren licencias pagadas, aunque la mayoría son de código abierto. En el campo de la analítica de datos, dos ejemplos resaltan: Plotly, caracterizado por ofrecer herramientas para graficar, además de realizar análisis y  estudios estadísticos; mientras que Tableau  se basa en la visualización de datos interactivos que se enfocan en la inteligencia empresarial. No obstante, existen muchos otros ejemplos, tal vez no tan reconocidos como los anteriormente mencionados, pero que también permiten un rápido desarrollo de sitios web.
  5. La computación en nube (Amazon Web Services, Google Cloud Platform, Microsoft Azure, etc.) – también conocida como Infraestructura como Servicio (IaaS Infrastructure as a Service) – está creciendo rápidamente, permitiendo la ejecución de problemas demasiado grandes para los sistemas de escritorio tradicionales. Por otra parte, estas tecnologías también permiten otras características interesantes que no están disponibles en una aplicación tradicional de escritorio, como la colaboración en tiempo real o casi en tiempo real entre diferentes participantes y/o colaboradores. La computación en nube ya es utilizada por la comunidad de planificación del agua, pero no para el modelado de sistemas de agua; Un ejemplo interesante sobre los beneficios de la nube para la modelación de sistemas de agua incluyen Insight Maker, una aplicación de “sistemas de pensamiento” similar a Stella Professional.

Un punto de inflexión en cuanto a los diversos recursos para la innovación en la modelación de sistemas de agua es la gran disponibilidad de tecnologías para sitios web, además de la posibilidad de utilizar estas herramientas para personalizarlas en una plataforma de gestión de agua como OpenAgua, estos pueden ser combinados con herramientas de cómputo en la nube que son asequibles y fáciles de usar. Hasta la fecha, estos recursos siguen siendo posibilidades y no se han aprovechado de una manera que exponga completamente los avances metodológicos, la disponibilidad de datos y las posibilidades de cómputo de una forma fácilmente accesible para el sector del agua.

Esperamos que OpenAgua ofrezca esta posibilidad. Más allá de esta necesidad inmediata, también vemos a OpenAgua como una plataforma que puede absorber los cambios en los métodos de planificación del agua, las tecnologías web y los contextos físicos, sociales y económicos de la planificación del agua. En otras palabras, OpenAgua como una plataforma de modelación, debe ser capaz de adaptarse. El aspecto de código abierto de OpenAgua es crítico para ese fin, y esperamos un compromiso a largo plazo con la comunidad en manejo gestión de agua, así como con la comunidad más amplia de desarrollo de tecnología de la información.

¡Estaríamos encantados si pudieras unirte a nosotros en este esfuerzo!