An idiomatic Go wrapper for the GDAL library, providing efficient raster and vector geospatial data processing.
Godal is a Go binding for the GDAL (Geospatial Data Abstraction Library) that provides an idiomatic Go interface for working with geospatial raster and vector data. It simplifies GDAL's complex C API into Go-friendly patterns, enabling Go developers to perform geospatial operations efficiently without dealing with low-level CGO overhead. The project focuses on wrapping GDAL's capabilities in a way that feels natural to Go developers while maintaining performance.
Go developers working with geospatial data, such as those building applications for remote sensing, GIS analysis, or map processing. It is particularly suited for developers who need to leverage GDAL's powerful raster and vector data handling within a Go codebase.
Developers choose Godal over direct GDAL bindings because it offers an idiomatic Go API with efficient CGO calls that minimize overhead, option-based parameters for flexibility, and integration with cloud storage via VSI handlers. Its raster functionality is stable and nearly complete, providing a reliable solution for raster data processing in Go.
golang wrapper for github.com/OSGEO/gdal
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Functions return results and errors in standard Go fashion, ensuring clean code, as shown in examples where Open returns a dataset and error, with valid results only on nil error.
Groups frequent GDAL calls into single CGO functions to minimize cross-language overhead, improving speed for operations like reading dataset structure and band overviews.
Exposes a VSI handler that treats io.ReaderAt as filenames, with built-in support for URIs like gs:// via osio, enabling seamless access to remote data sources.
The raster side is nearly complete and stable, providing reliable tools for processing satellite imagery, elevation models, and other raster datasets without API churn.
Vector and spatial-referencing features are far from complete and may undergo backwards-incompatible API changes, making it risky for vector-heavy applications.
Requires GDAL >3.0 and its headers installed on the system, adding setup complexity, especially in non-standard environments where PKG_CONFIG_PATH must be configured.
Being not feature complete, the API might evolve with breaking changes until essential functionality is covered, potentially disrupting existing codebases.