# oxiproj-engine
Proj-string parser, operation dispatch, and transformation pipelines for OxiProj.
Part of the [OxiProj](https://github.com/cool-japan/oxiproj) workspace — a 100% Pure-Rust port of PROJ 9.8.0.
## Features
- **Proj-string parser** (`parse`, `ParamList`, `ParamView`): tokenizes and validates `+key=value` proj-strings
- **Operation dispatch** (`create`): resolves a proj-string to a concrete `Pj` that chains projections and transformations
- **Pipeline support** (`Pipeline`): composes multi-step `+proj=pipeline` operations including `+step` and `+inv` modifiers
- **Ellipsoid setup** (`setup_ellipsoid`): derives ellipsoid parameters from any valid combination of axis and flattening parameters
- `Context` and `TmercAlgo` enums to configure transverse Mercator algorithm selection and other engine settings
- Batch coordinate conversion via `trans_array` for high-throughput workloads
## Usage
```rust
use oxiproj_engine::{create, trans, Context};
use oxiproj_core::Direction;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let ctx = Context::default();
let pj = create(&ctx, "+proj=utm +zone=32 +ellps=WGS84")?;
let (x, y, _z, _t) = trans(&pj, Direction::Forward, 12.0f64.to_radians(), 55.0f64.to_radians(), 0.0, f64::INFINITY)?;
println!("UTM Zone 32N E={:.2} N={:.2}", x, y);
Ok(())
}
```
## License
Apache-2.0. Copyright 2026 COOLJAPAN OU (Team Kitasan).