As funções principais do QGIS exploram a multiencadeamento?

10

Depois de ler Ativando o processamento multithread no QGIS? , Eu queria saber se o QGIS 2.6 incluirá isso ao executar vários processos. Fiz uma verificação on-line e só consegui descobrir que a renderização multithread foi introduzida no QGIS 2.4 (suponho que ele estará novamente disponível na 2.6). Agora, os mapas podem ser redesenhados muito rapidamente, especialmente ao lidar com grandes conjuntos de dados.

Eu li que é bastante difícil incluir o multiencadeamento na funcionalidade principal e que os usuários são aconselhados a manipular o código Python para conseguir isso, como em Paralelizando operações GIS no PyQGIS? .

Também verifiquei o pedido do recurso, mas ele foi fechado por 9 meses agora por Tim Sutton, com o último comentário sendo:

"Estou encerrando: Martin Dobias tem uma implementação em uma filial que será mesclada após o QGIS 2.2"

Algumas funções do QGIS 2.6 exploram a multiencadeamento (ou será focada novamente na renderização)? Caso contrário, isso será alterado no QGIS 3.0?

Joseph
fonte
O multithreading não é particularmente apropriado para a maioria das tarefas GIS, que tendem a ser orientadas para o fluxo, simples e vinculadas à E / S. A dificuldade de coalescer os resultados geralmente não vale o esforço para enfileirá-los de forma independente (o vice faz a tarefa simples imediatamente). A definição de "exploração" está, portanto, sujeita a um debate significativo.
Vince
@Vince - Obrigado, entendo que o multithreading não é uma prioridade para muitos casos de uso. Mas, como já foi feito algum trabalho para conseguir isso, fiquei imaginando se o suporte a isso (que pode ser um termo melhor que "explorar") estaria presente na nova versão do QGIS =)
Joseph
1
@ PolyGeo - Obrigado, um ponto justo e que é bastante adequado para este formato de perguntas e respostas. Eu concordo :)
Joseph

Respostas:

3

Penso que a resposta para o QGIS 3.0 pode ser encontrada nesta recente conversa publicada no Nabble :

O processamento no QGIS 3 suportará paralelização?

Citando Nyall Dawson:

Se você estiver buscando paralelização em um único algoritmo (por exemplo, recursos de buffer usando vários threads), não tenho conhecimento de nenhum plano para lidar com isso.

mgri
fonte
Boa descoberta! Embora eu esteja um pouco confuso com a citação que se segue: "Maneira agradável e (teoricamente) fácil de obter algoritmos multithread, e seria simples adaptar muitos algoritmos existentes a este (buffer, centróide, transformar, traduzir, .... Basicamente, qualquer coisa que opere em cada recurso isoladamente). " . Entendi que a maioria dos algoritmos opera em cada recurso individualmente de qualquer maneira, porque se você não selecionar manualmente os recursos individuais, o algoritmo processará todos eles automaticamente?
Joseph
Eu acho que a citação que você citou é sobre a possibilidade de fazer uma edição diretamente na camada (em vez de produzir uma nova saída): de fato, a seguir, ele fala sobre a possibilidade de fazer uma operação de buffer diretamente na camada atual, sem o processamento adicional da saída retornada.
MGRI
1
Hmm bom ponto. Eu estou esperando um dev QGIS também pode comentar e confirmar isso :)
Joseph
2
GIS SE não é um site de discussão. Se você deseja uma resposta de um provedor específico, sugiro que você os consulte diretamente.
Vince
1
@ Joseph Existem muitos algoritmos (por exemplo, cálculo de interseções de linhas ou dissolução de recursos) em que não é possível operar recursos individuais.
Underdark
4

Renderização apenas no momento atual (QGIS 2.6).

Martin e eu conversamos sobre algum tipo de API de processo encadeado genérico, mas são apenas conversas no momento.

Nathan W
fonte
1
Obrigado Nathan, você acha que vale a pena perseguir esse empreendimento ou adicionar / melhorar funcionalidades é considerado uma prioridade mais alta? Isso é apenas por curiosidade :) #
Joseph
Vale a pena prosseguir, mas não suspeito que seja uma tarefa fácil.
Nathan W