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 aplicativo 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. Esse é 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?
Basta enviar um e-mail para code@iadb.org solicitando um “badge de reutilização da ferramenta", exclusivo do BID.