Eu fiz vários projetos nesse sentido, mas no final eles sempre acabavam sendo soluções personalizadas que basicamente
- separou o problema em grades
- fez o processamento em cada nó individual e copiou o resultado em uma tabela temporária / armazenamento de dados
- mesclou todas as soluções em uma única tabela de resultados e, opcionalmente, tratou das condições de contorno. O tratamento de condições de limite era necessário apenas nos casos em que os recursos precisavam ser costurados ou massageados (por exemplo, ao construir uma topologia de maneira distribuída, você deseja que os recursos de limite se ajustem).
Engraçado o suficiente, toda vez que resolvia um problema dessa natureza, usava uma tecnologia diferente, principalmente porque essa era a moda da época. No final, o que você deseja é uma biblioteca de transmissão de mensagens que tenha um gerenciador de filas de tarefas, gerando processos nos diferentes nós e que tenha algum tipo de mecanismo de sincronização ( Semapahore , Barreira , etc) e alguma maneira de lidar com erros e tentar novamente. Todos os projetos que mencionei abaixo têm essas coisas.
Para geo, usei (em ordem cronológica):
(moda antiga)
(mais recente)
Existem vários outros que as pessoas usam.
No final, qualquer uma dessas opções seria suficiente (embora de uma maneira um pouco diferente), então se resume a escolher uma que tenha uma comunidade que seja útil.
Além disso, em cada nó, você precisaria usar uma biblioteca para executar as operações de geometria GIS. A recomendação para a qual usar viria com base no idioma em que você prefere codificar isso. Mas tenho certeza que as opções que a maioria das pessoas lhe daria seriam:
Ou alguma outra biblioteca que serve como invólucro para um deles.