It validates the TIF and convert it into COG compliant using gdal. Following are the Use-Cases kept in mind while designing:
- Large TIF that cannot be fit into memory
- Reading data block by block, so can be run of even low memory server
- Supports Multiband TIFs
- 3-4 Band uint8 TIF (Orthomosaic)
- Building pyramids if not available (This will improve rendering speed)
- Compressing data
- Compressing to the same compression format as the original TIF. If original TIF was not compressed then LZW lossless compression is used to compress.
- Tile whole into 256x256 smaller blocks internally
It will validate tiff for COG format.
It has the actual converter function which converts tifs into COG format
- Multi-core processing for faster results.
How to Run
- Inside python console
import cogconverter as cog import gdal path_tif = 'sentinel2.tif' path_output = 'sentinel2_cog.tif' coordinate = 'EPSG:4326' intermediate_foramt = 'VRT' # If data is in TIF format ds = gdal.Open(path) <!-- If data is in another format, JP2 and other format have litte unknown issues, so we are following this pipeline to convert is into first VRT then procesing. --> ds = gdal.Warp('', path, dstSRS=coordinate, format=intermediate_foramt) ds1 = cog.converter.convert2blocksize(ds, path_output) ds1.FlushCache() ds1 = None ds = None
You can also run it as following.
python converter.py -p data/non_cog.tif -o data/cog.tif python validator.py -p data/cog.tif