Cloud Optimized GeoTIFF
A Cloud Optimized GeoTIFF (COG) is a regular GeoTIFF file, aimed at being hosted on a HTTP file server, with an internal organization that
enables more efficient workflows on the cloud. It does this by leveraging the ability of clients issuing
HTTP GET range
requests
to ask for just the parts of a file they need.
Efficient Imagery Data Access
COG-aware software can stream just the portion of data that it needs, improving processing times and creating real-time workflows previously not possible
Reduced Duplication of Data
Accessing COGs with cloud workflows enables diverse software to all access a single file online instead of needing to copy and cache the data
Legacy Compatibility
Traditional GIS software is able to treat Cloud Optimized GeoTIFFs just like normal GeoTIFFs, so data providers need only produce one format
Tools
QGIS
3.2 has stellar COG support, with an option to select online files in the data import, including authentication for private data (tutorial coming soon). Older versions can read Cloud Optimized GeoTIFFs using Virtual Raster Builder with a vsicurl file format to refer to the online URL. See the
tutorial
for details.
COG-Explorer
is a browser app to visualize Cloud Optimized GeoTIFFs, for example from the Landsat-8 archive on S3, based on
geotiff.js
Marblecutter
serves web tiles from Cloud Optimized GeoTIFFs, completely on the fly. You can see it in action at
OpenAerialMap
, as all tiles are rendered by an early version.
tiles.rdnt.io
is an instance of Marblecutter running on
lambda
, hosted by Radiant.Earth, that anyone can use. It powers the map at
cogeo.org/map
Rio-cogeo
is a Rasterio plugin to create and validate Cloud Optimized GeoTIFFs.
Rio-tiler
is a Rasterio plugin to read mercator tiles from Cloud Optimized GeoTIFFs. Used to create serverless tile servers with
lambda-tiler
TiTiler
is a lightweight service for creating map tiles from Cloud-Optimized GeoTIFFs. It's a set of Python modules that lets you build your own dynamic tile services using FastAPI.
maplibre-cog-protocol
is a plugin for
MapLibre GL JS
that enables displaying Cloud Optimized GeoTIFFs on an interactive MapLibre map without an intermediate server.
Rio-glui
Rasterio plugin that helps explore Cloud Optimized GeoTIFF in your web browser.
Google Earth Engine
now supports
output
of COGs from any Earth Engine operation, see:
Exporting - Configuration Parameters
. Earth Engine supports reading COG data hosted on Google Cloud Storage, see:
COG-backed Earth Engine Assets
GRASS GIS
can read Cloud Optimized GeoTIFFs by using Virtual Raster Builder with a vsicurl file format to refer to the online URL and registration within GRASS GIS using
r.external
Radiant.Earth
is hosting a
Cloud Optimized GeoTIFF validator
. You can also get the
source code
, created by
Even Rouault
with support from
Planet
COGDumper
is an open source python library to read COG's internal tiles. It's a lightweight library that doesn't need GDAL, and can be installed with
pip install cogdumper
Maxar
delivers tiled COGs of their satellite imagery through their
Analysis Ready Data
(ARD) product line. See their
blog post
for more information.
Monteverdi
, the Orfeo ToolBox image viewer, can navigate in remote Cloud Optimized GeoTIFF out of the box.
GeoServer
can leverage COGs by using the
COG Support
community module.
RasterFrames
brings the power of Spark DataFrames to geospatial raster data, and is able to read Cloud Optimized GeoTIFFs using
GeoTrellis
Farmshots
builds agriculture analytics on top of Planet’s Cloud Optimized GeoTIFFs, pulling in just the needed field data and serving it up live to their customers.
Earth Observing System
’s Engine and Land Viewer are both able to leverage Cloud Optimized GeoTIFFs for live web tile serving and on the fly band math.
Geopera
’s Imagery Portal utilizes Cloud Optimized GeoTIFFs for quick access to specific subsets of large datasets, reducing bandwith and allowing faster rendering and processing times.
Terracotta
is a flexible, open-source tile server that you can use to view and serve your Cloud Optimized GeoTIFFs as web layers. Supports serverless architectures and serving COGs from S3 buckets.
WebODM
is a user-friendly, extendable application and API for processing aerial imagery capable of serving Cloud Optimized GeoTIFFs.
ODM
is a command line toolkit to process aerial imagery and is capable of generating Cloud Optimized GeoTIFFs as 2D outputs.
GeoTiffCOG C#
is a C# Library for querying GeoTIFF files, including Cloud Optimized GeoTIFFs.
Cogger
is a command line utility and library that produces a COG from a tiled GeoTIFF. It works by shuffling the original GeoTIFF file's bytes, and is therefore very fast as it does not induce an imagery recompression. Cogger is written in go, cross-platform, and does not depend on GDAL.
NextGIS
is a full SaaS stack of geospatial software: desktop, web and mobile. NextGIS Web (server) is able to create and serve Cloud Optimized GeoTIFFs. NextGIS Connect (QGIS plugin) is able to upload to NextGIS Web and add COGs back to QGIS in one click (with the style if any).
Details
cog-validator-java
is a Java-based tool for validating COGs. It ensures COGs meet required specifications and provides detailed error messages for correction. Ideal for Java developers.
Libraries
GDAL
was the project that started Cloud Optimized GeoTIFF, by leveraging the
vsicurl driver
, so both reading and writing COGs is well supported. See the
GDAL Wiki
for how to read COGs with GDAL.
geotiff.js
is a small library to parse TIFF files for visualization or analysis, including Cloud Optimized GeoTIFFs. It is written in pure JavaScript, and is usable in both the browser and node.js applications.
Rasterio
wraps the powerful features of GDAL in idiomatic Python functions and classes. Their latest release
includes a number of features
to optimize Cloud Optimized GeoTIFF access. See their
Advanced Rasterio Features Notebook
for truly excellent documentation on working with COGs.
GeoTrellis
is a scalable Scala geospatial library, that can create and read Cloud Optimized GeoTIFFs. Head over to the
documentation.
And check out
Eugene Cheipesh's
FOSS4G-NA 2018 talk on COGs.
GeoTools
is the leading Java geospatial library, and it supports COGs with the
s3-geotiff
module.
Apache Spatial Information System (SIS)
is a Java geospatial library capable of reading COGs over HTTP or S3. COG images can be part of a chain of operations such as raster reprojection, which will read only the tiles requested by the final output.
Orfeo ToolBox
All Orfeo ToolBox applications can read Cloud Optimized GeoTIFFs through GDAL (simply prefix the file url with /vsicurl/)
Most any software that relies on GDAL should support Cloud Optimized GeoTIFFs without much effort. Things like
MapServer, Safe FME, ArcGIS and ENVI jump to mind. The fact that they and others aren't on this list mostly means
no one has tested and got them working yet. Feel free to submit a
pull request
to add any software confirmed to support COGs (links to documentation appreciated!).
OpenAerialMap
stores all new imagery as Cloud Optimized GeoTIFFs, and also provides a service that takes uploaded data and turns it in to AWS S3 hosted COGs. The only constraint is that data uploaded must be openly licensed.
Planet
provides all its data (from RapidEye, PlanetScope and soon SkySat satellites) as Cloud Optimized GeoTIFFs.
DigitalGlobe
’s
GBDX
data is available as Cloud Optimized GeoTIFF, for all processing done on the platform. And their
blog post
explains how IKONOS and NOAA’s VIIRS night lights data are available as COG
CBERS on AWS has converted all
CBERS-4
data to Cloud Optimized GeoTIFF.
SpaceNet
data is all available as COG. You can browse the data on their
STAC Browser instance
ISERV
data from NASA has been made available by
Radiant.Earth
as a Cloud Optimized GeoTIFF. You can browse the data on their
STAC Browser instance
Mundi
offers a wide range of EO data as Cloud Optimized GeoTIFF. A collection of
Copernicus Sentinel-1 GRD
files is available as COG, and Mundi provides other collections on demand.
As a part of the
OGC
standard, adoption of Cloud Optimized GeoTIFFs increases over time, allowing more software and tools to support the standard natively. Here is the standard:
OGC COG Specification
. For more details, visit the
OGC GitHub Profile
US