All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
CoordinateSet
: xyz(), set_xyz(), xyzt(), set_xyzt() methods- Vector space operators (Add, Sub, Mul, Div) for all built in coordinate tuple types (Coor4D, Coor3D, Coor2D, Coor32)
TriaxialEllpisoid
, mostly as a placeholder- Rumination #10: What's wrong with 19111
- A large number of linguistic errors and ambiguities
CoordinateTuple
trait now requires implementation of the constructor methodnew(fill: f64)
, returning an object ofdim()
copies offill
.- The huge
Ellipsoid
-implementation switched to a new traitEllipsoidBase
, and a number of associated traits requiringEllipsoidBase
. - Meaning of
EllipsoidBase::aspect_ratio()
switched from b / a to the apparently more common a / b - Major restructuring and clean up of
lib.rs
. Only marginally visible externally, if usinguse geodesy::prelude::*
- Moved some_basic_coorNdinates to
crate::test_dat::coorNd
CHANGES.md
- Unused parallel context stup
context/parallel.rs
-
Better support for handling coordinates via the
CoordinateSet
andCoordinateTuple
traits.Not introduced all over the code base, but see
tmerc.rs
,merc.rs
and the documentation forCoordinateSet
andCoordinateTuple
for usage examplesNote that there is a minor breaking change involved in this (see "Changed" below)
-
New operators (cf. Rumination #002 for details)
stack
with optionspush
,pop
,roll
,unroll
,swap
andflip
.gravity
: Normal gravity from a number of different current and historical normal gravity modelsdeflection
: Deflection of the vertical, computed from a geoid model
- Adhere to the Keep a Changelog recommendations
Tokenize::Normalize
: Whitespace error- Better series handling in
ParsedParameters
-
Upgrade dependencies
-
The
CoordinateSet
trait now requires the implementation of adim()
method.Essentially
dim()
is just a function returning a constant, reflecting the native dimensionality of the underlying dataset (typically ausize
in the1..=4
range) -
Improved syntax for register resources (See Rumination #009)
-
Change the name of
CHANGES.md
toCHANGELOG.md
, and try to follow guidelines from Keep a Changelog
- Outdated inner_op/template.rs file
- CHANGELOG file (can still be generated by
just changelog
, but not tracked by git anymore)
- 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 areomit_inv
andomit_fwd
respectively (syntactic sugar for| omit_inv
, etc.)- True utf-8 subscripts supported in parameter names (e.g.
x₀
), as alternatives to the existingx_0
-style - More free form syntax: Modifiers
inv
,omit_inv
andomit_fwd
may now prefix the operator name, i.e.inv utm zone=32
is functionally identical toutm inv zone=32
- Implement the
axisswap
operator (#84) (Thomas Knudsen) - Replace
once_cell
withstd::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)
- 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)
Geodesy v0.12.0 materialized through contributions from
-
Handle lists-of-grids,
@optional
grids, and the@null
grid ingrids=
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 todm/dms
andiso_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
, thePlain
context, and hencekp
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 betweenkp
andproj/cct
) as demonstrated by this example: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
- Avoid double correction for lat_0 in inverse tmerc
A huge thank you goes to Sean Rennie who a.o. did most of the work on the improved grid support in 0.11.0, and to Kyle Barron for pushing Geodesy over the WASM barrier in 0.10.0