-
Notifications
You must be signed in to change notification settings - Fork 0
/
run.py
63 lines (46 loc) · 1.67 KB
/
run.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
# coding: UTF-8
#TODO check if simplified file already exists
import os
import sys
import traceback
from lib import gpx, simplify
TOLERANCE = 0.0001
SIMPLIFIED_DIR = "simplified_tracks"
def simplify_track(filepath, filename, simplify_dir):
"""
parse GPX file, simplifying track and create new GPX file with simplified track
"""
full_filename = os.path.join(filepath, filename)
print "{0}:".format(filename)
parsed_gpx, points = gpx.get_data(full_filename)
print "\tPoints before simplifying: {0}".format(len(points))
simplified_points = simplify.simplify(points, TOLERANCE, True)
print "\tPoints after simplifying: {0}\n".format(len(simplified_points))
with open(os.path.join(simplify_dir, filename), 'w') as f:
f.write(gpx.generate_gpx(parsed_gpx, simplified_points))
f.flush()
def start():
"""
Main function
"""
if len(sys.argv) < 2:
sys.exit("Script usage: {0} d:\\tracks".format(os.path.basename(sys.argv[0])))
else:
tracks_dir = sys.argv[1]
save_dir = os.path.join(tracks_dir, SIMPLIFIED_DIR)
try:
filenames = os.listdir(tracks_dir)
except OSError:
sys.exit("You've entered wrong/bad path")
if not os.path.exists(save_dir):
os.mkdir(save_dir)
for filename in filenames:
if os.path.isfile(os.path.join(tracks_dir, filename)) and os.path.splitext(filename)[1].lower() == ".gpx":
try:
simplify_track(tracks_dir, filename, save_dir)
except Exception, msg:
print "Exeption: {0}".format(msg)
print traceback.format_exc()
if __name__ == "__main__":
start()