github proj4js/proj4js v2.23.0

37 minutes ago

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
    • +alpha and +k in ortho
    • Ellipsoidal eqc

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, lat0 and long0 now 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

Full Changelog: v2.22.0...v2.23.0

Don't miss a new proj4js release

NewReleases is sending notifications on new releases.