Estoy manipulando y procesando rásteres globales a una resolución de 30 m. El tamaño total de la trama suele ser [1,440,000 560,000]. Tengo acceso a una supercomputadora, así que he escrito un código que me permite dividir los rásteres globales en fragmentos manejables, realizar algunos cálculos en paralelo y escribirlos en el disco con bastante rapidez.
Sin embargo, me he topado con un muro cuando se trata de mostrar resultados. Por lo general, construyo una trama virtual de mosaicos que cubren el globo y lo coloco en QGIS. Pero es increíblemente lento (minutos para cargar, si lo hace). Y si trato de desplazarme o hacer zoom, son otros muchos minutos. Mi primer enfoque para resolver este problema fue construir vistas generales usando gdaladdo. Sin embargo, estos tardan una eternidad en construirse (como en días), lo que no conduce al desarrollo de algoritmos. Aquí hay una lista de las cosas que he intentado y por qué / cómo fallaron.
construir vistas generales en el vrt. Como se mencionó anteriormente, esto lleva más de 2 días para completar 8 niveles. Eso es inaceptable para mis propósitos.
construir vistas generales en los mosaicos individuales, luego de alguna manera fusionarse en un vrt que contenga las vistas generales. Puedo construir vistas generales en los mosaicos bastante rápido (supercomputadora), pero no he podido volver a fusionarlos. Lo intenté:
2a. gdal_merge en los mosaicos con vistas generales, pero las vistas generales no se conservaron (o al menos no fueron reconocidas por QGIS) en el tiff de salida.
2b. gdalbuildvrt en los mosaicos con vistas generales, pero como arriba, las vistas generales no se conservaron. [Esto no es correcto, ver edición].
2c. También probé un híbrido de construcción de vistas generales para los mosaicos para los niveles 1-6 y construcción de los niveles 7-8 directamente en el vrt (básicamente la opción 2b), pero todavía me lleva una eternidad solo para estos dos niveles. Hice algunas pruebas y ver que las vistas generales de baldosas se utilizan realmente para construir una visión general de VRT, pero sigue siendo del orden de un día para completar las visiones generales sobre la VRT.
Así que espero que alguien aquí tenga algunas sugerencias sobre dónde debería ir después. Aquí hay algunas opciones que estoy considerando:
Crear manualmente las pirámides globales yo mismo. Tengo cuidado de recombinarlos en un archivo .ovr, ya que supongo que será complicado.
Use un servidor de mapas (Geoserver). Sé muy poco sobre esto y me preocupa que no supere los obstáculos de tiempo al tiempo que agrega complejidad a mi proceso.
Divida el dominio por continentes o alguna otra región. Yo realmente quiero evitar esta opción.
Puede preguntar "¿por qué necesita ver el mundo entero con una resolución de 30 m?" Un ejemplo: tomo una máscara de píxeles de agua (globalmente) y la esqueleto para encontrar ríos y realizar mediciones. Mi algoritmo de esqueletización requiere un poco de ajuste (para poda de ramas, eliminación de bucles, limpieza general, etc.), y la salida es necesariamente de 30 m. Como los ríos y los paisajes son diversos en todo el mundo, necesito poder desplazarme para ver los efectos de los cambios que he implementado.
También revisé QGIS para asegurarme de que no haya ninguna configuración con la que pueda jugar para renderizar enormes rásteres más rápido, pero no vi nada. A falta de comprar unidades SSD, creo que está funcionando lo más rápido posible. (Mis discos duros tienen E / S de ~ 250 MB / s).
Descubrí que construir vistas generales en mosaicos individuales, luego construir un vrt aparentemente mantiene las vistas generales: la sección "Pirámide" de QGIS en los metadatos para el archivo está vacía, pero en la sección "Dimensiones" hay una entrada para cada nivel de visión general (por ejemplo, X 720000, Y 140; X 360000, Y 70, etc.). Entonces me equivoqué sobre 2b.
También encuentro que si solo extraigo todos los mosaicos en QGIS, se procesa en menos de un minuto, mientras que si extraigo el vrt que hace referencia a los mosaicos, toma> 5 minutos (no sé cuánto tiempo exactamente desde que maté el proceso).
Hice algunas pruebas en una computadora con un SSD, y descubrí que podía cargar, mostrar y renderizar los vrts globales (sin vistas generales) con éxito y a un ritmo aceptable. He ordenado una SSD PCIe de 1TB con la esperanza de que me permita hacer lo mismo en mi computadora. Se actualizará con los resultados.
I also tried a hybrid of building overviews for the tiles for levels 1-6 and building levels 7-8 directly on the vrt
que se siente igual que el orden que recomienda y, naturalmente, ese es el correcto. Yo mismo no calcularía 2 4 8 ... vistas generales para el VRT si los mosaicos individuales los tienen para ahorrar tiempo y espacio en disco. Luego, un ROI pequeño encontraría vistas generales de un par de mosaicos y eso debería ser lo suficientemente rápido.