Skip to content

Releases: openlandmap/GEDTM30

GEDTM v1.1 Update

12 Jun 10:48
Compare
Choose a tag to compare

Technical documentation:

Project landing page - link
Contact: [email protected]

Update about adjustment according to spotted issues

1. Water body

The GEDTM30 terrain height product exhibits unrealistic or noisy elevation values over permanent water bodies (e.g., oceans, lakes, the Caspian Sea). This is primarily due to the incorporation of auxiliary datasets, specifically Landsat-derived biophysical indices and ETOPO2022 slope in degrees, alongside DSMs during model inference.

While these auxiliary layers enhance land-surface predictions, they degrade accuracy over water surfaces:

  • Landsat biophysical indices introduce noise over water due to their optical sensitivity to surface reflectance variability, which is not correlated with topography.

  • ETOPO2022, although valuable in terrestrial regions, includes bathymetric data that is fundamentally incompatible with the elevation specifications of GEDTM30.

These auxiliary features interfere with machine learning-based filtering of vegetation and man-made structures, resulting in artifacts where the model misinterprets water surfaces as containing elevation features.

1 water_issue
Fig. 1 GEDTM v1 contains unrealistic water surface noise. Image attributed to @hannesaddec, spotted by @neodescis, @hannesaddec and @robbibt

To mitigate this without fundamentally altering the model architecture, we integrated the JRC Global Surface Water (GSW) dataset as a reference to identify water pixels. The underlying assumption is that persistent water bodies (excluding features like mangroves, canals, and large vessels, which JRC classifies as land) are devoid of buildings or tall vegetation.

Screenshot from 2025-06-07 00-53-04
Fig. 2 JRC surface water at 30m resolution (Pekel, 2016)

Using this, we constructed a water surface mask. For all auxiliary covariates—excluding ALOS AW3D30 and GLO30—pixels corresponding to masked water areas were set to neutral values (e.g., 0 height, NDVI = -1), effectively removing spurious contributions from non-topographic sources. Comparison result of GLO30, ALOS, GEDTM v1.0 and v1.1 is showed below (Fig 3 & 4).

#pseudo code to create surface water mask and replace covariates' pixel value
surface_water_mask = surface_water > 20 
covariates_matrix[covariates_except_for_GLO30_ALOS, surface_water]  = 0

Screenshot from 2025-06-07 00-40-12
Fig. 3 Visual comparison of GEDTM30 v1 and GEDTM30 v1.1.

Screenshot from 2025-06-07 00-40-04
Fig. 4 Comparing multidirectional hillshade among GLO30, ALOS AW3D30m, GEDTM30 v1, GEDTM30 v1.1.

Limitations

Despite masking, ALOS AW3D30 and GLO30 retain elevation variability over water surfaces. Notably, ALOS occurs to exhibit lower elevation values near lake edges compared to lake centers, likely due to its photogrammetry characteristics.

Several mitigation strategies were

  • Replacing water pixels with ETOPO2022 values: Introduced resolution mismatches and abrupt elevation transitions at lake boundaries.
  • Substituting ALOS water pixels with GLO30 values prior to training model: Led to topographical inconsistencies, such as lake surfaces being elevated above adjacent land.
  • Post-hoc replacement of predicted water pixels with GLO30: Yielded similarly degraded results.

As with most global terrain products, GEDTM30 is best used in conjunction with a water mask (e.g., JRC-GSW) to exclude water surfaces. We still keep pixel for ML use cases internally but we strongly encourage to mask out water surface for hydrology and topography analysis. The JRC-GSW dataset is publicly available and facilitates reproducibility and community-driven refinement of GEDTM30 at any scale (local, regional, global). Users are also permitted to modify licensing as needed to support downstream applications.

2. Tile Boundary Inconsistencies

GEDTM30 exhibits discontinuities at tile boundaries, manifesting as abrupt changes in elevation values (see Fig 5). These artifacts arise from the global-to-local model refinement process, which uses warm_start=True to accelerate convergence during local model fine-tuning. This strategy improves training efficiency and preserves global-scale consistency but introduces limitations:

  • Inability to extrapolate across tile boundaries.
  • Increased sensitivity to noise, particularly where terrain variability is high near edges.

2 tile_inconsistency
Fig. 5 Inconsistency spotted by @robbibt. Image attributed by @robbibt in issue #4

Empirical analysis shows that global-to-local standard deviation increases relative to the global model in these boundary regions. This indicates that added decision trees in the refinement phase may overfit local noise, particularly at topographic peaks near tile edges.
Resolution Strategy

To address these inconsistencies, we implemented a statistical post-processing method to conditionally select local improvements. The procedure is as follows:

(1) Generate:

  • Global model predictions
  • Global-to-local model predictions
  • Global standard deviation
  • Global-to-local standard deviation

(2) Compute a mask ("local_improvement"): A boolean mask where global-to-local standard deviation is less than that of the global model.

(3) Apply substitution:

For pixels where the mask is True, replace global prediction and standard deviation with their global-to-local counterparts. Below is the pseudo code for pixel replacement algorithm.

global_m, global_std = model.predict(X_global) # global prediction

model.fit(extra_local_samples, warm_start=True)
local_m, local_std = model.predict(X_local)  # local prediction with extra local samples

local_improvement = global_std >= local_std
global_m[local_improvement] = local_m[local_improvement]
global_std[local_improvement] = local_std[local_improvement]
global_local_mask = local_improvement.astype(int)

save_raster(global_std,global_m,local_improvement.astype(int))

This selective replacement reduces boundary discontinuities while preserving the benefits of local adaptation. Figure 6 illustrates the replacement framework and Figure 7 showcases the result as improving tile consistency at Etna Mountain, Italy.

Screenshot from 2025-06-12 11-54-20
Fig. 6 The pipeline of updating global-to-local modeling to avoid tile inconsistency.

3. Vertical datum

We have registered vertical datum as EGM2008 (right code), compatible with CoperincusDEM and ALOS AW3D30.

4. Layers update

Here is the list of the update and additional layers. For the dataset reference please visit our Zenodo repository (10.5281/zenodo.15645631).

  1. Global Ensemble Digital Terrain Model:
    https://s3.opengeohub.org/global/edtm/gedtm_rf_m_30m_s_20060101_20151231_go_epsg.4326.3855_v20250611.tif

  2. Standard deviation of GEDTM30 prediction:
    https://s3.opengeohub.org/global/edtm/gedtm_rf_std_30m_s_20060101_20151231_go_epsg.4326.3855_v20250611.tif

  3. Global-to-local pixel selection mask:
    https://s3.opengeohub.org/global/edtm/gedtm_mask_c_30m_s_20060101_20151231_go_epsg.4326.3855_v20250611.tif

Below is the overview of the new Global-to-local pixel selection mask:
Screenshot from 2025-06-12 12-21-43

The new release of data is updated on our Zenodo repository (https://zenodo.org/records/15689805).

Reference

Pekel, J.-F., Cottam, A., Gorelick, N., and Belward, A.S. (2016). High-resolution mapping of global surface water and its long-term changes. Nature, 540(4), 418-422. doi:10.1038/nature20584

Full Changelog: https://github.com/openlandmap/GEDTM30/commits/v1.1