Estoy tratando de abordar un problema web de SIG y necesito encontrar la mejor estrategia. Tengo un mapa con 30,000 celdas que forman una cuadrícula para la provincia de Alberta. Tengo una lista de puntos de datos para cada celda: alrededor de 50 campos indicadores y valores para cada celda. Por ejemplo, un valor podría ser la población humana, por lo que cada celda tendría un valor para la población humana para esa celda. Quiero hacer un mapa interactivo que pueda mostrar esos valores visualmente, ya sea con cuadrados para las celdas, o un tipo de aspecto de mapa de calor combinado. Más allá de eso, me gustaría poder hacer cálculos compuestos en todos los puntos de datos y usar esos cálculos para hacer mapas adicionales. Teniendo en cuenta los cálculos, hay aproximadamente 300,000 permutaciones en el mapa. Para colmo, también es temporal; Hay 16 segmentos de tiempo diferentes.
Mi estrategia hasta ahora:
1) En el lado del servidor, calcule los valores de las celdas dinámicamente en tiempo de ejecución y envíe los valores al cliente (los 30,000 de ellos). Esto se traduce en aproximadamente un valor por cada cuadrado de 3x3 píxeles en una imagen de 525px x 525px en la pantalla.
2) En el lado del cliente con capas abiertas, use un png de 1px que se pueda cambiar de tamaño y ajuste el valor alfa según sea necesario para mostrar los diferentes gradientes de color correspondientes al valor de datos para cada celda. El png se redimensionará a medida que el mapa se acerque o aleje. Teóricamente, se colocarían con precisión para formar una cobertura general del mapa como cuadrados o, de lo contrario, utilizando el enfoque de mapa de calor, se superpondrían entre sí lo suficiente como para formar una cobertura general.
La pregunta:
¿Es razonable calcular esos valores de celda dinámicamente en el servidor y luego enviarlos a una interfaz OpenLayers en tiempo real? Estoy seguro de que el servidor puede realizar los cálculos, pero ¿puede OpenLayers mostrar razonablemente 30,000 puntos de datos a la vez en un mapa? ¿Es razonable esperar poder crear una cobertura general utilizando datos de puntos? Supongo que estoy tratando de crear el equivalente de un mapa vectorial que tenga 30,000 formas que brinden una cobertura total del mapa del 100%, pero usando datos de puntos para simplificarlo.
Las estrategias alternativas en mi mente son:
a) generar los mapas en tiempo real en el servidor y enviarlos como capas rasterizadas al cliente
b) generar todas las permutaciones con anticipación y almacenarlas en el servidor como mapas rasterizados
¿Alguna idea? ¿Mi enfoque está lejos y ladrando al árbol equivocado? ¿Algún consejo sobre un mejor método?
¡Seguramente agradecería cualquier idea sobre el tema! Si está interesado, incluso podría estar buscando contratar a un desarrollador para que lo ayude.
¡Muchas gracias!
Noé