Estou tentando resolver um problema de GIS da web e preciso descobrir a melhor estratégia. Eu tenho um mapa com 30.000 células, formando uma grade para a província de Alberta. Eu tenho uma lista de pontos de dados para cada célula - cerca de 50 campos e valores de indicadores para cada célula. Por exemplo, um valor pode ser a população humana, portanto cada célula teria um valor para a população humana para essa célula. Quero fazer um mapa interativo que possa mostrar esses valores visualmente com quadrados para as células ou com uma aparência de tipo de mapa térmico misto. Além disso, eu gostaria de poder fazer cálculos compostos em todos os pontos de dados e usá-los para fazer mapas adicionais. Levando em consideração os cálculos, existem aproximadamente 300.000 permutações no mapa. Ainda por cima, também é temporal; existem 16 fatias de tempo diferentes.
Minha estratégia até agora:
1) No lado do servidor, calcule os valores da célula dinamicamente no tempo de execução e envie os valores para o cliente (todos os 30.000 deles). Isso se traduz em aproximadamente um valor para cada quadrado de 3x3 pixel em uma imagem de 525px x 525px na tela.
2) No lado do cliente com camadas abertas, use um png de 1px que possa ser redimensionado e tenha o valor alfa ajustado conforme necessário para mostrar o gradiente de cores diferente correspondente ao valor dos dados para cada célula. O png seria redimensionado conforme o mapa aumentasse ou diminuísse o zoom. Teoricamente, eles seriam posicionados precisamente para formar uma cobertura geral do mapa como quadrados ou, usando a abordagem do mapa de calor, eles se sobreporiam o suficiente para formar uma cobertura geral.
A questão:
É razoável calcular esses valores de célula dinamicamente no servidor e depois enviar para uma interface OpenLayers em tempo real? Estou confiante de que o servidor pode executar os cálculos, mas o OpenLayers pode exibir razoavelmente 30.000 pontos de dados por vez em um mapa? É razoável esperar poder criar uma cobertura geral usando dados de pontos? Acho que estou tentando criar o equivalente a um mapa vetorial com 30.000 formas, oferecendo 100% de cobertura geral do mapa, mas usando dados pontuais para simplificá-lo.
As estratégias alternativas em minha mente são:
a) gerar os mapas em tempo real no servidor e enviar como camadas rasterizadas ao cliente
b) gerar todas as permutações antecipadamente e armazená-las no servidor como mapas rasterizados
Alguma ideia? Minha abordagem está longe e latindo na árvore errada? Algum conselho sobre um método melhor?
Eu certamente apreciaria quaisquer pensamentos sobre o assunto! Se você estiver interessado, posso até contratar um desenvolvedor para ajudá-lo.
Muito obrigado!
Noé