Como o QGIS abre conjuntos de dados raster tão grandes (cerca de 40 GB)?


8

Tenho um problema com a biblioteca GDAL ao abrir um arquivo GeoTiff grande, com tamanho de 32000x32000. Não consigo usar a ReadAsArrayfunção porque o tamanho máximo da matriz numpy em python. Mas estou me perguntando por que o QGIS pode abrir esse arquivo facilmente. Qual é a técnica por trás?

Respostas:


16

Se o QGIS estiver sendo executado em uma janela com tamanho de 1000x1000 pixels na tela, não será necessário ler todos os 32000x32000 pixels para mostrar o mapa. O GDAL tenta ler dados da imagem de origem para que nenhum dado seja lido fora do tamanho da caixa delimitadora e, se a imagem tiver uma visão geral, os dados provêm do nível de resolução mais adequado para a resolução do mapa. Sempre há alguma sobrecarga, mas se o GDAL precisar ler 2000x2000 pixels, ainda assim nada será comparado aos dados de 32000x32000 pixels.

Depende do formato da imagem e do driver correspondente até que ponto o princípio "somente leitura, o que você precisa" funciona. Se você tiver um geotiff incorporado internamente em blocos de 256x256 e que contenha as visões gerais (ou camadas de pirâmide ou resoluções reduzidas em outros nomes), o GDAL poderá fazer isso muito bem. Por outro lado, imagens PNG e JPEG grandes são ineficazes porque toda a imagem deve ser descompactada antes que seja possível coletar dados de alguma pequena região de interesse.

Nota: Pode-se saber que mesmo os grandes arquivos GeoTIFF compactados com o método JPEG não são ineficazes. Isso é verdade porque, nesse caso, o arquivo TIFF é lado a lado e os ladrilhos são compactados com JPEG individualmente. O GDAL precisa descompactar completamente cada bloco, mas como os blocos são pequenos, com apenas 256x256 pixels, a operação é pequena e o uso de memória é baixo.

Leia sobre blocos, janelas e visões gerais em http://www.gdal.org/gdal_tutorial.html

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.