Expand description
§OxiGDAL — Pure Rust Geospatial Data Abstraction Library
OxiGDAL is the Rust-native alternative to GDAL, providing a comprehensive geospatial data abstraction layer with zero C/Fortran dependencies. 100% Pure Rust.
§Quick Start
[dependencies]
oxigdal = "0.1" # includes GeoTIFF, GeoJSON, Shapefile by defaultuse oxigdal::Dataset;
let drivers = oxigdal::drivers();
println!("Enabled drivers: {:?}", drivers);
println!("OxiGDAL version: {}", oxigdal::version());§Feature Flags
| Feature | Default | Description |
|---|---|---|
geotiff | ✅ | GeoTIFF raster format (COG support) |
geojson | ✅ | GeoJSON vector format |
shapefile | ✅ | ESRI Shapefile |
geoparquet | ❌ | GeoParquet (Apache Arrow columnar) |
netcdf | ❌ | NetCDF scientific data format |
hdf5 | ❌ | HDF5 hierarchical data format |
zarr | ❌ | Zarr cloud-native arrays |
grib | ❌ | GRIB meteorological data format |
stac | ❌ | SpatioTemporal Asset Catalog |
terrain | ❌ | Terrain/elevation data |
vrt | ❌ | Virtual Raster Tiles |
flatgeobuf | ❌ | FlatGeobuf vector format |
jpeg2000 | ❌ | JPEG2000 raster format |
full | ❌ | All formats above |
cloud | ❌ | Cloud storage (S3, GCS, Azure) |
proj | ❌ | CRS transformations (Pure Rust proj) |
algorithms | ❌ | Raster/vector algorithms |
analytics | ❌ | Geospatial analytics |
streaming | ❌ | Stream processing |
ml | ❌ | Machine learning integration |
gpu | ❌ | GPU-accelerated processing |
server | ❌ | OGC-compliant tile server |
temporal | ❌ | Temporal/time-series analysis |
§GDAL Compatibility
OxiGDAL aims to provide familiar concepts for GDAL users:
| GDAL (C/C++) | OxiGDAL (Rust) |
|---|---|
GDALOpen() | Dataset::open() |
GDALGetRasterBand() | dataset.raster_band(n) |
GDALGetGeoTransform() | Dataset::geotransform() |
GDALGetProjectionRef() | Dataset::crs() |
GDALAllRegister() | drivers() |
GDALVersionInfo() | version() |
GDALWarp() | oxigdal::algorithms::warp() (feature algorithms) |
ogr2ogr | oxigdal-cli convert (crate oxigdal-cli) |
§Architecture
┌──────────────────────────────────────────────────┐
│ oxigdal (this crate) — Unified API │
│ Dataset::open() → auto-detect format │
├──────────────────────────────────────────────────┤
│ Drivers (feature-gated) │
│ ┌──────────┐ ┌──────────┐ ┌─────────────┐ │
│ │ GeoTIFF │ │ GeoJSON │ │ Shapefile │ ... │
│ └──────────┘ └──────────┘ └─────────────┘ │
├──────────────────────────────────────────────────┤
│ oxigdal-core — Types, Buffers, Error, I/O │
└──────────────────────────────────────────────────┘§Crate Ecosystem
OxiGDAL is a workspace of 65+ crates. This oxigdal crate serves as
the unified entry point. Individual crates can also be used directly:
# Use the unified API (recommended for most users)
oxigdal = { version = "0.1", features = ["full", "cloud", "proj"] }
# Or pick individual crates for minimal dependencies
oxigdal-core = "0.1"
oxigdal-geotiff = "0.1"§Pure Rust — No C/Fortran Dependencies
Unlike the original GDAL which requires C/C++ compilation and system libraries (PROJ, GEOS, etc.), OxiGDAL is 100% Pure Rust:
- No
bindgen, nocc, nocmake - Cross-compiles to WASM, embedded, mobile
cargo add oxigdal— that’s it
Part of the COOLJAPAN ecosystem.
Re-exports§
pub use oxigdal_core as core_types;pub use oxigdal_geotiff as geotiff;geotiffpub use oxigdal_geojson as geojson;geojsonpub use oxigdal_shapefile as shapefile;shapefile
Structs§
- Bounding
Box - A 2D bounding box in any coordinate system
- Dataset
- Unified dataset handle — the central abstraction (analogous to
GDALDataset). - Dataset
Info - Basic dataset metadata — analogous to
GDALDatasetinfo. - GeoTransform
- An affine transformation matrix for converting between pixel and world coordinates
- Raster
Metadata - Raster metadata
Enums§
- Dataset
Format - Detected format of a geospatial dataset.
- OxiGdal
Error - The main error type for
OxiGDAL - Raster
Data Type - Raster data types representing pixel values
Functions§
- driver_
count - Number of registered (enabled) format drivers.
- drivers
- List all enabled format drivers.
- version
- OxiGDAL version string.
Type Aliases§
- Result
- The main result type for
OxiGDALoperations