Cloud-native formats
COG, Zarr, GeoParquet and STAC: reading the part you need over the network instead of downloading the file.
A cloud-native format is an ordinary format with an internal layout a reader can seek into, plus a server that honours HTTP range requests. That combination changes the default move from "download the file, then filter" to "ask for the bytes that matter".
COG does it with internal tiles and overviews, Zarr with chunks in separate objects, GeoParquet with row groups and a bounding-box column, and STAC is the catalogue that lets you find the right file before fetching any of it. The trade is real: these formats are written once and read many times, and none of them likes being edited in place.
Below: the concepts cover what each format stores and why the layout matters; the how-to guides read, write and convert; and the fixes are the reads that come back slow, empty or unexpectedly expensive.
🧭 Start with the concepts
The ideas the how-to guides below assume you already have.
- Cloud-Native Geospatial Explained: Why the Format Became the API
- Cloud-Optimised GeoTIFF Explained: Tiles, Overviews and Range Requests
- Lazy Loading Explained: Why xarray Reads Nothing Until You Ask
- Chunked Arrays and Zarr Explained
- GRIB, NetCDF or Zarr: Choosing a Format for Gridded Data
- Metadata standards compared: ISO 19115, STAC and Frictionless
⚙️ Then do the task
Step-by-step walkthroughs with code you can copy and adapt.
- How to Read a COG from a URL Without Downloading the Whole File
- How to Write a Cloud-Optimised GeoTIFF in Python
- How to Read Spatial Data from S3 and Other Object Storage
- How to Turn a STAC Search into an xarray Data Cube
- How to Choose Chunk and Tile Sizes That Actually Help
- How to Write Partitioned GeoParquet and Query It with Filters
Show every how-to guide in this topic
- How to Scale a GeoPandas Job with dask-geopandas
- How to Render Raster Tiles from a COG in Python
- How to Query Remote GeoParquet over HTTP with DuckDB
- How to Query Hive-Partitioned GeoParquet in DuckDB
- How to Serve Raster Tiles from a COG with TiTiler
- How to build a STAC item for your own raster
- How to Read ESA WorldCover Tiles for an Area in Python
🔧 When it breaks
The errors this topic produces, with the cause explained rather than just the command.
Learning paths through this topic
A curated route rather than a list — the guides in the order that builds on itself.
Related topics
Subjects that keep coming up alongside this one, most overlap first.