[gdal-dev] Support for reading GDAL datasets in compressed archives (.gz and .zip)

Even Rouault even.rouault at mines-paris.org
Mon Aug 25 17:40:57 EDT 2008


I've just commited code in gdal 1.6.0dev SVN trunk that enables GDAL to 
decompress on-the-fly data from GZIP (.gz) and ZIP (.zip) archives.

This is implemented as 2 virtual file systems (like /vsimem for 
example), /vsigzip and /vsizip. Only read-only access is supported.

Note that performance will not be very impressive, as random access to ZIP 
file is slow by nature, although some optimizations have been made to make it 
faster and generally usable.

To read from a .gz file,
gdalinfo /vsigzip/path/to/the/file.gz were path/to/the/file.gz is relative or 

The first time that a .gz file is read, a small .gz.properties file will be 
generated (if possible) to capture the uncompressed data size. This will make 
following opening of that dataset much faster.

* To read from a .zip file,
gdalinfo /vsizip/path/to/the/file.zip/path/inside/the/zip/file were 
path/to/the/file.zip is relative or absolute and path/inside/the/zip/file is 
the relative path to the file inside the archive.

For example gdalinfo /vsizip/myarchive.zip/subdir1/file1.tif

The ReadDir() method is implemented for the .zip archives, so a driver will be 
able to find files relative to the given file inside the archive. For 
example, you can read a CADRG dataset from the zipped archive of the a.toc 
file and all its NITF tiles.

Small syntaxic sugar : if the .zip file contains only one file located at its 
root, just mentionning "/vsizip/path/to/the/file.zip" will work.


The fact that this new capability is implemented as virtual file systems imply 
that it will only work for GDAL drivers supporting the "large file API". A 
list of such drivers is : PNG, JPEG, ILWIS, GTiff, GIF, JP2KAK, NITF, ADRG, 
DTED, SRTMHGT, BMP, LCP, HFA (Erdas Imagine), AAIGRID. Other drivers may work 
too (I just looked for those advertizing the GDAL_DCAP_VIRTUALIO capability)

(See http://trac.osgeo.org/gdal/ticket/1369 for the history of that feature.)

Best regards


More information about the gdal-dev mailing list