Herramientas/Tool Index
BabelGrid
¿Qué es?
BabelGrid es un paquete de Python que unifica las API establecidas del sistema de indexación geoespacial como H3, S2 y QuadTree.
¿Por qué fue creada?
Un sistema de indexación geoespacial (GIS) es una forma estructurada de dividir el mundo en cuadrículas regulares. Una vez definidas, estas cuadrículas tienen propiedades que son bastante útiles para desarrolladores e investigadores. Por ejemplo, cada mosaico de la cuadrícula tiene un identificador único, un padre (un sombrero de mosaico lo contiene) e hijos (mosaicos que contiene). Otra propiedad es la forma del mosaico. Dependiendo del sistema, una cuadrícula puede ser un cuadrado o un hexágono. Aunque el objetivo es el mismo, cada SIG se desarrolla para lograr ciertos objetivos. Echemos un vistazo a algunos de los sistemas más utilizados.
QuadTree se desarrolló por primera vez para abordar el problema de cargar imágenes de satélite en la web. Cuando navega por un mapa, cada vez que se mueve o hace zoom, la aplicación tiene que cargar una nueva imagen. En el nivel de zoom más alto, la aplicación necesita buscar entre millones de imágenes de satélite lo más rápido posible. Para abordar este problema, el sistema QuadTree divide el mundo en cuadrados cada vez más pequeños que contienen una imagen de satélite. Cada cuadrado contiene otros 4 cuadrados más pequeños. Como puede observar en la imagen a continuación, cada nuevo cuadrado lleva el identificador único de sus padres. Una propiedad que permite que una aplicación de mapas busque una imagen casi al instante.
(Fuente de la imagen: de https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system)
El sistema de indexación H3 desarrollado por Uber, fue diseñado para resolver un problema diferente. La aplicación Uber necesita proporcionar información geoespacial sobre la demanda de los usuarios y los precios a sus conductores y personal. Lo hace agregando datos puntuales en áreas para crear mapas de calor (vea la imagen a continuación). Dado que resuelve un problema diferente, el H3 tiene mosaicos hexagonales. La distancia uniforme entre el punto central del hexágono y sus vecinos es una gran característica para los modelos estadísticos. Cuál es una de las razones que atrajo a la comunidad investigadora a H3.
(fuente de la imagen: de https://eng.uber.com/h3/)
Existen otros sistemas de indexación geoespacial como S2, GeoHash y XYZ de Google. Cada uno con sus decisiones de diseño específico se desarrolló para resolver un problema específico. Pero, con el auge del movimiento Data for Good, cada vez más empresas utilizan estas redes establecidas para compartir sus datos.
Facebook comparte sus conjuntos de datos de movimiento utilizando el sistema QuadTree. Por otro lado, Waze prefiere el sistema S2. Y la comunidad de investigadores suele utilizar H3. Sin embargo, aunque los sistemas tienen propiedades equivalentes, cada uno de ellos tiene una API de Python diferente. Esto implica que una investigadora necesita aprender y adaptar su código a cada API, una tarea que puede resultar bastante engorrosa, dado que algunas API no son intuitivas y tienen poca documentación. BabelGrid tiene la intención de abordar este problema.
BabelGrid unifica las API del sistema de indexación geoespacial en torno a una API Python común. BabelGrid es fácil de usar e intuitivo. La siguiente imagen muestra cómo se puede obtener fácilmente un mosaico utilizando coordenadas geográficas. El usuario puede elegir la resolución del mosaico o del mosaico más cercano a un área en kilómetros.
También se puede cambiar fácilmente la cuadrícula. Actualmente, BabelGrid admite H3, S2 y QuadTree.
Si un usuario quiere que todos los mosaicos estén dentro de un límite, BabelGrid tiene una función conveniente que lo hace súper simple.
¿Por qué la estamos compartiendo?
Como paquete de Python, BabelGrid es una herramienta que pueden utilizar fácilmente investigadores, científicos de datos y empresas. Dado que no existe una herramienta que logre el mismo objetivo, tiene el potencial de convertirse en un referente en la geocomunidad. En el futuro, se puede ampliar para cubrir más sistemas y tener más funcionalidades.
¿Ha reutilizado o está pensando en reutilizar esta herramienta?
Basta enviar un correo electrónico a code@iadb.org solicitando un “badge de reutilización de herramienta”, exclusivo del BID.