Estou tentando recriar um gráfico de origem-destino como este:
Consegui reunir os dados em uma tabela MSOA para LAD e posso desenhar um mapa como este para um dos MSOA de origem.
Uma vez que você permita as distâncias (agora ridículas) das pessoas no Peak District comutarem para o trabalho, está próximo.
Mas eu gosto bastante do efeito que o autor conseguiu ao "espalhar" as linhas. Obviamente, com fluxos de 522 e 371, não posso escolher uma única linha por passageiro, mas seria bom produzir um arco proporcional de linhas para mostrar o número de pessoas que fazem a viagem.
Eu pensei que seria capaz de usar o Geometry Generator, mas sem uma construção de loop, não consigo avançar.
qgis-3
geometry-generator
Ian Turton
fonte
fonte
Respostas:
Um grande desafio!
Esta resposta usa principalmente o gerador de geometria e foi escrita no QGIS 3.2. O QGIS travou (sem eu ter salvo!) Logo depois que construí as linhas e quase desisti, mas a lista de expressões usadas recentemente salvou o dia - outro bônus ao usar o gerador de geometria
Comecei com dois conjuntos de pontos, uma fonte e três destinos. Os destinos são rotulados com as contagens:
Em seguida, gerei linhas conectando o ponto de origem a todos os destinos usando uma camada virtual usando o seguinte código:
Em seguida, usei a seguinte expressão de gerador de geometria para estilizar as linhas:
Isso pega cada linha e aplica as seguintes etapas:
tapered_buffer
para entender por que isso é necessário)Ao escrever as etapas, percebo que a conversão de e para uma matriz é desnecessária e toda a manipulação do WKT pode ser feita com expressões regulares. Esta expressão está abaixo e, se a
tapered_array
função puder ser substituída por uma diferente, também poderá ser usada no QGIS 2.18.fonte
Sua pergunta me deixou curiosa.
Esta solução funciona apenas para o QGIS 2.x no console Python
Como mencionado no meu comentário, aqui é minha ideia de criar o arco de linhas com o Python.
Eu tenho uma camada de dois pontos:
Eu. Um detentor do capital (id, capital)
ii. Um segurando as cidades (id, cidade, passageiros)
A quantidade de passageiros é "separada em notas" e estas serão as linhas que constroem o arco. Assim, 371 passageiros são uma combinação de 3x100, 1x50, 2x10 e 1x1 e no total 7 notas. Posteriormente, as linhas são estilizadas por um estilo baseado em regras.
Aqui está o código:
O resultado pode ser assim:
ATUALIZAÇÃO: distinção masculino / feminino
Resultados em 4 camadas de memória.
O resultado pode ser assim:
Uma coisa que não é ideal do ponto de vista cartográfico:
O tamanho de um arco de linha pode ser irritante à primeira vista, da maneira que um arco maior pode representar mais passageiros. Um arco pode ser maior com menos passageiros (289 passageiros / 11 notas) do que outro com mais passageiros (311 passageiros / 5 notas).
fonte