# oxiproj-transformations
Datum transformations and coordinate conversions for OxiProj.
Part of the [OxiProj](https://github.com/cool-japan/oxiproj) workspace — a 100% Pure-Rust port of PROJ 9.8.0.
## Features
- **Helmert (7-/14-parameter)** similarity transformations between datums
- **Molodensky / abridged Molodensky** horizontal datum shifts
- **Grid-based NTv2/GTX horizontal and vertical shifts** via `oxiproj-grids` integration
- **Geocentric ↔ geographic** conversions and **unit conversions** (degree ↔ radian, metre ↔ foot, etc.)
- **Vertical transformations**: geoid height models, vertical offset and slope
- Mirrors the `oxiproj-projections` build/param pattern: `TransParamLookup`, `TransParams`, `TransBuild`
## Usage
```rust
// Transformations are normally invoked through oxiproj-engine or the oxiproj facade.
// Direct dispatch example:
use oxiproj_engine::{create, Context};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let ctx = Context::default();
// 3-parameter geocentric translation from ED50 to WGS84.
let pj = create(
&ctx,
"+proj=helmert +x=-84.0 +y=-97.0 +z=-117.0 +ellps=intl",
)?;
let r = pj.forward(3_900_000.0, 900_000.0, 100_000.0, f64::INFINITY)?;
println!("({:.2}, {:.2}, {:.2})", r.x, r.y, r.z);
Ok(())
}
```
## License
Apache-2.0. Copyright 2026 COOLJAPAN OU (Team Kitasan).