oxigdal-proj
Pure Rust coordinate transformation and projection support.
Overview
oxigdal-proj provides coordinate reference system (CRS) operations and transformations for OxiGDAL, implemented in pure Rust with an embedded EPSG database.
Features
- ✅ EPSG code database (10,000+ definitions)
- ✅ WKT parsing and generation
- ✅ Coordinate transformations
- ✅ Datum conversions
- ✅ Pure Rust implementation (no PROJ.4 required)
- ✅ Optional C bindings for compatibility
Installation
[]
= "0.1"
Quick Start
CRS from EPSG Code
use Crs;
// WGS84
let wgs84 = from_epsg?;
println!;
// Web Mercator
let web_mercator = from_epsg?;
Coordinate Transformation
use ;
let src = from_epsg?; // WGS84
let dst = from_epsg?; // Web Mercator
let transformer = new?;
// Transform San Francisco coordinates
let = transformer.transform?;
println!;
Batch Transformation
let coords = vec!;
let transformed = transformer.transform_batch?;
for in transformed
CRS Operations
WKT Parsing
use Crs;
let wkt = r#"
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433]]
"#;
let crs = from_wkt?;
println!;
CRS Information
let crs = from_epsg?;
println!;
println!;
println!;
println!;
println!;
Supported Transformations
-
Geographic ↔ Projected
- WGS84 ↔ UTM
- WGS84 ↔ Web Mercator
- NAD83 ↔ State Plane
-
Datum Shifts
- WGS84 ↔ NAD83
- WGS84 ↔ ETRS89
- 7-parameter transformations
-
Height Transformations
- Ellipsoidal ↔ Orthometric
- Geoid models
EPSG Database
Built-in support for common coordinate systems:
use epsg;
// Search by name
let results = search?;
for crs in results
// Get definition
let definition = get?;
println!;
Performance
- Transformation: ~100ns per coordinate pair
- Batch transformation: ~50ns per coordinate (SIMD)
- CRS lookup: <1μs (cached)
- WKT parsing: ~10μs
Features
std(default): Standard library supportproj-sys: C bindings to PROJ library (optional)
Pure Rust vs C Bindings
By default, uses pure Rust implementation (proj4rs). For maximum compatibility with PROJ ecosystem, enable proj-sys feature:
[]
= { = "0.1", = ["proj-sys"] }
⚠️ Note: proj-sys violates COOLJAPAN Pure Rust policy. Use only when compatibility is required.
COOLJAPAN Policies
- ✅ Pure Rust - Default implementation (proj4rs)
- ✅ No unwrap() - All errors handled
- ✅ Embedded database - No external files
- ✅ Well tested - Comprehensive accuracy tests
License
Licensed under Apache-2.0.
Copyright © 2025 COOLJAPAN OU (Team Kitasan)