Estou manipulando e processando rasters globais com resolução de 30m. O tamanho total da varredura é geralmente [1.440.000 560.000]. Como tenho acesso a um supercomputador, escrevi um código que me permite dividir rasters globais em blocos gerenciáveis, executar alguns cálculos em paralelo e gravá-los no disco rapidamente.
Eu bati em uma parede, no entanto, quando se trata de exibir resultados. Normalmente, construo uma varredura virtual de ladrilhos que cobrem o globo e o coloco no QGIS. Mas é incrivelmente lento (minutos para carregar, se houver). E se eu tentar fazer panorâmicas ou zoom, são mais alguns minutos. Minha primeira abordagem para resolver esse problema foi criar visões gerais usando o gdaladdo. No entanto, isso leva uma eternidade para criar (como em dias), o que não é propício ao desenvolvimento de algoritmos. Aqui está uma lista das coisas que tentei e por que / como elas falharam.
crie visões gerais no vrt. Como mencionado acima, são necessários mais de 2 dias para completar 8 níveis. Isso é inaceitável para meus propósitos.
crie visões gerais nos blocos individuais e, de alguma forma, mescle-se a um vrt que contém as visões gerais. Sou capaz de criar visões gerais sobre os blocos rapidamente (supercomputador), mas não consegui refazê-las. Eu tentei:
2a gdal_merge nos blocos com visões gerais, mas as visões gerais não foram mantidas (ou pelo menos não reconhecidas pelo QGIS) no tiff de saída.
2b. gdalbuildvrt nos blocos com visões gerais, mas, como acima, as visões gerais não foram mantidas. [Isso não está correto, veja editar.]
2c. Também tentei um híbrido de visões gerais de construção para os blocos dos níveis 1-6 e de construção 7-8 diretamente no vrt (basicamente opção 2b), mas ainda está demorando uma eternidade apenas nesses dois níveis. Fiz alguns testes e vi que as visões gerais do bloco são realmente usadas para criar visões gerais do vrt, mas ainda está na ordem de um dia para concluir as visões gerais do vrt.
Então, espero que alguém aqui tenha algumas sugestões sobre onde devo ir a seguir. Aqui estão algumas opções que estou considerando:
Crie manualmente as pirâmides globais. Tenho receio de recombiná-los em um arquivo .ovr, pois presumo que isso seja complicado.
Use um servidor de mapas (Geoserver). Sei muito pouco sobre isso e estou preocupado que isso não supere os obstáculos do tempo, acrescentando complexidade ao meu processo.
Divida o domínio por continentes ou alguma outra região. Eu realmente quero evitar essa opção.
Você pode perguntar "por que você precisa ver o globo inteiro com uma resolução de 30m?" Um exemplo: pego uma máscara de pixels de água (globalmente) e a esqueletizo para encontrar rios e realizar medições. Meu algoritmo de esqueletização requer um pouco de ajuste (para poda de galhos, remoção de loops, limpeza geral etc.), e a saída é necessariamente a 30m. Como os rios e as paisagens são diversos em todo o mundo, eu preciso ser capaz de ver os efeitos de quaisquer mudanças que eu implementei.
Também examinei o QGIS para garantir que não haja configurações com as quais eu possa jogar para processar rasters enormes mais rapidamente, mas não vi nada. Com falta de comprar unidades SSD, acho que está dando a partida o mais rápido possível. (Meus HDDs têm E / S de ~ 250 MB / s).
Descobri que a criação de visões gerais em blocos individuais e, em seguida, a criação de um vrt aparentemente mantém as visões gerais - a seção "Pirâmide" do QGIS nos metadados do arquivo está vazia, mas na seção "Dimensões" há uma entrada para cada nível de visão geral (por exemplo, X 720000, Y 140; X 360000, Y 70, etc.). Então, eu estava errado sobre 2b.
Também acho que, se eu apenas colocar todos os blocos no QGIS, ele renderiza em menos de um minuto, enquanto se eu puxar o vrt que faz referência aos blocos, leva mais de 5 minutos (não sei quanto tempo exatamente desde que eu matei o bloco) processo).
Fiz alguns testes em um computador com um SSD e descobri que era possível carregar, exibir e renderizar os vrts globais (sem nenhuma visão geral) com sucesso e a uma taxa aceitável. Encomendei um SSD PCIe de 1 TB na esperança de que ele me permita fazer o mesmo no meu computador. Será atualizado com os 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
o mesmo que a ordem que você recomenda e que é naturalmente a correta. Eu não calcularia 2 4 8 ... visões gerais do VRT se blocos individuais os tivessem para economizar tempo e espaço em disco. O ROI pequeno encontraria visões gerais de alguns blocos e isso deve ser rápido o suficiente.