Skip to content

Instantly share code, notes, and snippets.

@ravikiranj
Created July 12, 2015 02:39
Show Gist options
  • Save ravikiranj/d2be3a549f42d73c7a9f to your computer and use it in GitHub Desktop.
Save ravikiranj/d2be3a549f42d73c7a9f to your computer and use it in GitHub Desktop.
Morgan Hill Elevation Calculator
#!/usr/bin/env python
import simplejson
import logging
import math
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(name=__name__)
fname = "runkeeper.com-1436665918102.json"
def get_raw_data():
fp = open(fname)
raw_data = fp.read()
fp.close()
return raw_data
raw_data = get_raw_data()
json_data = simplejson.loads(raw_data)
data = json_data["data"]
data_len = len(data)
total_dist = data[data_len-1][0]
max_ele = 0.0
min_ele = 99999.0
ele_gain = 0.0
ele_loss = 0.0
for i in xrange(data_len-1):
curr_ele = data[i][1]
next_ele = data[i+1][1]
ele_change = math.fabs(next_ele - curr_ele)
if next_ele > curr_ele:
ele_gain += ele_change
else:
ele_loss += ele_change
max_ele = max(max_ele, curr_ele, next_ele)
min_ele = min(min_ele, curr_ele, next_ele)
total_ele = ele_gain + ele_loss
ele_grade = 100 * (ele_gain/3280.8) / (total_dist * 1.6) # 100 * E (km) / D (km)
logger.info("Total Distance = %.4f miles, Total Elevation = %.4f ft", total_dist, total_ele)
logger.info("Elevation Gain = %.4f ft, Elevation Loss = %.4f ft", ele_gain, ele_loss)
logger.info("Max Elevation = %.4f ft, Min Elevation = %.4f ft", max_ele, min_ele)
logger.info("Elevation Grade = %.4f%%", ele_grade)
"""
INFO:__main__:Total Distance = 26.3492 miles, Total Elevation = 5784.1207 ft
INFO:__main__:Elevation Gain = 2900.2625 ft, Elevation Loss = 2883.8583 ft
INFO:__main__:Max Elevation = 695.5381 ft, Min Elevation = 321.5223 ft
INFO:__main__:Elevation Grade = 2.0969%
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment