Herramientas/Tool Index
BabelGrid
O que é?
BabelGrid é um pacote Python que unifica APIs de sistemas de indexação geoespaciais estabelecidos, como H3, S2 e QuadTree.
Por que foi criada?
Um sistema de indexação geoespacial (GIS) é uma forma estruturada de dividir o mundo em grades regulares. Uma vez definidas, essas grades possuem propriedades bastante úteis para desenvolvedores e pesquisadores. Por exemplo, cada bloco na grade possui um identificador exclusivo, um pai (um chapéu de bloco o contém) e filhos (blocos que ele contém). Outra propriedade é a forma do mosaico. Dependendo do sistema, uma grade pode ser um quadrado ou um hexágono. Embora o objetivo seja o mesmo, cada GIS é desenvolvido para atingir determinados objetivos. Vamos dar uma olhada em alguns dos sistemas mais usados.
O QuadTree foi desenvolvido primeiro para resolver o problema de envio de imagens de satélite para a web. Quando você está navegando em um mapa, cada vez que você move ou aplica zoom, o aplicativo deve carregar uma nova imagem. No nível de zoom mais alto, o aplicativo precisa pesquisar milhões de imagens de satélite o mais rápido possível. Para resolver esse problema, o sistema QuadTree divide o mundo em quadrados cada vez menores que contêm uma imagem de satélite. Cada quadrado contém 4 outros quadrados menores. Como você pode ver na imagem abaixo, cada novo quadrado carrega o identificador exclusivo de seus pais. Uma propriedade que permite a um aplicativo de mapeamento pesquisar uma imagem quase instantaneamente.

(Fonte da imagem: https://docs.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system)
O sistema de indexação H3 desenvolvido pela Uber, foi projetado para resolver um problema diferente. O Uber precisa fornecer informações geoespaciais sobre a demanda do usuário e preços para seus motoristas e equipe. Ele faz isso adicionando dados de pontos em áreas para criar mapas de calor (veja a imagem abaixo). Por resolver um problema diferente, o H3 tem ladrilhos hexagonais. A distância uniforme entre o ponto central do hexágono e seus vizinhos é um ótimo recurso para modelos estatísticos. Qual é um dos motivos que atraiu a comunidade de pesquisadores para o H3.

(Fonte da imagem: https://eng.uber.com/h3/)
Existem outros sistemas de indexação geoespacial, como S2, GeoHash e XYZ do Google. Cada um com suas decisões de design específicas foi desenvolvido para resolver um problema específico. Mas, com o surgimento do movimento Data for Good, mais empresas estão usando essas redes estabelecidas para compartilhar seus dados.
O Facebook compartilha seus conjuntos de dados de movimento usando o sistema QuadTree. Por outro lado, o Waze prefere o sistema S2. E a comunidade de pesquisa costuma usar o H3. No entanto, embora os sistemas tenham propriedades equivalentes, cada um deles possui uma API Python diferente. Isso implica que um pesquisador precisa aprender e adaptar seu código a cada API, uma tarefa que pode ser bastante complicada, visto que algumas APIs não são intuitivas e têm pouca documentação. O BabelGrid pretende resolver este problema.
O BabelGrid unifica as APIs do sistema de indexação geoespacial em torno de uma API Python comum. O BabelGrid é fácil de usar e intuitivo. A imagem a seguir mostra como um mosaico pode ser facilmente obtido usando coordenadas geográficas. O usuário pode escolher a resolução do mosaico ou mosaico mais próximo a uma área em quilômetros.

A grade também pode ser facilmente alterada. Atualmente, o BabelGrid oferece suporte a H3, S2 e QuadTree.

Se um usuário deseja que todos os blocos estejam dentro de um limite, o BabelGrid possui um recurso conveniente que o torna super simples.

Por que estamos compartilhando isso?
Como um pacote Python, o BabelGrid é uma ferramenta que pode ser facilmente usada por pesquisadores, cientistas de dados e empresas. Por não haver uma ferramenta que atinja o mesmo objetivo, ela tem potencial para se tornar uma referência na geocomunidade. No futuro, ele pode ser expandido para abranger mais sistemas e ter mais funcionalidade.
Você já reutilizou ou está pensando em reutilizar esta ferramenta?
Entre em nosso concurso para ganhar vários prêmios, incluindo uma viagem para participar na Developer Week, de 15 a 23 de fevereiro de 2023, em São Francisco, CA - EUA.
Basta enviar um e-mail para code@iadb.org solicitando um “badge de reutilização da ferramenta", exclusivo do BID.