Data

13 jun, 2018

Apresentando o kepler.gl, a caixa de ferramentas geoespaciais open source da Uber

Publicidade

Mapas são baseados em nosso mundo físico. Criamos mapas usando formas abstratas e cores para revelar padrões geográficos e contar histórias sobre a existência humana.

Na Uber, aproveitamos a visualização de dados para entender melhor como nossas cidades se movem. Nossas soluções nos permitem incorporar mapas com dados ricos de localização, renderizar milhões de pontos de GPS em um piscar de olhos e, o mais importante, obter insights deles.

Figura 1: O processo comum de criação de uma visualização de dados inclui coleta de dados, processamento de dados, exploração visual e, em seguida, camadas.

Independentemente dos frameworks ou ferramentas usadas, a criação de visualizações interativas segue um processo similar: coleta de dados, processamento de dados, exploração de visualização através de ferramentas baseadas na web, como QGIS, Carto e Mapbox Studio, e então, portando as visualizações para JavaScript com React, D3.js e Three.js para construir protótipos. O processo não é apenas tedioso, mas pode ou não obter visualizações úteis. Em muitos casos, há mais ideias de visualização do que há tempo e pessoas para fazê-las.

Para tornar mais fácil para os usuários com uma variedade de níveis de experiência e habilidades criarem visualizações significativas de dados, temos o orgulho de anunciar o lançamento do kepler.gl, nossa ferramenta open source de geoanálise. Construído sobre o framework de visualização de dados deck.gl WebGL, o kepler.gl escala o processo de criação de mapas, obtendo rapidamente insights e validando ideias de visualização a partir de dados geoespaciais.

O que é kepler.gl?

Figura 2: O kepler.gl é um aplicativo baseado na web de alto desempenho, agnóstico de dados, para visualizações geoespaciais em larga escala.

O kepler.gl é um aplicativo baseado na Web, agnóstico de dados e de alto desempenho para exploração visual de conjuntos de dados de geolocalização em larga escala. Construído em cima do deck.gl, o kepler.gl pode renderizar milhões de pontos representando milhares de viagens e realizar agregações espaciais em tempo real, como mostra a Figura 4, abaixo:

Figura 3: O kepler.gl pode renderizar milhões de pontos e executar agregações espaciais em tempo real.

Mostrando dados geoespaciais em uma única interface web, o kepler.gl ajuda os usuários a validarem rapidamente as ideias e a coletar insights dessas visualizações. Usando o kepler.gl, um usuário pode arrastar e soltar um arquivo CSV ou GeoJSON no navegador, visualizá-lo com diferentes camadas de mapa, explorá-lo filtrando-o e agregando-o e, eventualmente, exportar a visualização final como um mapa estático ou um vídeo animado.

Ao invés de abranger vários navegadores e consumir semanas de trabalho por vez, todo o processo de tentativa e erro ocorre em uma interface de usuário e pode levar apenas 10 minutos!

Figura 4: O fluxo do kepler.gl UX é composto de cinco camadas, incluindo hexágono, arco e ponto.

O kepler.gl usa camadas como blocos de construção para criar mapas interativos, suportando dados de codificação e criação de camadas personalizáveis (por exemplo, tarifas, ETA e timestamps) para canais visuais (por exemplo, tamanho do círculo, cor do arco e cor do círculo) com funções de escala (por exemplo, linear, quantil e quantize).

Figura 5: As camadas de ponto, arco e heatmap do kepler.gl (superior) e as camadas de grade, hexágono e polígono (abaixo) fornecem uma rica análise de dados geoespaciais.

No kepler.gl, camadas de mapeamento, tipos de visualização comuns usados para codificar dados de localização, permitem que os usuários conduzam análise e exploração geoespacial. A taxonomia das camadas de mapeamento oferecidas pelo kepler.gl inclui pontos básicos, arcos, caminhos, polígonos, grades e hexágonos em 2D e 3D, como mostrado na Figura 6, acima.

Por exemplo, uma camada de ponto pode ser usada para traçar locais de eventos e lugares; uma camada de arco pode ser usada para visualizar correlações de origem-destino; uma camada de hexbin ou grade pode ser usada para agregar uma coleção de pontos mostrando sua distribuição; e uma camada de polígonos pode ser usada para visualizar um mapa coroplético mostrando estatísticas agregadas de regiões geográficas.

Todos os cálculos de geometria de camadas são acelerados por GPU, permitindo renderizar milhões de pontos e tornar o kepler.gl uma ferramenta web muito mais poderosa do que o software de cartografia tradicional.

Figura 6: O kepler.gl agrega pontos com uma camada de hexbin 3D.

Além do tradicional plano cartográfico 2D x e y, o kepler.gl introduz uma terceira dimensão para codificar dados que suportam a altitude pontual e a altura da grade/hexágono/polígono em uma vista isométrica em perspectiva.

Com a altura habilitada, um usuário pode detectar anomalias mais rapidamente em um mapa de agregação, conforme mostrado na Figura 7, abaixo:

Figura 7: O kepler.gl permite a reprodução de séries temporais para visualizar dados espaço-temporais.

O kepler.gl permite que os usuários apliquem filtros a qualquer métrica em seu conjunto de dados. Usos típicos de filtragem incluem adicionar tempo de reprodução para visualizar dados espaço-temporais, excluindo outliers usando histogramas e refinando dados para um conjunto menor para comparação. A Figura 8, abaixo, mostra como um filtro permite a reprodução de dados em um mapa:

Figura 8: O kepler.gl permite usar a escovação para explorar as correlações de origem e destino.

Além da filtragem comum baseada em métrica, o kepler.gl oferece uma função exclusiva de filtragem geográfica: escovação, como mostrado na Figura 8. Com a escovação, os usuários podem destacar arcos e pontos originados em um determinado raio da localização atual do mouse no mapa. Essa função é especificamente útil para visualizar as correlações de origem e destino para entender melhor como diferentes regiões se conectam umas às outras.

Figura 9: Os usuários podem renderizar camadas com mesclagem subtrativa (esquerda) e mistura aditiva (direita).

O kepler.gl não apenas permite que os usuários explorem dados rapidamente, mas também os capacita a criar mapas bonitos. O software fornece um conjunto de mapas de base de baixo contraste, adequados para visualizações baseadas em mapas e uma variedade de paletas de cores, incluindo cores do ColorBrewer.

Semelhante às ferramentas de edição de fotos, o kepler.gl usa diferentes técnicas de mistura de cores (por exemplo, mistura normal, aditiva e subtrativa) para adicionar efeitos cinematográficos aos mapas, como mostrado na Figura 9.

O kepler.gl também oferece aos usuários a liberdade de personalizar mapas de base ocultando seletivamente e mostrando recursos (incluindo rótulos, estradas e terrenos) ou movendo-os sobre camadas de dados existentes.

Esse conjunto de técnicas e efeitos especiais torna a criação de mapas com o kepler.gl incrivelmente divertida e cheia de surpresas.

Por trás do kepler.gl

O kepler.gl é construído em cima do deck.gl, uma biblioteca de visualização de dados com tecnologia WebGL, e react-map-gl, um wrapper do React para o Mapbox-gl, ambos incluídos na suíte open source Vis.gl, desenvolvida in-house pela equipe Data Visualization da Uber.

O kepler.gl é um componente React que usa o Redux para gerenciar seu estado e fluxo de dados. Ele pode ser facilmente incorporado em outros aplicativos do React-Redux e personalizado como qualquer outro estado do Redux.

Os desenvolvedores podem criar aplicativos com o kepler.gl simplesmente montando o componente React do kepler.gl na interface do usuário e o redutor kepler.gl em seu redutor raiz. Seu sistema de despacho antecipado permite que vários componentes kepler.gl sejam montados em um único aplicativo e suporta o envio de ações personalizadas de fora do próprio componente kepler.gl.

O kepler.gl é construído sobre um sistema de injeção de dependências de componentes, que permite que o desenvolvedor troque os componentes padrão da IU com os personalizados na inicialização.

Na Uber, o kepler.gl é usado como o componente de mapa em vários aplicativos de painel, em torno dos quais os desenvolvedores podem criar outros componentes com base em suas necessidades. Esperamos que outros achem o kepler.gl tão versátil e útil também!

Mapas de amostra criados com kepler.gl

A geoanálise requer conhecimento específico do domínio e consiste em muitos termos abstratos. Às vezes, pode ser difícil para os iniciantes em visualização de dados e para os profissionais não técnicos trabalharem com seus dados. Para ajudar os usuários a começarem, o kepler.gl fornece um conjunto de mapas de amostra criados por nossa equipe.

Figura 10: O kepler.gl mostra os contornos de elevação de San Francisco e Treasure Island/Yerba Island.

Nosso mapa de contorno de San Francisco foi criado com dados de contorno do sfdata.org. Ele utiliza uma camada de polígono para plotar linhas de contorno e colori-las por elevação, como mostra a Figura 11. Esse exemplo representa a criação de um mapa cartográfico típico, comumente usado em estudos do sistema de informações geográficas (GIS).

Figura 11: Um mapa da população do setor de recenseamento de Nova York descreve como determinada área populosa das cidades era em 2010.

Um mapa da população de Nova York, mostrado na Figura 12 acima, é feito com os dados do setor censitário de 2010. Sua escala de cores de quantil azul para laranja se correlaciona com o tamanho da população, do menor para o maior. Esse mapa também adiciona altura a polígonos com base na população, facilitando muito a identificação de valores discrepantes.

Figura 12: Um mapa de origem-destino dos residentes na Inglaterra e no País de Gales usa arcos 3D para visualizar os padrões de deslocamento.

Outro mapa de origem e destino foi criado usando os dados de deslocamento diário de residentes na Inglaterra e no País de Gales, mostrados na figura 13. Esse mapa usa arcos bicolores para conectar os locais das residências dos cidadãos (em amarelo) e locais de trabalho (em magenta). A visão do olho de pássaro revela alguns deslocamentos surpreendentemente longos, como os de Londres para cidades a 300-400 quilômetros ao norte.

Avançando

Após sua criação como um produto interno, há dois anos, o kepler.gl evoluiu de um aplicativo de página única para um poderoso framework de geoanálise e visualização. Ele cria um ambiente de exploração e visualização de dados geoespaciais all-in-one e tem sido amplamente usado na Uber para fornecer análises geoespaciais feitas por engenheiros, analistas e cientistas de dados.

Ao abrir o código do kepler.gl, os usuários de diferentes níveis de experiência técnica e habilidade agora têm acesso a softwares gratuitos que os ajudam a criar e personalizar mapas impactantes e orientados a dados. Mais importante, retornar o software nos permite promover uma comunidade de desenvolvedores que pode suportar o desenvolvimento futuro do kepler.gl.

Nos próximos meses, visualizamos duas melhorias principais para o kepler.gl:

  • Funcionalidade de exploração mais robusta: para gerar insights mais profundos, planejamos construir o framework para suportar gráficos e widgets personalizados adicionais no painel de visualização. Essa funcionalidade adicionada facilitará a exploração do tipo tableau, vinculando interações entre mapas e gráficos.
  • Expandir recursos de geoanálise: adicionando operações de dados geoespaciais, como junção, buffering, interseção e união; suportando operações de camadas como agregação de pontos por polígono; e filtrando recursos desenhando no mapa, o kepler.gl poderá suportar conjuntos de dados ainda maiores.

Durante nosso lançamento beta no início deste ano, empresas em todo o mundo adotaram o kepler.gl para suas próprias pesquisas. Cientistas de dados, arquitetos, especialistas em visualização e engenheiros de empresas como Mapbox, Limebike, Airbnb, Sidewalk Labs, HERE technologies, Atkins Global, Cityswifter, UBILabs e 300000kms encontraram um enorme valor na simplicidade, nas capacidades e na velocidade do kepler.gl.

Também vimos acadêmicos usarem o software, como o estudante de arquitetura Diego Crescêncio, da Estácio de Sá, no Rio de Janeiro. Para sua pesquisa, Diego trabalha com dados abertos do crime no kepler.gl para entender melhor o ambiente construído para a pesquisa de design urbano. Ele está usando visualizações 2D e 3D de dados referentes a taxas de criminalidade em toda a cidade para entender como o design urbano pode melhorar a segurança dentro das favelas.

Segundo Diego, urbanistas no Brasil raramente usam software de geoanálise. Desde a adoção do kepler.gl, Diego, seus professores e outros colaboradores da rede UNIGIS conseguiram obter uma análise de dados rápida e poderosa para esse projeto.

Figura 13: Diego e sua equipe usam kepler.gl para visualizar dados abertos no Brasil para sua pesquisa de design urbano:
Figura 14: Will Geary, um cientista de dados do CitySwifter, usa a interação de escovação do kepler.gl para explorar a cidade para trabalhar na cidade de Nova York.

Esperamos que goste de usar o kepler.gl e esteja ansioso para criar mapas bonitos e orientados a dados! Por favor, junte-se à comunidade kepler.gl seguindo o nosso repositório no GitHub e usando a hashtag #keplergl no Twitter.

Se você estiver interessado em nos ajudar a criar a próxima geração do pacote de visualização de dados da Uber, considere a possibilidade de se candidatar a um cargo em nossa equipe.

Feliz mapeamento!

***

Este artigo é do Uber Engineering. Ele foi escrito por Shan He. A tradução foi feita pela Redação iMasters com autorização. Você pode conferir o original em: https://eng.uber.com/keplergl/