-
Notifications
You must be signed in to change notification settings - Fork 2
Description
At present, the z (altitude) coordinate is defined as the height above the geoid, so that the origin of the altitude axis, z = 0 km, corresponds to the geoid. (the geoid differs from the mean sea level by less than 2 meters)
Given that the Earth surface is different from this geoid (e.g. mountains), the convention for z = 0 km could be generalized so that altitude could alternatively be reported relative to the Earth surface (the ground surface).
Implementation details
Each dataset would have a new attribute vertical_datum with a value corresponding to the vertical datum.
The z coordinate' attribute could be also updated to indicate, e.g. height above the geoid, height above the ground level and so on.
A new module (e.g. geodesy.py) could include an enumeration such as:
from enum import Enum
class VerticalDatum(Enum, str):
"""
Zero-level reference.
"""
GROUND = "ground" # 'z' is the height above ground level
EGM_96 = "EGM-96" # 'z' is the orthometric height, namely height above EGM-96 geoid
MEAN_SEA_LEVEL = "mean sea level" # z is the height above sea level (very close to orthometric height)
WGS_84 = "WGS 84" # 'z' is the ellipsoidal height, namely height above Earth reference ellipsoid World Geodetic System 84
UNDEFINED = "undefined" # fall-backincluding a transformation method to convert one representation to another:
def transform(
ds: xr.Dataset,
to: VerticalDatum | str,
**kwargs,
) -> xr.Dataset:
passNotes
- Vertical datum: vertical datums are also known as zero-elevation surface or zero-level reference.
- Height above ground level
- World Geodetic System 84 reference ellipsoid 84
- EGM96 geoid
- The location-dependent, but persistent in time, separation between mean sea level and the geoid is referred to as (mean) ocean surface topography. It varies globally in a range of ± 2 m.