Hey all, just wanted to share some progress. I created a project that is capable of asynchronously reading COG tiles. It extends TIFFImageReader and overrides the read method to build a collection of information for all tiles that need to be read, then determines the byte ranges for groups of contiguous tiles. The tiles are read using HTTP range requests and stored in-memory via an ImageInputStream implementation that simply uses a MemoryCacheImageInputStream as a delegate. Additionally, the project provides a caching image input stream that uses ehcache to cache each tile. I would eventually like to expand this to support various cloud platform backends (implementing the RangeReader interface), but for now it's just HTTP. I can provide more info/details if desired. The repository is available here:
https://github.com/joshfix/cog-image-reader Additionally, I have a project that is basically copied from the s3-geotiff project, but implements the Azure library to read from Azure blob storage: https://github.com/joshfix/azure-geotiff And finally, a GDAL-based reader that accepts VFS paths. This project cherry picks (and thus duplicates) a lot of code from a lot of places in GeoTools and imageio-ext, so contributing this might be ugly. It works on its own, but when used to build mosaics, there seem to be nodata/transparency issues. It is available here: https://github.com/joshfix/gdal-vfs-reader Any feedback would be appreciated, and I'd be happy to contribute anything that the community might be interested in. Josh
_______________________________________________ GeoTools-Devel mailing list GeoTools-Devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/geotools-devel