Quantcast

[gdal-dev] Creating Cloud Optimized GeoTIFFs

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[gdal-dev] Creating Cloud Optimized GeoTIFFs

Peter Schmitt
Hi,

I ran into something confusing when using gdal-2.2.0 to generate Cloud Optimized GeoTIFFs following the instructions at: https://trac.osgeo.org/gdal/wiki/CloudOptimizedGeoTIFF

Here's what I did:

1. Fetch an image:
env CPL_VSIL_CURL_ALLOWED_EXTENSIONS=tif GDAL_DISABLE_READDIR_ON_OPEN=YES VSI_CACHE=TRUE gdal_translate https://github.com/mapbox/rasterio/raw/master/tests/data/RGB.byte.tif rgb_byte_jpg.tif -co TILED=YES -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR

Not a cloud-optimized GeoTIFF as expected:

validate_cloud_optimized_geotiff.py  rgb_byte_jpg.tif
rgb_byte_jpg.tif is NOT a valid cloud optimized GeoTIFF : The file should have overviews


2. Add internal overviews:
gdaladdo -r average rgb_byte_jpg.tif 2 4 8 16 32
 
validate_cloud_optimized_geotiff.py  rgb_byte_jpg.tif

rgb_byte_jpg.tif is NOT a valid cloud optimized GeoTIFF : The offset of the first block of overview of index 3 should be after the one of the overview of index 4


3.  Translate the image again copying source overviews added above.

gdal_translate rgb_byte_jpg.tif rgb_byte_jpg_trans.tif -co TILED=YES -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR -co COPY_SRC_OVERVIEWS=YES

Now the image _is_ cloud-optimized.

validate_cloud_optimized_geotiff.py  rgb_byte_jpg_trans.tif
rgb_byte_jpg_trans.tif is a valid cloud optimized GeoTIFF


I expected the image to be "cloud optimized" at step 2.  Why do I need an additional translate?


Notes:

* I see similar behavior for COMPRESS=DEFLATE.
* Thinking that the default block size (256) was too big for the tiny 25x23 overview, I set this on the initial translate, but I see the same behavior:
 -co BLOCKXSIZE=16 -co BLOCKYSIZE=16 --config GDAL_TIFF_OVR_BLOCKSIZE 16
* gdal-2.2.0 configured with "--with-libtiff=internal"
* Compiler::
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.1.0 (clang-802.0.42)
Target: x86_64-apple-darwin16.5.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Thanks,
Pete

_______________________________________________
gdal-dev mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Creating Cloud Optimized GeoTIFFs

Even Rouault-2

On mercredi 10 mai 2017 14:41:44 CEST Peter Schmitt wrote:

> Hi,

>

> I ran into something confusing when using gdal-2.2.0 to generate Cloud

> Optimized GeoTIFFs following the instructions at:

> https://trac.osgeo.org/gdal/wiki/CloudOptimizedGeoTIFF

>

> Here's what I did:

>

> 1. Fetch an image:

> env CPL_VSIL_CURL_ALLOWED_EXTENSIONS=tif GDAL_DISABLE_READDIR_ON_OPEN=YES

> VSI_CACHE=TRUE gdal_translate

> https://github.com/mapbox/rasterio/raw/master/tests/data/RGB.byte.tif

> rgb_byte_jpg.tif -co TILED=YES -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR

>

> Not a cloud-optimized GeoTIFF as expected:

>

> validate_cloud_optimized_geotiff.py rgb_byte_jpg.tif

> rgb_byte_jpg.tif is NOT a valid cloud optimized GeoTIFF : The file should

> have overviews

>

>

> 2. Add internal overviews:

> gdaladdo -r average rgb_byte_jpg.tif 2 4 8 16 32

>

> validate_cloud_optimized_geotiff.py rgb_byte_jpg.tif

>

> rgb_byte_jpg.tif is NOT a valid cloud optimized GeoTIFF : The offset of the

> first block of overview of index 3 should be after the one of the overview

> of index 4

>

>

> 3. Translate the image again copying source overviews added above.

>

> gdal_translate rgb_byte_jpg.tif rgb_byte_jpg_trans.tif -co TILED=YES -co

> COMPRESS=JPEG -co PHOTOMETRIC=YCBCR -co COPY_SRC_OVERVIEWS=YES

>

> Now the image _is_ cloud-optimized.

>

> validate_cloud_optimized_geotiff.py rgb_byte_jpg_trans.tif

> rgb_byte_jpg_trans.tif is a valid cloud optimized GeoTIFF

>

>

> I expected the image to be "cloud optimized" at step 2. Why do I need an

> additional translate?

 

Peter,

 

Because gdaladdo will add the overview IFD at the end of the file, whereas in the definition of cloud optimized GeoTIFF, they must be all at the beginning of the file so as to be efficiently fetchable. And that can only be done with gdal_translate -co COPY_SRC_OVERVIEWS=YES

To avoid quality loss you should only use JPEG compression for the final gdal_translate stage.

 

Even

 

 

 

--

Spatialys - Geospatial professional services

http://www.spatialys.com


_______________________________________________
gdal-dev mailing list
[hidden email]
https://lists.osgeo.org/mailman/listinfo/gdal-dev
Loading...