Skip to main content

oxiproj_transformations/transformations/
mod.rs

1//! Ports of PROJ `src/transformations/`: `helmert`, `molodensky`, `affine`, `vertoffset`,
2//! and grid-based transforms: `hgridshift`, `vgridshift`, `xyzgridshift`, `gridshift`,
3//! `tinshift`, `deformation`, `defmodel`.
4//! Each submodule exposes a `new(&TransParams) -> ProjResult<TransBuild>` constructor.
5
6pub mod affine;
7pub mod defmodel;
8pub mod deformation;
9pub mod gridshift;
10pub mod helmert;
11pub mod helmert_batch;
12pub mod hgridshift;
13pub mod horner;
14pub mod molodensky;
15pub mod tinshift;
16pub mod vertoffset;
17pub mod vgridshift;
18pub mod xyzgridshift;
19
20use crate::{TransBuild, TransParams};
21use oxiproj_core::ProjResult;
22
23/// Returns `Some(..)` for transformation names this group owns; `None` otherwise.
24pub(crate) fn build(name: &str, p: &TransParams) -> Option<ProjResult<TransBuild>> {
25    match name {
26        "helmert" => Some(helmert::new(p)),
27        "horner" => Some(horner::new(p)),
28        "molobadekas" => Some(helmert::new_molobadekas(p)),
29        "molodensky" => Some(molodensky::new(p)),
30        "affine" => Some(affine::new(p)),
31        "geogoffset" => Some(affine::new_geogoffset(p)),
32        "vertoffset" => Some(vertoffset::new(p)),
33        "hgridshift" => Some(hgridshift::new(p)),
34        "vgridshift" => Some(vgridshift::new(p)),
35        "xyzgridshift" => Some(xyzgridshift::new(p)),
36        "gridshift" => Some(gridshift::new(p)),
37        "tinshift" => Some(tinshift::new(p)),
38        "deformation" => Some(deformation::new(p)),
39        "defmodel" => Some(defmodel::new(p)),
40        _ => None,
41    }
42}