Dados Geoespaciais: Uma visão geral
Dentre todas as bases de dados em que tive a oportunidade de trabalhar, poucas foram as vezes em que não encontrei dados geoespaciais.
Sumário
Mas o que são dados geoespaciais?
Dados geoespaciais são quaisquer dados que possuam uma dimensão espacial associada a localizações sobre a superfície da Terra. Seja na forma de localizações brutas ou ainda informações como cidades e estados, este tipo de dado pode nos dizer mais do que aparenta, podendo levantar questões como o tipo de vida do usuário e seus interesses, auxiliar na busca por padrões de acesso em telefonias e dinâmicas de mobilidade, entre outras. Apesar de todo esse potencial, uma pergunta fica: como lidar com esses dados? Neste artigo, vou abordar alguns pontos principais e dar um panorama geral para que cada um possa decidir com mais propriedade o que fazer com dados geoespaciais.
Conceitos Básicos dos dados
Antes de partir para o tratamento em si, vamos primeiro entender alguns conceitos importantes. O primeiro ponto é a projeção da Terra e como isso afeta análises básicas. Existem alguns tipos de projeção dos dados em torno da Terra (sendo mais conhecidos os formatos de esfera e o elíptico) e cada um deles vai distorcer a forma e tamanho de países/continentes de determinada maneira. De modo geral, o modelo esférico é mais simples, porém possui maior distorção em pontos mais próximos dos pólos terrestres e portanto pode interferir em métricas direcionadas a estas regiões. Por outro lado, o modelo elíptico é mais preciso à verdadeira forma da Terra, porém muito mais complexo. Este tipo de modelo impacta principalmente ao analisar áreas e distâncias entre pontos/regiões.
Como representar os dados
Vamos também pensar em como os dados serão representados. Abordamos coordenadas geográficas representadas como pontos, porém se o objetivo é traçar a rota de um ônibus por exemplo, podemos representá-la como uma linha (formada por um conjunto de pontos). Ao tratar de estabelecimentos, cidades ou regiões, iremos representar tais dados como um polígono formado pelas linhas (ou pontos) que marcam suas bordas geográficas.
Para lidar com estas representações podemos utilizar as bibliotecas Shapely e Geopandas. A primeira provê os três tipos apresentados e também outros não tão comuns (MultiLine, MultiPolygon), além das operações espaciais que serão tratadas abaixo. Já o Geopandas apresenta um tipo de Dataframe especializado em dados geoespaciais e também algumas operações como junções espaciais.
Operações Geoespaciais
A grande vantagem de se utilizar dados geoespaciais é a possibilidade de relacioná-los a outras geometrias. Através desses relacionamentos é possível identificar se um usuário visitou ou não certo estabelecimento (ou um conjunto deles), qual a cidade que mora, condensar dados por região geográfica, entre muitas outras atividades. Para isso, temos dois conjuntos principais de operações espaciais: as que representarão relacionamentos, e as que aplicarão uma determinada transformação.
Operações de relacionamento
As operações de relacionamento retornarão VERDADEIRO ou FALSO caso uma atinja determinada condição. Estas funções se aplicam entre duas geometrias, porém vale ressaltar que nem sempre as duas geometrias farão sentido com a função. Abaixo estará listada as principais operações de relacionamento, com um exemplo destas na Figura 1. Na imagem, a geometria A é representada em preto e a geometria B é representada em verde (retorno verdadeiro) e vermelho (retorno falso).
- CONTAINS: Retorna verdadeiro se a geometria B está totalmente contida ou contida compartilhando bordas com a geometria A.
- CROSSES: Verifica se a geometria B cruza a geometria A em algum ponto. Vale ressaltar que as geometrias têm que efetivamente se cruzar, não valendo somente compartilhar bordas.
- INTERSECTS: A geometria B toca, cruza, ou intersecta a geometria A de alguma forma? Se sim, retorna verdadeiro.
Figura 1: Exemplo de uso e resultado das operações relacionais.
Ao contrário das operações de relacionamento, as operações de transformação retornarão geometrias resultantes de alguma modificação. Por isso, elas podem ser compostas de uma ou mais geometrias, a depender da transformação aplicada. As principais operações de transformação estão abaixo, com os exemplos na Figura 2.
- BUFFER: Cria um polígono formado pela geometria e uma margem em seu entorno. Passam essa área por parâmetro e deve-se atentar que o resultado é relativo à projeção dos dados.
- INTERSECTION: Considerando as geometrias A e B passadas por parâmetro, retorna as partes comuns em ambas geometrias.
- UNION: Retorna a geometria resultante da união daquelas passadas por parâmetro.
Figura 2: Exemplo de uso e resultado das operações de transformação.
Para mais detalhes sobre operações, sugiro leitura da subseção Filtragem do minicurso sobre dados geoespaciais referenciado abaixo.
Visualização
Por fim, tão importante como relacionar as geometrias dos dados, é poder visualizá-las de alguma forma que faça sentido. Através da visualização é possível não só verificar se algum dado não faz sentido, como também detectar outliers e situações incomuns. Nesse sentido, temos algumas bibliotecas que auxiliam nessa etapa: O Bokeh suporta dados provenientes do Geopandas e cria gráficos interativos com fundo geoespacial; o Folium é mais voltado para plotagens de dados geoespaciais em si, e pode criar visualizações como heatmaps, adicionar marcadores e legendas personalizadas baseando-se em localizações; e o Gmaps, uma API Google parecida com o Folium para plotagem de dados geolocalizados, porém que também suporta camadas de visualização de satélite.
Com o Folium, por exemplo, podemos plotar os polígonos representando os pontos de ônibus e semáforos de uma região de Curitiba, com um buffer de 10m ao redor deles, como na Figura 3 abaixo.
Figura 3: Polígonos dos pontos de ônibus e semáforos em uma região de Curitiba.
Podemos também plotar um mapa de calor para identificar os pontos geográficos com maior densidade de coordenadas/eventos (Figura 4). Esse tipo de mapa também pode ajudar a validar clusters gerados com algoritmos baseados em densidade (como o DBScan) aplicados a coordenadas.
Figura 4: Heatmap das localizações de pontos de ônibus de uma determinada linha.
Aplicações de dados georreferenciados
Comentamos brevemente alguns exemplos de uso de dados georreferenciados acima, como estudo de características dos dados baseado em regiões e identificação de estabelecimentos que o usuário visita. Em ambos os casos, essas informações podem ajudar a entender o contexto socioeconômico do usuário, facilitando a identificação de padrões regionais, ou ainda a influência que esses fatores causam em sistemas de recomendação [7].
Outra aplicação é o uso das localizações de ônibus para entender quais os bairros e a situação socioeconômica de regiões com muito fluxo dos próprios ônibus, assim como regiões onde estes têm mais demanda. Este tipo de estudo pode levar a um melhor gerenciamento de rotas, ampliando o alcance do transporte público onde e quando mais necessário.
Além disso, também podemos usar dados georreferenciados para segmentar modelos por regiões de infraestrutura semelhante, como em [8] que apresenta uma solução data-driven para o problema de detecção de ambientes abertos ou fechados, segmentando regiões geográficas em áreas de 100m², o que amplia a probabilidade de dados vindos do mesmo tipo de região (urbana, rural, com muitos prédios altos, ou mais residencial, por exemplo).
Dados georreferenciais e a pandemia
Durante a pandemia da Covid-19, também foram utilizados dados georreferenciados para mapear o aumento no preço de alimentos no norte da Nigeria [9]. Nesse projeto, coletaram as localizações de voluntários durante as compras, assim como o preço dos alimentos alvo do estudo. Trataram essas localizações e agruparam a outras informações demográficas (e.g., faixa de salários e densidade populacional) das regiões mapeadas, sendo os resultados disponibilizados em um painel que visava a rápida identificação de possíveis crises.
Ainda durante a pandemia, foram utilizadas fotos geotagueadas para monitorar os padrões de mobilidade das pessoas durante o lockdown parcial na Malásia [10]. Utilizaram dados de redes sociais, que foram mapeados para localizações dentro do país. Com isso, foi possível identificar que a maioria das pessoas se concentraram em cidades grandes e atrações turísticas, além do aumento de posts georreferenciados durante o relaxamento das normas de segurança.
Como pudemos ver, dados geolocalizados são capazes de revelar várias informações comportamentais implícitas. Este artigo abordou somente uma introdução aos principais pontos de como lidar com esse tipo de dado, e nem chegamos a aplicação com código propriamente dito. Espero que a leitura ajude a direcionar os estudos futuros.
Referências e Links úteis
[1] Minicurso Dados geoespaciais: Conceitos e técnicas para coleta, armazenamento, tratamento e visualização (link)
[2] Geometries (shapely) (link)
[3] The Shapely User Manual (link)
[4] Managing Projections – GeoPandas (link)
[5] How to: Folium for maps, heatmaps & time data (link)
[6] Time-lapse heat maps with Folium (link)
[7] Mobile Application Recommendation based on Demographic and Device Information
(link)
[8] A Big Data-Driven Hybrid Solution to the Indoor-Outdoor Detection Problem (link)
[9] Using crowd-sourced data for real-time monitoring of food prices during the COVID-19 pandemic: Insights from a pilot project in northern Nigeria (link)
[10] Individual mobility pattern in Malaysia during COVID-19 Recovery Movement Control Order partial lockdown (link)
Data Science
Confira outros artigos
Ciência de dados explicando coisas que acontecem no mundo
Hoje cada ser humano com um dispositivo móvel em mãos produz uma série de dados, gerados em velocidade, volume e variedade nunca vistos antes. A internet das coisas tem se tornado um mar de oportunidades para a ciência de dados nos últimos anos. Isso acontece, porque, através de sensores inteligentes e softwares que transmitem dados […]
Data Science
Estrutura de dados: o que é e qual a sua importância?
Entenda o que é a importância da estrutura de dados na linguagem da programação O universo da programação possui uma série de fundamentos considerados essenciais para o desenvolvimento dos mais diversos softwares. Considerada um ponto-chave em qualquer projeto, a estrutura de dados tem um papel relevante no trabalho de todos os programadores. Mas você sabe […]
Data Science
Ciência de Dados para Estratégias de Negócios
A disponibilidade dos dados por si só, não garante a tomada de decisões bem-sucedida com base nos dados. Como uma empresa pode garantir obter melhor riqueza de dados? A gestão da empresa deve pensar nos dados de forma analítica, isso não significa que os gestores precisam ser cientistas de dados. No entanto, eles precisam compreender […]
Data Science