Background

Why the package works the way it does. None of this is needed to use the API, but it explains the refusals and the design choices behind them.

  • Architecture: the two workflows, build time and runtime, and what each package is responsible for.

  • Design guarantees: what plain PROJ does and what this package does instead, and why.

  • Axis order: declared axis order versus value order, and the PROJ gap that is worked around.

  • Bound CRSs: early binding, how a bound CRS is stored, and collapsing a chain into one step.

  • Provenance: what a result records, and how a custom database is traced back to its inputs.

  • Known issues and workarounds: every defect or gap this package works around, with the condition for removing each workaround.