Comment QGIS ouvre-t-il des ensembles de données raster aussi volumineux (environ 40 Go)?

8

J'ai un problème avec la bibliothèque GDAL lorsque j'ouvre un gros fichier GeoTiff, avec une taille d'environ 32000x32000. Je ne peux pas utiliser la ReadAsArrayfonction car la taille maximale du tableau numpy en python. Mais je me demande pourquoi QGIS peut ouvrir ce fichier facilement. Quelle est la technique derrière?

giangblackk
la source

Réponses:

16

Si QGIS est exécuté dans une fenêtre de 1000x1000 pixels sur votre écran, il n'est pas nécessaire de lire tous les 32000x32000 pixels pour afficher la carte. GDAL essaie de lire les données de l'image source afin qu'aucune donnée ne soit lue en dehors de la zone de délimitation, et si l'image a une vue d'ensemble, les données proviennent du niveau de résolution qui convient le mieux à la résolution de la carte. Il y a toujours des frais généraux mais si GDAL a besoin de lire 2000x2000 pixels ce n'est toujours rien comparé à 32000x32000 pixels de données.

Cela dépend du format d'image et du pilote correspondant de la façon dont le principe "lecture seule ce dont vous avez besoin" fonctionne. Si vous avez un géotiff qui est en mosaïque en 256x256 et qui contient les aperçus (ou couches pyramidales ou résolutions réduites dans d'autres noms), GDAL peut très bien le faire. D'un autre côté, les grandes images PNG et JPEG sont inefficaces car l'image entière doit être décompressée avant de pouvoir prendre des données d'une petite région d'intérêt.

Remarque: On peut savoir que même les fichiers GeoTIFF énormes qui sont compressés avec la méthode JPEG ne sont pas du tout inefficaces. C'est vrai parce que dans ce cas, le fichier TIFF est en mosaïque et les tuiles sont compressées avec JPEG individuellement. GDAL a besoin de décompresser complètement chaque tuile, mais comme les tuiles sont petites avec seulement 256x256 pixels, l'opération est petite et l'utilisation de la mémoire est faible.

Lisez à propos des blocs, des fenêtres et des aperçus sur http://www.gdal.org/gdal_tutorial.html

user30184
la source