About

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.

Why Cloud Optimized GeoTIFF?

  • 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 COG’s 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 GeoTIFF’s just like normal GeoTIFF’s, so data providers need only produce one format

How does it work?

Cloud Optimized GeoTIFF relies on two complementary pieces of technology.

The first is the ability of a GeoTIFF to not only store the raw pixels of the image, but to also organize those pixels in particular ways. The second is HTTP GET range requests, that let clients ask for just the portions of a file that they need. Together these enable fully online processing of data by COG-aware clients, as they can stream the right parts of the GeoTIFF as they need it, instead of having to download the whole file.

Get Started

There are a variety of ways to get started. Data Providers can start to make imagery available as Cloud Optimized GeoTiffs. Developers can leverage GDAL's VSICurl with COG Data. And Users can find software and data providers who use COG today.

Software

COG is rapidly maturing, with a number of new software libraries and tools coming online.

  • RasterFoundry
  • GeoServer
  • GDAL
  • QGIS
  • Google Earth Engine

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 GeoTIFF's 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 GeoTIFF's, 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 GeoTIFF's.
  • Rio-tiler is a Rasterio plugin to read mercator tiles from Cloud Optimized GeoTIFF's. Used to create serverless tiles server with lambda-tiler.
  • Rio-glui Rasterio plugin that helps explore Cloud Optimized geotiff on your web-browser.
  • Google Earth Engine now supports output of COG's 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 GeoTIFF's 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 lightweigh library which 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 GeoTIFF's using GeoTrellis.
  • Farmshots builds agriculture analytics on top of Planet’s Cloud Optimized GeoTIFF’s, 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 COG files. It ensures COG files meet required specifications and provides detailed error messages for correction. Ideal for Java developers.

Libraries

  • GDAL was the project that started Cloud Optimized GeoTIFF's, by leveraging the vsicurl driver, so both reading and writing COG's is well supported. See the GDAL Wiki for how to read COG files 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 geotiff access. See their Advanced Rasterio Features Notebook for truly excellent documentation on working with COG's.
  • GeoTrellis is a scalable Scala geospatial library, that can create and read Cloud Optimized GeoTIFF's. 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 COG's with the s3-geotiff module.
  • Apache Spatial Information System (SIS) is a Java geospatial library capable to read COG files 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 file url with /vsicurl/)

Most any software that relies on GDAL should support Cloud Optimized GeoTIFF's 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 COG's (links to documentation appreciated!).

Data Providers

There are many sources of Cloud Optimized GeoTIFF data, with more and more coming online all the time. If you have or know of a good source of COG data please let us know!

  • Planet
  • Maxar
  • QGIS
  • OGC
  • Mundi
  • OpenAerialMap stores all new imagery as Cloud Optimized GeoTIFF's, and also provides a service that takes uploaded data and turns it in to AWS S3 hosted COG's. 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 browser the data on their STAC Browser instance.
  • ISERV data from NASA has been made available by Radiant.Earth as cloud optimized geotiff. You can browser 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.