H3-indexed terrain data from GEDTM-30m in Apache Parquet format. Ten H3 resolutions (1–10), one file per resolution, sorted by h3_index. Available in two versions: v2 (recommended) with BIGINT h3_index and no geometry columns, and v1 (legacy) with VARCHAR h3_index and native Parquet 2.11+ GEOMETRY.
Source
GEDTM-30m (OpenGeoHub), 30m resolution, global land coverage
H3 cell ID (int64). Sorted for delta encoding compression and range-based queries.
elev
FLOAT
meters
Elevation above sea level
slope
FLOAT
degrees
Terrain slope (0 = flat, 90 = cliff)
aspect
FLOAT
degrees
Slope direction (0/360 = N, 90 = E, 180 = S, 270 = W)
tri
FLOAT
meters
Terrain Ruggedness Index — mean abs. elevation diff to 8 neighbors
tpi
FLOAT
meters
Topographic Position Index — elevation minus mean of 8 neighbors (+ridge, -valley)
geometry, lat, and lon columns are removed in v2 — derive them via the DuckDB h3 extension: h3_cell_to_lat(h3_index), h3_cell_to_lng(h3_index), h3_cell_to_boundary_wkt(h3_index).
v1 (legacy)
Column
Type
Unit
Description
h3_index
VARCHAR
—
H3 cell ID (hex string)
geometry
GEOMETRY
—
Cell center point (native Parquet 2.11+ GEOMETRY, EPSG:4326)
lat
FLOAT
degrees
Cell center latitude
lon
FLOAT
degrees
Cell center longitude
elev
FLOAT
meters
Elevation above sea level
slope
FLOAT
degrees
Terrain slope (0 = flat, 90 = cliff)
aspect
FLOAT
degrees
Slope direction (0/360 = N, 90 = E, 180 = S, 270 = W)
tri
FLOAT
meters
Terrain Ruggedness Index — mean abs. elevation diff to 8 neighbors
tpi
FLOAT
meters
Topographic Position Index — elevation minus mean of 8 neighbors (+ridge, -valley)
Sample values (res 5, Everest region):
h3_index
elev
slope
aspect
tri
tpi
853c0317fffffff
6,879 m
40.8°
134°
327 m
52 m
853c03bbfffffff
6,568 m
23.0°
221°
223 m
31 m
How It Works
Terrain derivatives are computed from the GEDTM-30m elevation raster:
Derivative
Method
Reference
Slope
arctan(√(dz/dx² + dz/dy²)) via central differences, pixel sizes converted to meters using latitude-dependent scale
Horn (1981)
Aspect
atan2(-dz/dx, dz/dy), converted to 0–360° compass bearing
Horn (1981)
TRI
Mean absolute elevation difference across 3×3 neighborhood
Riley et al. (1999)
TPI
Center pixel minus mean of 3×3 neighborhood
Weiss (2001)
Values at H3 cell centers are obtained by bilinear interpolation from the raster grid (scipy RegularGridInterpolator).
DEM is read at different resolutions depending on H3 level:
H3 Res
DEM Sampling
Rationale
1–5
~500 m
Cells are 8–418 km; coarse DEM sufficient
6–7
~110 m
Cells are 1.2–3.2 km; finer detail needed
8–10
~30 m (native)
Cells are 66–461 m; full resolution
More Examples
v2 queries
1-- Range query on sorted BIGINT h3_index — row group min/max statistics prune efficiently
13 AND lat BETWEEN 27 AND 29 AND lon BETWEEN 86 AND 88;
Geometry Format
v2 drops the geometry column entirely. Coordinates are derivable from the BIGINT h3_index via the DuckDB h3 extension (h3_cell_to_lat, h3_cell_to_lng, h3_cell_to_boundary_wkt). This eliminates the need for INSTALL spatial and reduces file size.
v1 retains the geometry column, written with GEOPARQUET_VERSION 'BOTH', providing dual compatibility:
Native Parquet 2.11+ GEOMETRY logical type — per-row-group bounding box statistics for spatial filter pushdown. Supported by DuckDB 1.5+, Apache Arrow (Rust), Apache Iceberg, GDAL 3.12+.
GEDTM-30m — Global Ensemble Digital Terrain Model at 30m resolution. Cloud Optimized GeoTIFF, 1,440,010 × 600,010 px, Int32 (decimeters, scale 0.1), EPSG:4326, global land coverage 65°S–85°N.
Ho, Y., Grohmann, C. H., Lindsay, J., Reuter, H. I., Parente, L., Witjes, M., & Hengl, T. (2025). GEDTM30: global ensemble digital terrain model at 30 m and derived multiscale terrain variables. PeerJ, 13, e19673. doi:10.7717/peerj.19673