Temos um artigo de como gerar mapa de fluxos no QGIS, usando o plugin Oursins. No entanto, o plugin não funciona para as versões mais recentes e este tutorial mostra como é possível gerar um mapa de fluxos sem a utilização de plugin.
Lembrando que a versão usada para este tutorial é a atual LTR, o QGIS 3.28.
O tutorial é baseado neste artigo, e você pode ver o procedimento na íntegra pelo vídeo abaixo:
O tutorial será exemplificado com o fluxo de imigração para outros países a partir do Brasil, em que as linhas geradas mostrarão os 15 países com mais imigrações de brasileiros.
As fontes para isso são oriundas da Organização da Nações Unidas.
Para iniciar, vamos a um passo-a-passo do que será feito para gerar o mapa:
- Importar camada com os países do mundo;
- Criar uma nova camada com centroides dos países;
- Importar tabela CSV com os países de maiores imigrações;
- Criar camada virtual para gerar as linhas;
- Definir SRC e salvar a camada com as linhas geradas;
- Estilizar as linhas geradas.
Importar camada com os países do mundo
Como descrito no vídeo, o primeiro passo é importar uma camada com os países do mundo, portanto, baixe o arquivo shapefile neste link e importe para o QGIS.
A partir dela faremos os centroides, necessários para criar as linhas do mapa de fluxos.
Criar uma nova camada com centroides dos países
Depois de importar a camada de países, é hora de gerar os centroides.
Siga o tutorial abaixo para fazer isso. O tutorial é feito no QGIS 2.18, mas o caminho é similar e você não terá problemas ao criá-los:
Lembre-se de salvar o nome da camada de centroides como Centroides, para que o código SQL funcione corretamente, ou você pode pode modificar o código alterando os nomes referentes ao arquivo de centroides.
O resultado, seguindo o vídeo, é este:
Importar tabela CSV com os países para gerar o mapa de fluxos
Fizemos uma tabela de três colunas, contendo os 15 países com maior imigração de brasileiros.
Você pode baixar a tabela usada neste exemplo aqui.
Perceba que os nomes dos países estão em inglês, isso é necessário para que haja uma coluna em comum com o shapefile de países baixado anteriormente.
Desse modo, o código SQL a ser inserido, funcionará sem problemas
Seguindo o vídeo, salve a tabela no formato CSV e importe-a para o QGIS ou baixe-a aqui.
Criar camada virtual para gerar as linhas
Essa etapa é a mais importante. Para criar a camada virtual vá em Camada -> Criar nova camada -> Nova Camada Virtual…
A partir daqui é possível usar código SQL para gerar as linhas, automatizando o processo de criação das linhas de fluxo.
De outra forma, você teria que desenhar linha a linha e aqui a geometria é gerada automaticamente na quantidade de linhas da tabela CSV criada anteriormente.
Na área de consulta, cole o código SQL abaixo:
SELECT Origem, Destino, Quant,
make_line(a.geometry, b.geometry)
FROM Migracao_paises
JOIN Centroides a ON Migracao_paises.Origem = a.ADMIN
JOIN Centroides b ON Migracao_paises.Destino = b.ADMIN
WHERE a.ADMIN != b.ADMIN
A primeira parte do código seleciona (SELECT) as colunas Origem, Destino e Quant da tabela Migracao_paises (FROM). Esta é a tabela CSV adicionada anteriormente.
Além disso, ela seleciona uma função que cria a geometria de origem (a) e destino (b) (make_line).
Continuando a explicação do código, será feita a junção (JOIN) da camada Centroides com a camada shapefile dos países. Esta junção ocorrerá tanto para origem quanto para destino e isso só funcionará se houver uma coluna na camada shapefile que contenha os mesmos nomes de países. Esta coluna é a ADMIN.
A junção será feita se não houver uma coincidência entre os centroides de origem e destino, ou seja, se os dois pontos não estiverem no mesmo lugar (WHERE).
Em seguida, clique em Adicionar, de acordo com o vídeo.
Definir SRC e salvar a camada com as linhas geradas
A camada virtual é temporária e, portanto, é necessário salvá-la para não perder os dados.
Antes de salvar, é necessário também definir o Sistema de Referência de Coordenadas, colocando o mesmo definido na camada SHP dos países.
Para isso, clique com o botão direito na camada virtual, em seguida vá em Propriedades. Na próxima janela, na aba Fonte defina o o sistema como EPSG: 4326 – WGS 84:
Por fim, salve a camada como shapefile, clicando com o botão direito e em Exportar -> Guardar elementos como…
Estilizar as linhas geradas no mapa de fluxos
A estilização também será pode ser feita através de código, para facilitar.
Seguindo o vídeo, você tem que mudar a Simbologia para Graduado, selecionando como Valor a coluna Quant.
Lembre-se de verificar se a coluna Quant está em valores numéricos.
Mude também o Símbolo de Linha simples para Seta.
O Método deve ser definido como Cor, o Modo como Quebra Natural e as Classes coloque como 4 (acompanhe o vídeo). Clique em Aplicar.
Para deixar as linhas curvas, ainda nas definições de Simbologia, vá em Símbolo, selecione Seta (segundo item da hierarquia) e mude o Tipo de Camada Símbolo de Seta para Gerador de Geometria:
Cole o código abaixo no campo indicado, substituindo $geometry:
make_line(
start_point($geometry),
centroid(
offset_curve(
$geometry,
length($geometry)/-9.0
)
),
end_point($geometry)
)
Sem muitos detalhes sobre o código, tudo o que você precisa saber é que este código faz as linhas se curvarem e a única modificação que você precisa entender é a linha length($geometry)/-9.0, cuja numeração define a intensidade da curva.
Veja o vídeo para mais modificações nas linhas, tudo feito na simbologia da camada.