Skip to main content

A standalone utility for vertical elevation datum transformations.

Project description

Transformez

Global vertical datum transformations, simplified.

Version License Python PyPI version Project Chat

Transformez is a standalone Python engine for converting geospatial data between vertical datums (e.g., MLLWNAVD88Ellipsoid).


Shift Grid Example (Above: A generated vertical shift grid transforming MLLW to NAVD88)

transformez run -R loc:"new orleans" -E 3s -I mllw -O 5703

Installation

Prerequisites: HTDP

Transformez relies on the NGS Horizontal Time-Dependent Positioning (HTDP) software to perform highly accurate plate tectonic and frame transformations. You must install this separately.

For Windows:

  1. Download the pre-compiled executable (htdp.exe) directly from the NOAA HTDP page.
  2. Place htdp.exe in a directory that is in your system's PATH (e.g., C:\Windows\System32 or a custom scripts folder).

For Linux / macOS:

You will need a Fortran compiler (like gfortran) to compile the source code.

# 1. Download the Fortran source code
wget https://geodesy.noaa.gov/TOOLS/Htdp/HTDP-download.zip
unzip HTDP-download.zip

# 2. Compile it
gfortran -o htdp htdp.f

# 3. Move it to your PATH
sudo mv htdp /usr/local/bin/

Install Transformez

Once HTDP is accessible in your terminal, install the python package:

pip install transformez

Usage

Generate a vertical shift grid for anywhere on Earth.

# Transform MLLW to WGS84 Ellipsoid in Norton Sound, AK

transformez run -R -166/-164/63/64 -E 1s -I mllw -O 4979

Transform a raster directly. Transformez reads the bounds/resolution from the file.

transformez run my_dem.tif -I mllw -O 5703

Integrate directly into your download pipeline.

# Download GEBCO and shift EGM96 to WGS84 on the fly
fetchez gebco ... --hook transformez:datum_in=5773,datum_out=4979

Python API

Transformez provides a high-level API for embedding transformations directly into your Python scripts, Jupyter Notebooks, or automated pipelines.

import transformez

# ---------------------------------------------------------
# Generate a Shift Grid
# ---------------------------------------------------------
# Returns a 2D numpy array. Optionally saves to a file.
# Requesting "mllw" in India triggers the Global Fallback (FES2014) automatically.

shift_array = transformez.generate_grid(
    region=[80, 85, 10, 15],  # [West, East, South, North]
    increment="3s",           # Grid resolution
    datum_in="mllw",
    datum_out="4979",         # WGS84 Ellipsoid
    out_fn="india_shift.tif"  # Optional: Save to disk
)

# ---------------------------------------------------------
# Transform an Existing Raster
# ---------------------------------------------------------
# Applies the datum shift directly to a DEM and saves the result.

out_file = transformez.transform_raster(
    input_raster="my_dem_mllw.tif",
    datum_in="mllw",
    datum_out="5703:g2012b",  # NAVD88 using specific GEOID12B
    output_raster="my_dem_navd88.tif"
)

Supported Datums

🌊 Supported Tidal Surfaces:

EPSG NAME DESC
1089 mllw [USA]
5866 mllw [USA]
1091 mlw [USA]
5869 mhhw [USA]
5868 mhw [USA]
5714 msl [USA]
5713 mtl [USA]
0 crd [USA]
5609 IGLD85 [USA]
9000 LWD_IGLD85 [USA]
5702 NGVD29 [GLOBAL]
9001 lat [GLOBAL]
9002 hat [GLOBAL]
9003 mss [GLOBAL]

🌐 Ellipsoidal / Frame Datums (EPSG):

EPSG NAME DESC
4979 WGS84 World Geodetic System 1984
6319 NAD83 North American Datum 1983

🏔️ Orthometric / Geoid-Based (EPSG):

EPSG NAME DESC
5703 NAVD88 height (Default Geoid: g2018)
6360 NAVD88 height (usFt) (Default Geoid: g2018)
8228 NAVD88 height (Ft) (Default Geoid: g2018)
6641 PRVD02 height (Default Geoid: g2018)
6642 VIVD09 height (Default Geoid: g2018)
6647 CGVD2013(CGG2013) (Default Geoid: CGG2013)
3855 EGM2008 height (Default Geoid: egm2008)
5773 EGM96 height (Default Geoid: egm96)

🌍 Available Geoids:

g2018, g2012b, geoid09, xgeoid20b, xgeoid19b, egm2008, egm96, CGG2013

License

This project is licensed under the MIT License - see the LICENSE file for details. Copyright (c) 2010-2026 Regents of the University of Colorado

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

transformez-0.3.2.tar.gz (29.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

transformez-0.3.2-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file transformez-0.3.2.tar.gz.

File metadata

  • Download URL: transformez-0.3.2.tar.gz
  • Upload date:
  • Size: 29.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for transformez-0.3.2.tar.gz
Algorithm Hash digest
SHA256 f7edaf44202d511285e61c343a837229127e4f5bbb0b2d4cf77c18b5fa4444ed
MD5 52d1e57a28042c6bf5d695f6aeb8b646
BLAKE2b-256 ef0c9139b4a4297d3b53217629a1d6af615f6430ac140a58e89214df615c4ea1

See more details on using hashes here.

Provenance

The following attestation bundles were made for transformez-0.3.2.tar.gz:

Publisher: publish.yaml on continuous-dems/transformez

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file transformez-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: transformez-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 37.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for transformez-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a449f93778f21f2f230b5b20ec12f64e0581df3c970ac48c8648ea780a2cda28
MD5 bc0d421a459aac02f9c4ea99a39c2c00
BLAKE2b-256 5c9ff26c3bb0fb987347f38000962fd98475ceb43d8fa988de9efcc36a8c3eb0

See more details on using hashes here.

Provenance

The following attestation bundles were made for transformez-0.3.2-py3-none-any.whl:

Publisher: publish.yaml on continuous-dems/transformez

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page