GeoTIFF and COG: Raster Formats for GIS and Remote Sensing
GeoTIFF is the most widely used raster format in the GIS world. Satellite imagery, digital elevation models, temperature maps, classification results — all of these are most commonly stored in GeoTIFF. And its cloud-native evolution COG (Cloud Optimized GeoTIFF) is changing the approach to working with large raster datasets.
What is GeoTIFF
GeoTIFF is an extension of the TIFF format that embeds geographic referencing directly in the file metadata. Each pixel of the image corresponds to specific coordinates on Earth.
GeoTIFF metadata includes:
- Coordinate system — WGS 84, UTM zone, any projection from the EPSG database.
- Georeferencing — coordinates of the upper-left corner and pixel size in meters/degrees.
- Transformation — affine matrix for converting pixel coordinates to geographic ones.
- NoData value — which pixel value means "no data" (usually -9999 or 0).
Typical applications:
- Satellite imagery (Sentinel-2, Landsat, Planet).
- Digital elevation models (SRTM, ALOS, Copernicus DEM).
- Analysis results: NDVI, land cover classification, flood maps.
- Raster maps for printing or web publication.
Cloud Optimized GeoTIFF (COG)
A regular GeoTIFF requires downloading the entire file to work with it. A satellite image can weigh 500 MB — 10 GB. COG solves this problem.
COG is a GeoTIFF with a special internal structure:
- Internal tiles (usually 256x256 or 512x512 pixels) instead of row-by-row storage.
- Overviews (pyramid of reduced copies) for fast viewing at small scales.
- HTTP Range Requests — the client requests only the needed tiles without downloading the whole file.
# Create COG from regular GeoTIFF using GDAL
gdal_translate input.tif output_cog.tif \
-of COG \
-co COMPRESS=DEFLATE \
-co TILING_SCHEME=GoogleMapsCompatible \
-co OVERVIEW_RESAMPLING=BILINEAR
The result can be hosted on S3 or any HTTP server and read through QGIS, GDAL, or rio-tiler without downloading.
Working with GeoTIFF in QGIS and GDAL
QGIS
Simply drag and drop a GeoTIFF into the QGIS window — the program will automatically detect the projection and display the raster. For styling, use layer properties: pseudocolor, histogram, transparency.
For COG on a remote server, use Layer -> Add Layer -> Add Raster Layer, then specify the URL:
/vsicurl/https://example.com/data/elevation.tif
GDAL (Command Line)
# File information
gdalinfo moscow_map.tif
# Reproject to UTM zone 37N
gdalwarp -t_srs EPSG:32637 input.tif output_utm.tif
# Clip by bbox
gdal_translate -projwin 37.5 55.8 37.7 55.7 input.tif crop.tif
# Convert to COG
gdal_translate input.tif output.tif -of COG -co COMPRESS=LZW
# Statistics
gdalinfo -stats elevation.tif
Python (rasterio)
import rasterio
with rasterio.open('map.tif') as src:
print(f"CRS: {src.crs}")
print(f"Bounds: {src.bounds}")
print(f"Resolution: {src.res}")
data = src.read(1) # first band
Exporting Raster Maps from OSM
On osm2cdr.ru you can export an OpenStreetMap map as a raster image with geographic referencing:
- GeoTIFF — standard raster with CRS metadata. Opens in any GIS.
- COG — cloud-optimized version for CDN hosting and HTTP access.
- TIFF — plain image without referencing (for design and printing).
Select the area, map style (from 20 available styles), and resolution. The service will render the map using QGIS headless and return a ready GeoTIFF with correct projection.
GeoTIFF and COG are the foundation of raster geoinformatics. Export maps at osm2cdr.ru and work with them in QGIS, GDAL, Python, or any other tool.