import math
import datetime
from dateutil.parser import parse
+from pprint import pprint
def deg2rad(deg):
# Преобразование из градусов в радианы.
i.write(trksegnode,"trkpt")
def _get_elevation(self):
+
+ elev_data = []
+ for pt in self.trkpts:
+ if pt.elevation:
+ elev_data.append(pt.elevation)
+
gain = 0.0
loss = 0.0
- last_pt = None
- for pt in self.trkpts:
- if last_pt is not None:
- last_elevation = last_pt.elevation
+ last_elevation = None
+
+ window_size = 5
+ i = 0
+ moving_averages = []
+
+ while i < len(elev_data) - window_size + 1:
+ this_window = elev_data[i : i + window_size]
+ window_average = sum(this_window) / window_size
+ moving_averages.append(window_average)
+ i += 1
+
+ if len(moving_averages)>2:
+ elev_data = moving_averages
+
+ for pt in elev_data:
+ if last_elevation is not None:
try:
- if pt.elevation > last_elevation:
- gain += pt.elevation -last_elevation
+ if pt > last_elevation:
+ gain += pt - last_elevation
else:
- loss += last_elevation - pt.elevation
+ loss += last_elevation - pt
except:
pass
- last_pt=pt
+ last_elevation=pt
+
self.elevation_gain = gain
self.elevation_loss = loss
return ((minlat,minlon),(maxlat,maxlon))
def FixNames(self,linkname):
- goodname = linkname.decode('UTF-8')
+ pprint(linkname)
+ pprint(type(linkname))
+ if type(linkname) is unicode:
+ goodname=linkname
+ else:
+ goodname = linkname.decode('UTF-8')
badname = goodname.encode('ascii','replace')
if self.name and self.name.startswith(badname):
self.name=self.name.replace(badname,goodname)
if current_seg is not None:
new_segs.append(current_seg)
# Обработали
+ for trs in new_segs:
+ trs._get_elevation()
tr.trksegs = new_segs
+
def XMLTree(self):
root = etree.Element("gpx", attrib ={"creator": "pygpx",