// the find
georust/gdal
Rust bindings for GDAL
Safe Rust bindings for GDAL, the C library that reads and writes virtually every geospatial raster and vector format in existence. If you need to process GeoTIFFs, Shapefiles, GeoJSON, NetCDF, or any of GDAL's 200+ other formats from Rust without dropping into raw FFI, this is the only real option. Part of the georust ecosystem alongside crates like geo, proj, and rasterio equivalents.
Layered design is correct: gdal-sys handles raw bindgen output, gdal wraps it in safe idiomatic types — you can escape to gdal-sys for unbound APIs without forking anything. Prebuilt bindings for GDAL 3.8–3.12 across four targets mean most users never need bindgen at build time, which cuts compile times significantly. The gdal-src subcrate lets you compile GDAL from source as a Cargo dependency, solving the 'GDAL not installed' problem on CI and Windows. Vector ops include geo-types conversions, so you can move data between this and the rest of the georust ecosystem without manual translation.
Coverage is uneven — the README admits docs are a work in progress and tells you to read the C/C++ GDAL docs instead, which is a real friction point when you're trying to figure out parameter semantics. Thread safety is partially handled (there's a thread_safe.rs) but GDAL's global state and driver registration are inherently tricky; concurrent access patterns are not clearly documented. Only GDAL 3.8+ is supported at the high-level API layer, which will break anyone on Ubuntu 22.04 (ships GDAL 3.4) without pulling in gdal-src. With 440 stars and a niche audience, some less-used format drivers and advanced APIs like multi-dimensional rasters have thin or no Rust coverage and you'll need to reach through gdal-sys yourself.