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.
- CLI auto-download of geoid grids: both
egmtransandpython EGMTrans.pynow fetch any missing grid files from GitHub Releases on first run, matching the behavior previously available only in the ArcGIS Pro toolbox. tests/test_accuracy.py: numerical regression tests that pincreate_datum_arrayoutput at six global control points (Atlantic, Washington DC, Cape Town, Mt Everest, New Guinea, central Greenland) against the real geoid grids, plus a full round-trip EGM96 → EGM2008 → EGM96 sanity check. Tests skip cleanly if the grid files are absent.SECURITY.mddocumenting the HTTPS + SHA-256 grid download model, network egress expectations, and the static attack surface.CONTRIBUTING.mdcovering dev setup, test/lint commands, and the commit attribution rule for AI assistants.- GitHub Actions CI (
.github/workflows/ci.yml) runningruff checkandpyteston Python 3.11 and 3.12 against a cached copy of the geoid grids. - README "Grid provenance" subsection explaining how the 1-arc-minute grids were computed directly from the EGM96/EGM2008 spherical harmonic coefficients via NGA's Fortran executables (
hsynth_WGS84,f477_bin,clenqt_bin) and validated against Nikolaos Pavlis's 1-arc-minute reference binary.
- README: removed the stale hardcoded "current version is 1.1.0" line; the version badge and
src/egmtrans/_version.pyremain the single source of truth.
- Cleaned up ruff findings in
cli.py,download.py, and several existing test files so that the new CI pipeline runs green.
- Moved geoid grid GeoTIFF files (~1.3 GB) from Git LFS to a dedicated GitHub Release (datum-grids-v1) to fix ZIP download issues and remove the Git LFS dependency.
- The
datums/directory no longer contains.tiffiles in the repository. Grid files must be downloaded separately.
src/egmtrans/download.pymodule for downloading grid files from GitHub Releases with SHA-256 checksum verification.download_grids.pyCLI script to download all geoid grid files with a single command.- ArcGIS Pro toolbox auto-downloads grid files on first run -- no terminal required.
- Runtime validation in
config.verify_grids()checks for required grid files before processing and provides clear download instructions if they are missing. datums/README.mdwith download instructions and checksums.
.gitattributes(Git LFS tracking no longer needed).- Grid
.tiffiles from Git LFS tracking.
- Refactored monolithic
EGMTrans.pyinto an installableegmtransPython package undersrc/egmtrans/. - Replaced module-level global state with
_state.pygetter/setter pattern. - Extracted code into focused modules:
config,crs,interpolation,flattening,io,transform,cli,numba_utils,logging_setup,file_utils,arcpy_compat. - Root-level
EGMTrans.pyis now a thin backward-compatibility shim that re-exports from the package.
pyproject.tomlwith hatchling build system andegmtransconsole entry point.src/egmtrans/__main__.pyforpython -m egmtranssupport.- Comprehensive test suite under
tests/(64 tests covering config, CRS, interpolation, flattening, I/O, CLI, numba utils). EGMTRANS_BASE_PATHenvironment variable to override project root detection.
- No functional changes — all transformation logic is preserved exactly as-is.
- Initial release of EGMTrans.
- Support for vertical datum transformations between WGS84, EGM96, and EGM2008.
- Support for GeoTIFF and DTED file formats.
- Standalone script and ArcGIS Pro toolbox versions.
- Option to keep ocean at 0 elevation.
- Flattening of water bodies and other flat areas.
- Creation of flat masks.