transformez 0.2.1__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. transformez-0.2.2/CHANGELOG.md +14 -0
  2. transformez-0.2.2/CITATION.cff +19 -0
  3. transformez-0.2.2/CONTRIBUTING.md +0 -0
  4. {transformez-0.2.1/src/transformez.egg-info → transformez-0.2.2}/PKG-INFO +13 -12
  5. transformez-0.2.2/pyproject.toml +75 -0
  6. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/__init__.py +17 -1
  7. transformez-0.2.2/src/transformez/_version.py +4 -0
  8. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/cli.py +4 -1
  9. transformez-0.2.2/tests/test_cli.py +36 -0
  10. transformez-0.2.1/PKG-INFO +0 -127
  11. transformez-0.2.1/pyproject.toml +0 -41
  12. transformez-0.2.1/setup.cfg +0 -4
  13. transformez-0.2.1/setup.py +0 -2
  14. transformez-0.2.1/src/transformez.egg-info/SOURCES.txt +0 -23
  15. transformez-0.2.1/src/transformez.egg-info/dependency_links.txt +0 -1
  16. transformez-0.2.1/src/transformez.egg-info/entry_points.txt +0 -5
  17. transformez-0.2.1/src/transformez.egg-info/requires.txt +0 -4
  18. transformez-0.2.1/src/transformez.egg-info/top_level.txt +0 -1
  19. {transformez-0.2.1 → transformez-0.2.2}/AUTHORS.md +0 -0
  20. {transformez-0.2.1 → transformez-0.2.2}/LICENSE +0 -0
  21. {transformez-0.2.1 → transformez-0.2.2}/README.md +0 -0
  22. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/definitions.py +0 -0
  23. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/grid_engine.py +0 -0
  24. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/hooks.py +0 -0
  25. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/htdp.py +0 -0
  26. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/modules.py +0 -0
  27. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/spatial.py +0 -0
  28. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/srs.py +0 -0
  29. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/transform.py +0 -0
  30. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/utils.py +0 -0
  31. {transformez-0.2.1 → transformez-0.2.2}/src/transformez/vdatum.py +0 -0
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.1.0] - 2026-02-10
9
+ ### Added
10
+
11
+ ### Changed
12
+ - Now uses raserio
13
+ - Renamed project to `transformez`.
14
+ - Refactored and decoupled from old cudem.vdatums
@@ -0,0 +1,19 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ authors:
4
+ - family-names: Love
5
+ given-names: Matthew
6
+ - family-names: Amante
7
+ given-names: Christopher
8
+ - family-names: MacFerrin
9
+ given-names: Michael
10
+ - family-names: Lim
11
+ given-names: Elliot
12
+ - family-names: Fisher
13
+ given-names: Matt
14
+
15
+ website: https://ciresdem.github.io/transformez/
16
+ title: "Transformez"
17
+ version: 0.1.0
18
+ date-released: 2026-02-10
19
+ url: "https://github.com/ciresdem/transformez"
File without changes
@@ -1,8 +1,11 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: transformez
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: A standalone utility for vertical elevation datum transformations.
5
- Author: Matthew Love
5
+ Project-URL: Homepage, https://github.com/continuous-dems/transformez
6
+ Project-URL: Issues, https://github.com/continuous-dems/transformez/issues
7
+ Author-email: Matthew Love <matthew.love@colorado.edu>, Christopher Amante <christopher.amante@colorado.edu>, Elliot Lim <elliot.lim@colorado.edu>, Michael MacFerrin <michael.macferrin@colorado.edu>
8
+ Maintainer-email: Matthew Love <matthew.love@colorado.edu>
6
9
  License: MIT License
7
10
 
8
11
  Copyright (c) 2010-2026 Regents of the University of Colorado
@@ -24,21 +27,19 @@ License: MIT License
24
27
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
28
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
29
  SOFTWARE.
27
- Project-URL: Homepage, https://github.com/ciresdem/transformez
28
- Project-URL: Issues, https://github.com/ciresdem/transformez/issues
30
+ License-File: AUTHORS.md
31
+ License-File: LICENSE
29
32
  Keywords: Geospatial
30
- Classifier: Programming Language :: Python :: 3
31
- Classifier: License :: OSI Approved :: MIT License
32
33
  Classifier: Operating System :: OS Independent
34
+ Classifier: Programming Language :: Python :: 3
33
35
  Classifier: Topic :: Scientific/Engineering :: GIS
34
- Description-Content-Type: text/markdown
35
- License-File: LICENSE
36
- License-File: AUTHORS.md
36
+ Requires-Python: >=3.8
37
+ Requires-Dist: fetchez>0.3.3
37
38
  Requires-Dist: numpy<2.0.0
38
39
  Requires-Dist: pyproj
39
40
  Requires-Dist: rasterio
40
- Requires-Dist: fetchez>0.3.3
41
- Dynamic: license-file
41
+ Requires-Dist: scipy
42
+ Description-Content-Type: text/markdown
42
43
 
43
44
  # 🌍 Transformez ↕
44
45
 
@@ -124,4 +125,4 @@ shift, unc = vt._vertical_transform(vt.epsg_in, vt.epsg_out)
124
125
  ## License
125
126
 
126
127
  This project is licensed under the MIT License - see the [LICENSE](https://github.com/ciresdem/transformez/blob/main/LICENSE) file for details.
127
- Copyright (c) 2010-2026 Regents of the University of Colorado
128
+ Copyright (c) 2010-2026 Regents of the University of Colorado
@@ -0,0 +1,75 @@
1
+ [build-system]
2
+ requires = ["hatchling>=1.5.0", "hatch-vcs"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = 'transformez'
7
+ description = 'A standalone utility for vertical elevation datum transformations.'
8
+ readme = "README.md"
9
+ requires-python = ">=3.8"
10
+ license = { file = "LICENSE" }
11
+ dynamic = ["version"]
12
+ authors = [
13
+ {name = "Matthew Love", email = "matthew.love@colorado.edu"},
14
+ {name = "Christopher Amante", email = "christopher.amante@colorado.edu"},
15
+ {name = "Elliot Lim", email = "elliot.lim@colorado.edu"},
16
+ {name = "Michael MacFerrin", email = "michael.macferrin@colorado.edu"},
17
+ ]
18
+ maintainers = [
19
+ {name = "Matthew Love", email = "matthew.love@colorado.edu"},
20
+ ]
21
+ classifiers = [
22
+ 'Programming Language :: Python :: 3',
23
+ 'Operating System :: OS Independent',
24
+ 'Topic :: Scientific/Engineering :: GIS',
25
+ ]
26
+ dependencies = [
27
+ 'numpy<2.0.0',
28
+ 'pyproj',
29
+ 'rasterio',
30
+ 'fetchez>0.3.3',
31
+ 'scipy',
32
+ ]
33
+
34
+ keywords = ["Geospatial"]
35
+
36
+ [dependency-groups]
37
+ test = [
38
+ "pytest",
39
+ "pytest-cov",
40
+ ]
41
+
42
+ [project.entry-points."fetchez.plugins"]
43
+ transformez = "transformez"
44
+
45
+ [project.scripts]
46
+ transformez = 'transformez.cli:transformez_cli'
47
+
48
+ [project.urls]
49
+ Homepage = "https://github.com/continuous-dems/transformez"
50
+ Issues = "https://github.com/continuous-dems/transformez/issues"
51
+
52
+ # --- Build configuration ---
53
+
54
+ [tool.hatch.version]
55
+ source = "vcs"
56
+
57
+ [tool.hatch.build.hooks.version]
58
+ path = "src/transformez/_version.py"
59
+
60
+ [tool.hatch.build.targets.wheel]
61
+ packages = ["src/transformez"]
62
+
63
+ [tool.hatch.build.targets.sdist]
64
+ include = [
65
+ "src/transformez",
66
+ "tests",
67
+ "CHANGELOG.md",
68
+ "CITATION.cff",
69
+ "CONTRIBUTING.md",
70
+ "AUTHORS.md",
71
+ ]
72
+ exclude = [
73
+ ".github",
74
+ ]
75
+
@@ -9,10 +9,26 @@ transformez
9
9
  :license: MIT, see LICENSE for more details.
10
10
  """
11
11
 
12
- __version__ = "0.2.1"
13
12
  __author__ = "Matthew Love"
14
13
  __credits__ = "CIRES"
15
14
 
15
+ try:
16
+ from transformez._version import __version__
17
+ except ImportError:
18
+ # Fallback when using the package from source without installing
19
+ # in editable mode with pip (nobody should do this):
20
+ # <https://pip.pypa.io/en/stable/topics/local-project-installs/#editable-installs>
21
+ import warnings
22
+
23
+ warnings.warn(
24
+ "Importing 'transformez' outside a proper installation."
25
+ " It's highly recommended to install the package from a stable release or"
26
+ " in editable mode.",
27
+ stacklevel=2,
28
+ )
29
+ __version__ = "dev"
30
+
31
+
16
32
  import os
17
33
  import glob
18
34
  # from .hooks import TransformezHook
@@ -0,0 +1,4 @@
1
+ # This file is auto-generated by Hatchling. As such, do not:
2
+ # - modify
3
+ # - track in version control e.g. be sure to add to .gitignore
4
+ __version__ = VERSION = '0.2.2'
@@ -73,7 +73,7 @@ def list_supported_datums():
73
73
 
74
74
  def transformez_cli():
75
75
  parser = argparse.ArgumentParser(
76
- description="Global Vertical Datum Transformer",
76
+ description=f"{utils.CYAN}%(prog)s{utils.RESET} ({__version__}) :: Global Vertical Datum Transformer",
77
77
  epilog="Examples:\n"
78
78
  " transformez -R -166/-164/63/64 -I mllw -O 4979\n"
79
79
  " transformez input_dem.tif -I mllw -O 5703:geoid=g2012b",
@@ -100,6 +100,9 @@ def transformez_cli():
100
100
  grp_sys.add_argument('--list-datums', action='store_true', help='List supported datums.')
101
101
  grp_sys.add_argument('--cache-dir', help='Override cache directory.')
102
102
  grp_sys.add_argument('--verbose', action='store_true', help='Enable debug logging.')
103
+ grp_sys.add_argument(
104
+ "-v", "--version", action="version", version=f"%(prog)s {__version__}"
105
+ )
103
106
 
104
107
  args = parser.parse_args()
105
108
 
@@ -0,0 +1,36 @@
1
+ import subprocess
2
+ import sys
3
+
4
+ # CMD will run Transformez
5
+ CMD = [sys.executable, "-m", "transformez.cli"]
6
+
7
+
8
+ def run_transformez(args):
9
+ """Run transformez and return result."""
10
+
11
+ return subprocess.run(CMD + args, capture_output=True, text=True)
12
+
13
+
14
+ def test_help():
15
+ """Does the help menu work?"""
16
+
17
+ result = run_transformez(["--help"])
18
+ assert result.returncode == 0
19
+
20
+
21
+ def test_version():
22
+ """Does version print?"""
23
+
24
+ result = run_transformez(["--version"])
25
+ assert result.returncode == 0
26
+
27
+
28
+ def test_list_modules():
29
+ """Can we list datums without crashing?"""
30
+
31
+ result = run_transformez(["--list-datums"])
32
+ assert result.returncode == 0
33
+ assert "lat" in result.stdout
34
+ assert "mllw" in result.stdout
35
+ assert "NAVD88" in result.stdout
36
+ assert "g2018" in result.stdout
@@ -1,127 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: transformez
3
- Version: 0.2.1
4
- Summary: A standalone utility for vertical elevation datum transformations.
5
- Author: Matthew Love
6
- License: MIT License
7
-
8
- Copyright (c) 2010-2026 Regents of the University of Colorado
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of this software and associated documentation files (the "Software"), to deal
12
- in the Software without restriction, including without limitation the rights
13
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
- copies of the Software, and to permit persons to whom the Software is
15
- furnished to do so, subject to the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be included in all
18
- copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
- SOFTWARE.
27
- Project-URL: Homepage, https://github.com/ciresdem/transformez
28
- Project-URL: Issues, https://github.com/ciresdem/transformez/issues
29
- Keywords: Geospatial
30
- Classifier: Programming Language :: Python :: 3
31
- Classifier: License :: OSI Approved :: MIT License
32
- Classifier: Operating System :: OS Independent
33
- Classifier: Topic :: Scientific/Engineering :: GIS
34
- Description-Content-Type: text/markdown
35
- License-File: LICENSE
36
- License-File: AUTHORS.md
37
- Requires-Dist: numpy<2.0.0
38
- Requires-Dist: pyproj
39
- Requires-Dist: rasterio
40
- Requires-Dist: fetchez>0.3.3
41
- Dynamic: license-file
42
-
43
- # 🌍 Transformez ↕
44
-
45
- **Global vertical datum transformations, simplified.**
46
-
47
- *Transformez Les Données*
48
-
49
- > 🚀 **v0.2.0:** Now supporting global tidal transformations via FES2014 & SEANOE.
50
-
51
- **Transformez** is a standalone Python engine for converting geospatial data between vertical datums (e.g., `MLLW` ↔ `NAVD88` ↔ `Ellipsoid`).
52
-
53
- ---
54
-
55
- ## Installation
56
-
57
- ```bash
58
- pip install transformez
59
- ```
60
-
61
- *Requires [htdp](https://geodesy.noaa.gov/TOOLS/Htdp/Htdp.shtml) to be in your system PATH for frame transformations.*
62
-
63
- ## Usage
64
-
65
- **Generate a vertical shift grid for anywhere on Earth.**
66
-
67
- ```bash
68
- # Transform MLLW to WGS84 Ellipsoid in Norton Sound, AK
69
- # (Where NOAA has no coverage!)
70
- transformez -R -166/-164/63/64 -E 3s \
71
- --input-datum mllw \
72
- --output-datum 4979 \
73
- --output shift_ak.tif
74
- ```
75
-
76
- **Transform a raster directly.** Transformez reads the bounds/resolution from the file.
77
-
78
- ```bash
79
- transformez --dem input_bathymetry.tif \
80
- --input-datum "mllw" \
81
- --output-datum "5703:geoid=geoid12b" \
82
- --output output_navd88.tif
83
- ```
84
-
85
- **Integrate directly into your download pipeline.**
86
-
87
- ```bash
88
- # Download GEBCO and shift EGM96 to WGS84 on the fly
89
- fetchez gebco ... --hook transformez:datum_in=5773,datum_out=4979
90
- ```
91
-
92
- ## Python API
93
-
94
- ```python
95
- from transformez.transform import VerticalTransform
96
- from fetchez.spatial import Region
97
-
98
- # Define a region in India (Bay of Bengal)
99
- region = Region(80, 85, 10, 15)
100
-
101
- # Initialize Transformer
102
- # Requesting "MLLW" in India triggers the Global Fallback automatically
103
- vt = VerticalTransform(
104
- region=region,
105
- nx=1000, ny=1000,
106
- epsg_in="mllw", # Will resolve to FES2014 LAT
107
- epsg_out="epsg:4979" # WGS84 Ellipsoid
108
- )
109
-
110
- # Generate Shift
111
- shift, unc = vt._vertical_transform(vt.epsg_in, vt.epsg_out)
112
- ```
113
-
114
- ## Supported Datums
115
-
116
- * **Tidal**: mllw, mhhw, msl, lat
117
-
118
- * **Ellipsoidal**: 4979 (WGS84), 6319 (NAD83 2011)
119
-
120
- * **Orthometric**: 5703 (NAVD88), egm2008, egm96
121
-
122
- * **Geoids**: g2018, g2012b, geoid09, xgeoid20b
123
-
124
- ## License
125
-
126
- This project is licensed under the MIT License - see the [LICENSE](https://github.com/ciresdem/transformez/blob/main/LICENSE) file for details.
127
- Copyright (c) 2010-2026 Regents of the University of Colorado
@@ -1,41 +0,0 @@
1
- [build-system]
2
- requires = ['setuptools>=61.0']
3
- build-backend = 'setuptools.build_meta'
4
-
5
- [project]
6
- name = 'transformez'
7
- version = '0.2.1'
8
- description = 'A standalone utility for vertical elevation datum transformations.'
9
- readme = "README.md"
10
- authors = [{ name = 'Matthew Love' }]
11
- license = { file = 'LICENSE' }
12
- classifiers = [
13
- 'Programming Language :: Python :: 3',
14
- 'License :: OSI Approved :: MIT License',
15
- 'Operating System :: OS Independent',
16
- 'Topic :: Scientific/Engineering :: GIS',
17
- ]
18
- dependencies = [
19
- 'numpy<2.0.0',
20
- 'pyproj',
21
- 'rasterio',
22
- 'fetchez>0.3.3',
23
- ]
24
-
25
- keywords = ["Geospatial"]
26
-
27
- [project.entry-points."fetchez.plugins"]
28
- transformez = "transformez"
29
-
30
- [project.scripts]
31
- transformez = 'transformez.cli:transformez_cli'
32
-
33
- [project.urls]
34
- Homepage = "https://github.com/ciresdem/transformez"
35
- Issues = "https://github.com/ciresdem/transformez/issues"
36
-
37
- [tool.setuptools.packages.find]
38
- where = ["src"] # Look for packages inside the 'src' folder
39
- include = ["transformez*"] # Include the package named 'transformez'
40
- exclude = ["tests*", "docs*", "scripts*", "examples*"]
41
- namespaces = false
@@ -1,4 +0,0 @@
1
- [egg_info]
2
- tag_build =
3
- tag_date = 0
4
-
@@ -1,2 +0,0 @@
1
- from setuptools import setup
2
- setup()
@@ -1,23 +0,0 @@
1
- AUTHORS.md
2
- LICENSE
3
- README.md
4
- pyproject.toml
5
- setup.py
6
- src/transformez/__init__.py
7
- src/transformez/cli.py
8
- src/transformez/definitions.py
9
- src/transformez/grid_engine.py
10
- src/transformez/hooks.py
11
- src/transformez/htdp.py
12
- src/transformez/modules.py
13
- src/transformez/spatial.py
14
- src/transformez/srs.py
15
- src/transformez/transform.py
16
- src/transformez/utils.py
17
- src/transformez/vdatum.py
18
- src/transformez.egg-info/PKG-INFO
19
- src/transformez.egg-info/SOURCES.txt
20
- src/transformez.egg-info/dependency_links.txt
21
- src/transformez.egg-info/entry_points.txt
22
- src/transformez.egg-info/requires.txt
23
- src/transformez.egg-info/top_level.txt
@@ -1,5 +0,0 @@
1
- [console_scripts]
2
- transformez = transformez.cli:transformez_cli
3
-
4
- [fetchez.plugins]
5
- transformez = transformez
@@ -1,4 +0,0 @@
1
- numpy<2.0.0
2
- pyproj
3
- rasterio
4
- fetchez>0.3.3
@@ -1 +0,0 @@
1
- transformez
File without changes
File without changes
File without changes