# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ### Added ### Changed ### Removed ## [0.13.0] - 2024-04-06 ### Added - Better support for handling coordinates via the `CoordinateSet` and `CoordinateTuple` traits. Not introduced all over the code base, but see `tmerc.rs`, `merc.rs` and the documentation for `CoordinateSet` and `CoordinateTuple` for usage examples **Note** that there is a minor **breaking change** involved in this (see "Changed" below) - New operators (cf. *Rumination #002* for details) - `stack` with options `push`, `pop`, `roll`, `unroll`, `swap` and `flip`. - `gravity`: Normal gravity from a number of different current and historical normal gravity models - `deflection`: Deflection of the vertical, computed from a geoid model ### Fixed - Adhere to the [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) recommendations - `Tokenize::Normalize`: Whitespace error - Better series handling in `ParsedParameters` ### Changed - Upgrade dependencies - The `CoordinateSet` trait now **requires** the implementation of a `dim()` method. Essentially `dim()` is just a function returning a constant, reflecting the native dimensionality of the underlying dataset (typically a `usize` in the `1..=4` range) - Improved syntax for register resources (See *Rumination #009*) - Change the name of `CHANGES.md` to `CHANGELOG.md`, and try to follow guidelines from [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) ### Removed - Outdated inner_op/template.rs file - CHANGELOG file (can still be generated by `just changelog`, but not tracked by git anymore) ## [0.12.0] Release notes ### Improvements - Alternative parameter names for the `helmert` operator (`translations`, `rotations` etc.) (Nic Hill) - Improved syntax and parameter handling (#92) (Thomas Knudsen) - `>` and `<` can be used to indicate pipeline steps that are `omit_inv` and `omit_fwd` respectively (syntactic sugar for `| omit_inv`, etc.) - True utf-8 subscripts supported in parameter names (e.g. `x₀`), as alternatives to the existing `x_0`-style - More free form syntax: Modifiers `inv`, `omit_inv` and `omit_fwd` may now prefix the operator name, i.e. `inv utm zone=32` is functionally identical to `utm inv zone=32` - Implement the `axisswap` operator (#84) (Thomas Knudsen) - Replace `once_cell` with `std::sync::OneLock`. (Corey Farwell) - KP: Guess output dimensionality (#82) (Thomas Knudsen) - Implement `unitconvert` operator (#80) (Sean Rennie) - Implement latlon, lonlat, latlong, and longlat as noop-aliases (Thomas Knudsen) ### Bug fixes - LAEA: correct lon_0 in the inverse 'rho==0' case (#90) (Thomas Knudsen) - Mark `clap-verbosity-flag` as an optional dep (#81) (Corey Farwell) - Repair links in README.md (Thomas Knudsen) ### Acknowledgements Geodesy v0.12.0 materialized through contributions from - [Corey Farwell](https://github.com/frewsxcv) - [Nic Hill](https://github.com/nrhill1) - [Sean Rennie](https://github.com/Rennzie) - [Thomas Knudsen](https://github.com/busstoptaktik) ## [0.11.0] Release notes ### Improvements - Handle lists-of-grids, `@optional` grids, and the `@null` grid in `grids=` clauses - Support NTv2 format datum shift grids - Overall documentation brush up and extension - Implement `somerc`, the Swiss Oblique Mercator operator - Implement `deformation`, the 3D intrapalte deformation operator - Rename the `NMEA` operators to `dm/dms` and `iso_dm/iso_dms` - Support jacobian-of-projection and the corresponding deformation factors - `proj_parse`: Translate PROJ syntax to Rust Geodesy syntax with partial support for PROJ ellipsoid definitions - Through `proj_parse`, the `Plain` context, and hence `kp` now supports PROJ syntax (although with the limitations implied by Geodesy only supporting parts of the PROJ operator gamut, and by the differing input-output conventions between `kp` and `proj/cct`) as demonstrated by this example: ```sh echo 55 12 | kp geo:in | kp "proj=pipeline step proj=utm zone=32 step inv proj=utm zone=32" | kp geo:out ``` which does nothing, in a very convoluted way - Partial operator introspection - General support for 2D, 3D, 4D, and 32 bit 2D coordinates (`Coor2D`, `Coor3D`, `Coor4D`, `Coor32`) - Hence `Coord` is gone ### Bug fixes - Avoid double correction for lat_0 in inverse tmerc ### Acknowledgements A huge thank you goes to [Sean Rennie](https://github.com/Rennzie) who a.o. did most of the work on the improved grid support in 0.11.0, and to [Kyle Barron](https://github.com/kylebarron) for pushing Geodesy over the WASM barrier in 0.10.0