Highlights
More accurate datum shifts
Datum shifts are generated from PROJ's proj.db (EPSG 12.x), and now work for more CRSs:
- Geographic CRSs without
towgs84, and CRSs with a non-Greenwich prime meridian (e.g. S-JTSK/05 (Ferro)), now get a datum shift. - For each CRS, the best transformation is picked, preferring EPSG transformations with a known accuracy.
New projections and variants
- New projections: Laborde (
labrd), Colombia Urban (col_urban) and modified Krovak (mod_krovak) - New variants:
- Guam
aeqd - Hyperbolic Cassini-Soldner
- South orientated
tmerc - West orientated
lcc +alphaand+kinortho- Ellipsoidal
eqc
- Guam
Faster
Transforms are about twice as fast, e.g. UTM to WGS84.
Dependencies
wkt-parser 1.9.0 fixes signs and units of Coordinate Frame rotations, reads more WKT2 variants and handles units of WKT1 projection parameters correctly.
For contributors
See the new CONTRIBUTING.md before opening issues or pull requests.
Upgrade notes
x0,y0,lat0andlong0now default to 0, like in PROJ. Projections like aea, cass, laea, omerc or sterea used to return[NaN, NaN]when one of these was left out; they now return coordinates.- The npm package now contains only the files needed to use proj4js (
dist,lib,projs.js).
What's Changed
- fix(types): make forward and inverse optional on ProjectionDefinition by @santiago-ramos-02 in #608
- Route spherical tmerc to the spherical formula instead of etmerc by @cpruijsen in #604
- Add Amersfoort datum for WKT without TOWGS84 by @rmz-oz in #606
- Support datum shift for geographic CRSs without towgs84 by @ahocevar in #611
- Keep rotations of datum shifts with rx = 0 by @ahocevar in #638
- Pick the best datum shift per source CRS by @ahocevar in #639
- Write datum shifts used by several CRSs only once by @ahocevar in #640
- Recognize WKT with parentheses as delimiters by @m-mohr in #637
- Prefer EPSG transformations with a known accuracy by @ahocevar in #642
- Add Colombia Urban projection by @birkskyum in #617
- Bump postcss from 8.5.15 to 8.5.32 by @dependabot[bot] in #596
- Bump vitest from 4.1.10 to 4.1.11 by @dependabot[bot] in #603
- Bump js-yaml from 4.2.0 to 4.3.2 by @dependabot[bot] in #605
- Bump brace-expansion from 1.1.16 to 1.1.21 by @dependabot[bot] in #613
- Bump serialize-javascript from 7.0.5 to 7.1.4 by @dependabot[bot] in #643
- Bump vite from 8.0.16 to 8.3.8 by @dependabot[bot] in #626
- Match PROJ's ellipsoid names for WGS72, APL4.9, danish, GSK2011 and PZ90 by @birkskyum in #615
- optimization: speed up transforms by @cdcxd in #609
- Use the ellipsoidal formulas for eqc on an ellipsoid by @birkskyum in #616
- Support alpha and k in ortho by @birkskyum in #619
- Support hyperbolic Cassini-Soldner and fix Cassini far from the central meridian by @birkskyum in #620
- Support the Guam variant of aeqd by @birkskyum in #621
- Add Laborde projection by @birkskyum in #622
- Add modified Krovak projection by @birkskyum in #623
- Add datum shift for S-JTSK/05 (Ferro) by @ahocevar in #648
- Support south orientated Transverse Mercator and west orientated Lambert by @birkskyum in #624
- Add datum shifts for CRSs with a non-Greenwich prime meridian by @birkskyum in #625
- Fix/geocentric origin inverse by @ahocevar in #649
- fix: return computed geodetic coordinates at the geocentric origin by @excited0202 in #627
- Keep the hemisphere when inverting points beyond ±180 or poles by @ahocevar in #650
- Do not introduce new GCTP-style comments by @ahocevar in #651
- Default x0, y0, lat0 and long0 to 0 by @bardrop in #647
- Add contributing guidelines; record EPSG version of datums/ellipsoids by @ahocevar in #653
New Contributors
- @santiago-ramos-02 made their first contribution in #608
- @cpruijsen made their first contribution in #604
- @rmz-oz made their first contribution in #606
- @m-mohr made their first contribution in #637
- @birkskyum made their first contribution in #617
- @cdcxd made their first contribution in #609
- @excited0202 made their first contribution in #627
- @bardrop made their first contribution in #647
Full Changelog: v2.22.0...v2.23.0