Cloud-Optimized GeoTIFF (COG)
Native support for streaming large raster datasets directly from cloud object storage. Reduce latency, eliminate full downloads, and scale spatial serving effortlessly.
What is Cloud-Optimized GeoTIFF?
Cloud-Optimized GeoTIFF (COG) is an extension to the GeoTIFF format that enables efficient access to tiles and metadata over HTTP. By organizing image data in a tiled pyramid structure with internal overviews, COG allows clients to request only the exact bytes needed for a specific zoom level or viewport using HTTP range requests.
This eliminates the need to download entire multi-gigabyte files, making it ideal for serverless architectures, cloud storage (S3, GCS, Azure Blob), and high-concurrency map serving.
GeoServer Integration
GeoServer leverages the Geotools COG module to provide:
- Transparent Coverage Store Support: Drop in COG files as if they were standard GeoTIFFs.
- Automatic Overview Detection: No manual preprocessing required.
- HTTP Range Request Optimization: GeoServer issues targeted byte-range requests to your storage backend.
- Parallel Block Fetching: Concurrent loading of adjacent tiles for smooth map panning.
- Metadata Streaming: Instant access to bounds, CRS, and statistics without full file reads.
GeoServer does not modify or convert your COG files. They remain read-only and fully compliant with the official Cloud Optimized GeoTIFF specification.
Configuration Guide
Setting up a COG layer in GeoServer follows the standard Coverage Store workflow, with a few cloud-specific optimizations recommended:
- Create Coverage Store: Point to your remote COG URL (S3, HTTP, or mounted storage).
- Layer Publishing: GeoServer auto-detects tiled structure and overviews.
- Storage Adapter: Enable cloud storage adapter for AWS S3 / Azure Blob / GCS.
Layer Parameters
Interpolate: Recommended for continuous data (DEM, imagery). Disable for categorical data.NumThreads: Controls concurrent block reads. Default: 4.Strict: Validates COG spec compliance. Enable for debugging.
Performance Tuning
COG performance depends heavily on internal tile structure and cloud network configuration. Optimize with these settings:
| Parameter | Recommended Value | Impact |
|---|---|---|
| Internal Block Size | 256x256 or 512x512 | Aligns with standard WMTS tile grids |
| Compression | DEFLATE or ZSTD | Balances transfer size & decode speed |
| Overviews | 4x4, 16x16, 64x64 | Ensures fast low-zoom rendering |
| Cache-Control | public, max-age=31536000 | Leverages CDN/edge caching effectively |
COG vs Traditional GeoTIFF
| Feature | Traditional GeoTIFF | Cloud-Optimized GeoTIFF |
|---|---|---|
| Access Pattern | Sequential / Full file | Random access via HTTP ranges |
| Cloud Storage Friendly | No (slow, expensive) | Yes (pay-per-byte) |
| Overview Generation | External or manual | Embedded internal overviews |
| GeoServer Latency | High on first load | Sub-100ms tile delivery |
| Concurrent Requests | File locking / bottleneck | Parallel block fetching |
Best Practices
- Pre-tile in the cloud: Use
gdal_translate -co TILED=YES -co BLOCKXSIZE=256before ingestion. - Use CDN: Place CloudFront, Cloudflare, or Azure CDN in front of your COG storage.
- Enable ZSTD: Better compression ratios than DEFLATE with comparable decode speeds.
- Monitor Byte Requests: Track S3 206 responses to verify range request optimization is active.
- Avoid COG for small files: Under 100MB, traditional GeoTIFF may perform equally well with less complexity.
Frequently Asked Questions
Ready to Stream Your Rasters?
Deploy COG-powered layers in minutes. Get infrastructure templates, performance guides, and expert support.
View Full Documentation Contact Engineering