SRTM.py is a python parser for the Shuttle Radar Topography Mission elevation data.
See: http://www2.jpl.nasa.gov/srtm/.
You can see SRTM.py 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))
Cache files with urls of all SRTM files are generated in your HOME directory. In case, you need another location:
import srtm
elevation_data = srtm.get_data(local_cache_dir="mydir")
print('CGN Airport elevation (meters):', elevation_data.get_elevation(50.8682, 7.1377))
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()
elevation_data.add_elevations(gpx)
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:
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.
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:
image.show()
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.
Istra and Trieste:
Rio de Janeiro:
Miami and florida:
Sidney:
gpxelevations is a utility command line 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 points elevation
-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
SRTM.py is licensed under the Apache License, Version 2.0