oxigdal-cli 0.1.3

Command-line interface for OxiGDAL geospatial operations
oxigdal-cli-0.1.3 is not a library.

OxiGDAL CLI

Command-line interface for OxiGDAL geospatial operations. A Pure Rust alternative to GDAL utilities.

Installation

cargo install oxigdal-cli

Or build from source:

git clone https://github.com/cool-japan/oxigdal
cd oxigdal
cargo build --release -p oxigdal-cli

The binary will be available at target/release/oxigdal.

Commands

oxigdal info - Display File Information

Display metadata, geometry info, CRS, and statistics for raster and vector files.

# Basic info
oxigdal info input.tif

# With detailed statistics
oxigdal info input.tif --stats

# Show CRS details
oxigdal info input.tif --crs

# JSON output
oxigdal info input.tif --format json

Options:

  • --stats - Show detailed statistics
  • --compute-minmax - Compute min/max values
  • --metadata - Show all metadata
  • --crs - Show CRS details
  • --bands - Show band/layer information

oxigdal convert - Format Conversion

Convert between geospatial formats with compression and tiling options.

# Basic conversion
oxigdal convert input.tif output.tif

# Create Cloud-Optimized GeoTIFF
oxigdal convert input.tif output.cog --cog -t 256 -c lzw

# Convert with specific compression
oxigdal convert input.tif output.tif -c deflate

# Create COG with overviews
oxigdal convert input.tif output.cog --cog --overviews 4

Options:

  • -f, --format <FORMAT> - Output format (auto-detected from extension)
  • -t, --tile-size <SIZE> - Tile size for COG output (default: 512)
  • -c, --compression <METHOD> - Compression (none, lzw, deflate, zstd, jpeg)
  • --compression-level <LEVEL> - Compression level (1-9)
  • --cog - Create Cloud-Optimized GeoTIFF
  • --overviews <NUM> - Number of overview levels
  • --overwrite - Overwrite existing output file
  • --progress - Show progress bar (default: true)

oxigdal translate - Subset and Resample

Subset rasters by extent or pixel coordinates and resample to different resolutions.

# Subset by bounding box
oxigdal translate input.tif output.tif --projwin -180 -90 180 90

# Subset by pixel coordinates
oxigdal translate input.tif output.tif --srcwin 0 0 1000 1000

# Resize to specific dimensions
oxigdal translate input.tif output.tif --outsize-x 500 --outsize-y 500

# Resample with bilinear interpolation
oxigdal translate input.tif output.tif -r bilinear --outsize-x 1000

# Select specific bands
oxigdal translate input.tif output.tif -b 1,2,3

Options:

  • --outsize-x <WIDTH> - Output width in pixels
  • --outsize-y <HEIGHT> - Output height in pixels
  • --projwin <MINX MINY MAXX MAXY> - Subset by bounding box
  • --srcwin <XOFF YOFF XSIZE YSIZE> - Subset by pixel coordinates
  • -b, --bands <BANDS> - Select specific bands (comma-separated, 1-indexed)
  • -r, --resampling <METHOD> - Resampling method (nearest, bilinear, bicubic, lanczos)
  • --overwrite - Overwrite existing output file

oxigdal warp - Reprojection

Reproject rasters to different coordinate reference systems.

# Reproject to Web Mercator
oxigdal warp input.tif output.tif -t EPSG:3857

# Reproject with specific source CRS
oxigdal warp input.tif output.tif -s EPSG:4326 -t EPSG:3857

# Reproject and resize
oxigdal warp input.tif output.tif -t EPSG:3857 --ts-x 1000 --ts-y 1000

# Set target resolution
oxigdal warp input.tif output.tif -t EPSG:3857 --tr 0.01

# Reproject with Lanczos resampling
oxigdal warp input.tif output.tif -t EPSG:3857 -r lanczos

Options:

  • -s, --s-srs <SRS> - Source CRS (EPSG code or WKT)
  • -t, --t-srs <SRS> - Target CRS (EPSG code or WKT) [Required]
  • --ts-x <WIDTH> - Output width in pixels
  • --ts-y <HEIGHT> - Output height in pixels
  • --tr <RESOLUTION> - Output resolution in target units
  • -r, --resampling <METHOD> - Resampling method (nearest, bilinear, bicubic, lanczos)
  • --te <MINX MINY MAXX MAXY> - Output bounds in target SRS
  • --overwrite - Overwrite existing output file

Full CRS reprojection is performed by oxigdal-proj (20+ projections, 1,000+ EPSG codes). Enable with the proj feature.

oxigdal calc - Raster Calculator

Perform mathematical operations on rasters (map algebra).

# Calculate NDVI
oxigdal calc output.tif -A nir.tif -B red.tif --calc="(A-B)/(A+B)"

# Multi-band calculation
oxigdal calc output.tif -A band1.tif -B band2.tif -C band3.tif --calc="A+B+C"

# With custom output type
oxigdal calc output.tif -A input.tif -B mask.tif --calc="A*B" --output-type float32

# Set no-data value
oxigdal calc output.tif -A input.tif --calc="A*2" --no-data -9999

Options:

  • -A, --input-a <FILE> - Input file A
  • -B, --input-b <FILE> - Input file B
  • -C, --input-c <FILE> - Input file C
  • -D, --input-d <FILE> - Input file D
  • --calc <EXPR> - Calculation expression [Required]
  • --no-data <VALUE> - No data value for output
  • --output-type <TYPE> - Output data type (uint8, uint16, uint32, int16, int32, float32, float64)
  • --overwrite - Overwrite existing output file

Supported Expressions:

  • NDVI: (A-B)/(A+B)
  • Full raster algebra DSL via Pest grammar (arithmetic, logical, conditional, per-band ops)

oxigdal validate - File Validation

Validate file format compliance and check for issues.

# Validate GeoTIFF
oxigdal validate input.tif

# Validate as COG
oxigdal validate input.tif --cog

# Validate GeoJSON
oxigdal validate input.geojson --geojson

# Strict validation
oxigdal validate input.tif --strict --verbose

# JSON output for CI/CD
oxigdal validate input.tif --cog --format json

Options:

  • --cog - Validate as Cloud-Optimized GeoTIFF
  • --geojson - Validate GeoJSON against specification
  • --strict - Check for common issues and best practices
  • -v, --verbose - Detailed validation report

Shell Completions

Generate shell completions for bash, zsh, fish, PowerShell, or elvish.

# Bash
oxigdal completions bash > ~/.local/share/bash-completion/completions/oxigdal

# Zsh
oxigdal completions zsh > ~/.zfunc/_oxigdal

# Fish
oxigdal completions fish > ~/.config/fish/completions/oxigdal.fish

# PowerShell
oxigdal completions powershell > oxigdal.ps1

Global Options

These options work with all commands:

  • -v, --verbose - Enable verbose output
  • -q, --quiet - Suppress all output except errors
  • --format <FORMAT> - Output format (text, json)
  • -h, --help - Print help information
  • -V, --version - Print version information

Examples

Create a Cloud-Optimized GeoTIFF

oxigdal convert input.tif output.cog \
    --cog \
    --tile-size 256 \
    --compression lzw \
    --overviews 5

Extract a subset and resize

oxigdal translate input.tif subset.tif \
    --projwin -122.5 37.5 -122.0 38.0 \
    --outsize-x 1000 \
    --outsize-y 1000 \
    --resampling bilinear

Calculate NDVI from Landsat bands

oxigdal calc ndvi.tif \
    -A landsat_band5.tif \
    -B landsat_band4.tif \
    --calc="(A-B)/(A+B)" \
    --output-type float32 \
    --no-data -9999

Validate COG compliance

oxigdal validate output.cog --cog --strict --verbose

Supported Formats

Raster Formats

  • GeoTIFF (.tif, .tiff) - Including Cloud-Optimized GeoTIFF (COG)
  • Zarr (.zarr) - Cloud-native chunked arrays v2/v3 (enable with --features zarr)

Vector Formats

  • GeoJSON (.json, .geojson)
  • Shapefile (.shp)
  • FlatGeobuf (.fgb)
  • GeoParquet (.parquet, .geoparquet)

Performance

OxiGDAL CLI is optimized for performance:

  • Pure Rust implementation (no C/Fortran dependencies)
  • SIMD vectorization for resampling operations
  • Parallel processing where applicable
  • Memory-efficient streaming for large files

Cross-Platform Support

OxiGDAL CLI runs on:

  • Linux (x86_64, aarch64)
  • macOS (Intel, Apple Silicon)
  • Windows (x86_64)

Contributing

Contributions are welcome! See the main OxiGDAL repository for guidelines.

License

Licensed under Apache-2.0. See LICENSE for details.

Authors

Copyright © COOLJAPAN OU (Team Kitasan)