Geo elevation data parser for "The Shuttle Radar Topography Mission" data
Python Makefile
Latest commit 421ad94 Nov 1, 2016 @tkrajina 0.3.2 + CHANGELOG

Build Status is a python parser for the Shuttle Radar Topography Mission elevation data.


You can see in action on Trackprofiler (online GPS track editor and organizer).

There is also a Golang port of this library: go-elevations.


import srtm
elevation_data = srtm.get_data()
print 'CGN Airport elevation (meters):', elevation_data.get_elevation(50.8682, 7.1377)

GPS Tracks

You can add elevations for all points in a GPS track with:

import srtm
import gpxpy
gpx = gpxpy.parse(open('your-gpx-file.gpx'))
elevation_data = srtm.get_data()

But this is raw SRTM data. If you need some approximations, you can try with:

import srtm.gpx
import gpxpy
gpx = gpxpy.parse(open('your-gpx-file.gpx'))
elevation_data = srtm.get_data()
elevation_data.add_elevations(gpx, smooth=True)

The result on a graph:

GPX elevations

In gray is the original elevation (taken with an Android smartphone). Blue is raw-srtm-data elevations, in red is the smoothed (approximated) srtm data.

You need gpxpy installed in order for this feature to work.

Elevation images

You can create elevation images with:

import srtm
geo_elevation_data = srtm.get_data()
image = geo_elevation_data.get_image((500, 500), (45, 46), (13, 14), 300)
# the image s a standard PIL object, you can save or show it:

On every elevation requested the library will:

  • Check if the SRTM file is stored locally
  • If not -- download it from NASA servers and store locally (in ~/.cache/srtm/)
  • Parse elevations from it

That's why the first run of your application will always take a few seconds.

Example images

Istra and Trieste:


Rio de Janeiro:


Miami and florida:





gpxelevations is a utility commandline tool to add/update elevations in a GPS track file:

$ gpxelevations -h
usage: gpxelevations [-h] [-o] [-p] [-s] [-c] [-f FILE] [-v]
                     [gpx_files [gpx_files ...]]

Adds elevation to GPX files

positional arguments:
  gpx_files             GPX files

optional arguments:
  -h, --help            show this help message and exit
  -o, --overwrite       Overwrite existing elevations (otherwise will add
                        elevations only where not yet present)
  -p, --approximate     Approximate elevations with neighbour point elevations
  -s, --smooth          Smooth elevations
  -c, --calculate       Calculate elevations (but don't change the GPX file)
  -f FILE, --file FILE  Output filename
  -v, --verbose         Verbose output

License is licensed under the Apache License, Version 2.0