What causes differences between DEMs?

Different elevation datasets have different height values for the exact same location. Here are some reasons why.


The most obvious quality marker of DEMs is resolution. Typically stated in metres or degrees, this represents the horizontal grid spacing of the data. For example, a 30m elevation dataset means there’s one pixel/datapoint every 30m in a grid, and queries for points between those grid corners will be interpolated.

Resolution is an important measure as it limits the amount of detail that can be resolved in the dataset: a 30m dataset will never capture the depth of a small stream or an individual boulder.

Resolution is also correlated with quality: high-resolution datasets are expensive to produce and are often funded with the aim of significantly improving on ubiquitous 30m satellite data.


Some datasets are just better. Even at a given resolution, different sensing methods have varying quality, and post-processing can introduce further differences in accuracy.

Accuracy isn’t always constant for an entire dataset. Clearly this is the case for GPXZ’s composite dataset, but even datasets advertised as single-source may contain areas filled from other datasets.

Vertical datum

Elevation isn’t an absolute measurement, rather it is the difference in height between a point and sea level, and different datasets use different definitions for sea level.

Many countries and regions have their own definition of sea level, sometimes pre-dating electronic mapping. This can cause a locally-consistent offset between two datasets. The science and history of these sea level definitions is really interesting, the wikipedia page for geodesy has more.

So, even if two datasets fundamentally agree on the elevation of at a point, the raw values in the datasets could be different due to different definitions of sea level.

Surface vs terrain

An elevation dataset has to make decisions about where to measure elevation from

  • The tops of tress or the forest floor?
  • The roofs of buildings, or the ground floor?
  • The bed of a lake/river or the water surface?
  • The bottom of the ocean or the water surface?

These combinations of decisions results in different kinds of DEMs

  • A digital surface model (DSM) always takes the highest elevation. This is the easiest elevation to measure, and is often used in low-resolution datasets.
  • A digital terrain model (DTM) tries to find the level of the dirt, which is often more useful for end users but requires sensor equipment that can penetrate vegetation.
  • A bare-earth DTM applies post-processing to remove buildings, which is difficult and can introduce artefacts.
  • LIDAR doesn’t penetrate water very well, so even a DTM might use water surface elevation, or have quality issues in locations with water. In hydrology applications, practitioners will often “burn in” river depths from other sources.
  • Sea/ocean depth data is known as bathymetry, and is collected using different methods than land elevation. Any dataset including both (like gpxz) is likely to be a composite.


Our environment is constantly changing. DSMs are affected by changing vegetation, snow, and building construction. Even DTMs are affected by landslides, excavation, earthquakes, and geological shift, and meandering rivers.

By the time an elevation dataset is released, the raw sensor data it is based on can be years old. The larger the dataset the older the imagery, and datasets can merge data from different passes years apart.

The documentation for the dataset you’re using should detail at least the period of image acquisition. Some datasets will provide more granular information about exactly when each portion of the dataset was acquired.

Integer rounding

High-quality elevation datasets are usually stored as floating-point numbers: an elevation value can have many decimal places.

However some datasets, especially low-resolution global datasets, are stored as integers or whole numbers. This isn’t really a problem: if the dataset is only accurate to the nearest 5m, then recording elevation down to the millimetre, is at best pointless and at worst misleading!

But when comparing two datasets, an integer dataset may appear less smooth.