oxiproj-transformations 0.1.2

Datum transformations and coordinate conversions for OxiProj.
Documentation
//! Ports of PROJ `src/transformations/`: `helmert`, `molodensky`, `affine`, `vertoffset`,
//! and grid-based transforms: `hgridshift`, `vgridshift`, `xyzgridshift`, `gridshift`,
//! `tinshift`, `deformation`, `defmodel`.
//! Each submodule exposes a `new(&TransParams) -> ProjResult<TransBuild>` constructor.

pub mod affine;
pub mod defmodel;
pub mod deformation;
pub mod gridshift;
pub mod helmert;
pub mod helmert_batch;
pub mod hgridshift;
pub mod horner;
pub mod molodensky;
pub mod tinshift;
pub mod vertoffset;
pub mod vgridshift;
pub mod xyzgridshift;

use crate::{TransBuild, TransParams};
use oxiproj_core::ProjResult;

/// Returns `Some(..)` for transformation names this group owns; `None` otherwise.
pub(crate) fn build(name: &str, p: &TransParams) -> Option<ProjResult<TransBuild>> {
    match name {
        "helmert" => Some(helmert::new(p)),
        "horner" => Some(horner::new(p)),
        "molobadekas" => Some(helmert::new_molobadekas(p)),
        "molodensky" => Some(molodensky::new(p)),
        "affine" => Some(affine::new(p)),
        "geogoffset" => Some(affine::new_geogoffset(p)),
        "vertoffset" => Some(vertoffset::new(p)),
        "hgridshift" => Some(hgridshift::new(p)),
        "vgridshift" => Some(vgridshift::new(p)),
        "xyzgridshift" => Some(xyzgridshift::new(p)),
        "gridshift" => Some(gridshift::new(p)),
        "tinshift" => Some(tinshift::new(p)),
        "deformation" => Some(deformation::new(p)),
        "defmodel" => Some(defmodel::new(p)),
        _ => None,
    }
}