pandas xyz Wiki - aaron-schroeder/pandas-xyz GitHub Wiki
Background
This project originated as the part of my spatialfriend package that handled elevation smoothing and statistics like gain and loss. Lately, I've been interested in keeping my work in more self-contained modules with lighter dependencies. I also wanted to integrate the algorithms more closely with pandas data structures like DataFrame. So I started from scratch with a new package!
Introduction
Determining one's elevation on Earth's surface has become a lot easier thanks to high-accuracy consumer GPS products and digital elevation models (DEMs) of Earth's topography. Still, there are errors in GPS location and in every Earth surface model. When working with elevation and position time series, for example calculating instantaneous slopes during a trail running workout, stricter requirements are placed on the data. Even with a perfectly accurate DEM, inaccurate GPS data can yield totally unreasonable elevation profiles and path slopes, documenting work or elevation gain that the runner did not actually do. The same can be said for a perfectly accurate GPS trace on an inaccurate DEM.
The goal of this project is to wrangle messy or unreasonable elevation data, and return stats and time series that actually match the athlete's experience. Some of the data-related problems I'm trying to solve are:
- Unreasonably steep slopes or noisy data in your elevation profile making running power calculations meaningless (if you are into that kind of thing).
- Wondering if those elevation gain stats you read on your GPS device or barometric altimeter are accurate. No more
- Artificially adding distance to your workout because your GPS was drifting around while you were waiting at a stoplight.
- Apples-to-oranges data comparisons because of differences between devices or datasets.
The Elevation Smoothing Algorithm
The algorithm I apply to filter elevation time series is based on a paper produced by the National Renewable Energy Laboratory. Their algorithm is meant to smooth the elevation time series of a moving vehicle for more reasonable estimates of road grades for energy consumption models. This actually isn't that different from my end goal of smoothing elevation series for more reasonable estimates of elevation gain and energy consumption by ambulating humans! The paper is included in the resources folder