Wie öffnet QGIS so große Raster-Datasets (ca. 40 GB)?

8

Ich habe ein Problem mit der GDAL- Bibliothek beim Öffnen einer großen GeoTiff-Datei mit einer Größe von ca. 32000 x 32000. Ich kann die ReadAsArrayFunktion nicht verwenden , da die maximale Größe des Numpy-Arrays in Python liegt. Aber ich frage mich, warum QGIS diese Datei einfach öffnen kann. Was ist die Technik dahinter?

Giangblackk
quelle

Antworten:

16

Wenn QGIS in einem Fenster mit einer Größe von 1000 x 1000 Pixel auf Ihrem Bildschirm ausgeführt wird, müssen nicht alle 32000 x 32000 Pixel gelesen werden, um die Karte anzuzeigen. GDAL versucht, Daten aus dem Quellbild zu lesen, sodass überhaupt keine Daten außerhalb des Begrenzungsrahmens gelesen werden. Wenn das Bild Übersichten enthält, stammen die Daten aus der Auflösungsstufe, die für die Kartenauflösung am besten geeignet ist. Es gibt immer einen gewissen Overhead, aber wenn GDAL 2000 x 2000 Pixel lesen muss, ist dies immer noch nichts im Vergleich zu Daten im Wert von 32000 x 32000 Pixel.

Es hängt vom Bildformat und dem entsprechenden Treiber ab, wie gut das Prinzip "Nur Lesen, was Sie brauchen" funktioniert. Wenn Sie einen Geotiff haben, der intern in 256x256-Kacheln gekachelt ist und die Übersichten (oder Pyramidenebenen oder reduzierte Auflösungen in anderen Namen) enthält, kann GDAL dies ziemlich gut. Andererseits sind große PNG- und JPEG-Bilder unwirksam, da das gesamte Bild dekomprimiert werden muss, bevor Daten aus einem kleinen interessierenden Bereich aufgenommen werden können.

Hinweis: Man kann wissen, dass selbst große GeoTIFF-Dateien, die mit der JPEG-Methode komprimiert wurden, überhaupt nicht unwirksam sind. Dies ist richtig, da in diesem Fall die TIFF-Datei gekachelt und die Kacheln einzeln mit JPEG komprimiert werden. GDAL muss zwar jede Kachel vollständig dekomprimieren, aber da die Kacheln mit nur 256 x 256 Pixel klein sind, ist der Vorgang klein und der Speicherbedarf gering.

Weitere Informationen zu Blöcken, Fenstern und Übersichten finden Sie unter http://www.gdal.org/gdal_tutorial.html

user30184
quelle