# oxiproj-core
Foundation types for OxiProj: coordinates, errors, ellipsoids, datums, and units.
Part of the [OxiProj](https://github.com/cool-japan/oxiproj) workspace — a 100% Pure-Rust port of PROJ 9.8.0.
## Features
- Rich coordinate types: `Coord`, `Xy`, `Xyz`, `Xyzt`, `Lp`, `Lpz`, `Lpzt`, `Enu`, `Geod`, `Uv`, `Uvw`, `Uvwt`, `Opk`
- Ellipsoid definitions and construction helpers (`from_a_b`, `from_a_f`, `from_a_rf`, `from_a_es`, sphere)
- Built-in datum table (`find_datum`, `DatumDef`, `DatumParams`) and prime-meridian registry
- Geodetic math primitives: Clenshaw series, Gauss–Krüger helpers, authalic/auxiliary-latitude conversions, and polynomial evaluation
- `ProjError` / `ProjResult` unified error type used throughout the workspace
- Optional `serde` support via the `serde` feature flag
## Usage
```rust
use oxiproj_core::{Ellipsoid, named_ellipsoid, Coord, ProjResult};
fn main() -> ProjResult<()> {
// Look up the WGS 84 ellipsoid by name.
let e = named_ellipsoid("WGS84")?;
println!("a = {}, 1/f = {}", e.a, 1.0 / e.f);
// Build a coordinate (longitude, latitude in radians).
let _c = Coord::new(0.2094395, 0.9599310); // ~12°E, 55°N in radians
Ok(())
}
```
## License
Apache-2.0. Copyright 2026 COOLJAPAN OU (Team Kitasan).