explaingit

osgeo/gdal

5,909C++Audience · developerComplexity · 4/5LicenseSetup · hard

TLDR

GDAL is an open-source library that reads and writes dozens of geospatial file formats, satellite images, elevation maps, shapefiles, and more, giving any app a single interface to work with location data.

Mindmap

mindmap
  root((GDAL))
    Raster Formats
      GeoTIFF
      Elevation grids
      Satellite imagery
    Vector Formats
      Shapefiles
      Points and lines
      Polygons
    Format Translation
      Government formats
      Scientific formats
      Commercial formats
    Platform Support
      Linux and macOS
      Windows
      Android
    Ecosystem
      GIS software
      Docker images
      NumFOCUS backed
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Read satellite imagery or elevation maps in your app without writing format-specific parsing code.

USE CASE 2

Convert geospatial files between formats, such as Shapefile to GeoJSON or GeoTIFF to PNG.

USE CASE 3

Build a mapping or spatial analysis tool on top of a battle-tested, widely supported library.

USE CASE 4

Run geospatial data processing pipelines in Docker containers on any major operating system.

Tech stack

C++GeoTIFFShapefileDockerCMake

Getting it running

Difficulty · hard Time to first run · 1h+

Build instructions are in BUILDING.md. Official Docker images are the easiest way to get started. Python bindings via pip install gdal require matching native library versions.

MIT license, free to use, modify, and distribute in any project, including commercial ones, with no restrictions.

In plain English

GDAL, which stands for Geospatial Data Abstraction Library, is an open-source software library for reading and writing geospatial data. Geospatial data is any information that is tied to a location on Earth, such as satellite imagery, elevation maps, road networks, or city boundary polygons. GDAL handles two broad categories of this data: raster formats (grid-based data like images and elevation grids) and vector formats (geometric shapes like points, lines, and polygons). The library acts as a translator. There are dozens of different file formats used across the geospatial industry, from common ones like GeoTIFF and Shapefile to specialized ones used by government agencies, scientific instruments, and commercial mapping software. GDAL provides a single consistent programming interface so that software built on top of it can read and write many of these formats without needing separate code for each one. It is written in C++ and is released under the MIT license. GDAL is widely used as foundational infrastructure in geographic information systems (GIS) software. Many popular mapping and spatial analysis tools depend on it under the hood. The project is fiscally sponsored by NumFOCUS, a non-profit organization that supports open-source scientific computing projects, and accepts tax-deductible donations through them. The GitHub repository README is brief and delegates all detailed documentation to the main project website at gdal.org. Build instructions are in a separate file called BUILDING.md, and contribution guidelines are in CONTRIBUTING.md. Official Docker images are available for running GDAL in containers. The project runs on Linux, macOS, Windows, and Android.

Copy-paste prompts

Prompt 1
How do I open a GeoTIFF file with GDAL in Python and read its pixel values?
Prompt 2
What GDAL command converts a Shapefile to GeoJSON on the command line?
Prompt 3
How do I reproject a raster dataset from one coordinate system to another using GDAL?
Prompt 4
Which GDAL driver should I use to read elevation data from an HGT or DEM file?
Prompt 5
How do I build GDAL from source on Ubuntu and install it so Python can find it?
Open on GitHub → Explain another repo

← osgeo on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.