Mercurial Hosting > traffic-intelligence
annotate scripts/visualize-monresovelo.py @ 763:277e9cdcedce dev
added demo script for monresovelo
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Sun, 29 Nov 2015 00:22:58 -0500 |
parents | |
children |
rev | line source |
---|---|
763
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
2 import simplejson, sys, datetime |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
3 import moving, utils |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
4 from pyproj import Proj |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
5 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
6 import matplotlib.pyplot as plt |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
7 import matplotlib.mlab as pylab |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
8 import numpy as np |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
9 import pandas as pd |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
10 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
11 #notes = [f['properties']['notes'] for f in data['features'] if len(f['properties']['notes']) > 0] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
12 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
13 english2French = {'Commute': 'Domicile-travail', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
14 'Errand': 'Courses', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
15 'Exercise': 'Sport', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
16 'Leisure': 'Loisirs', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
17 'Other': 'Autre', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
18 'Autres': 'Autre', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
19 'Autres motifs': 'Autre', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
20 'School': u'École', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
21 'Shopping': 'Magasinage', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
22 'Work-Related': 'Travail', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
23 'Work-related': 'Travail', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
24 'Other': 'Autre', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
25 'other': 'Autre'} |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
26 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
27 odMotifs = ['Magasinage', 'Retour au domicile', "Chercher quelqu'un", |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
28 'Travail ', '\xc9tude / \xc9cole', 'Autre', 'Loisir', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
29 "Visites d'ami(e)s et/ou de la parent\xe9", "Reconduire quelqu'un", |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
30 "Rendez-vous d'affaires", 'Sant\xe9', |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
31 'Ind\xe9termin\xe9 / refus / NSP'] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
32 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
33 def convertJsonToMTM(data = None, filename = None): |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
34 'Converts the in put json data to MTM and optionally saves to file' |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
35 proj = Proj(init="epsg:2950") |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
36 if data is None: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
37 data = simplejson.load(open(filename)) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
38 for i in xrange(len(data['features'])): |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
39 latlon = data['features'][i]['geometry']['coordinates'] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
40 mtm = [proj(p[0], p[1]) for p in latlon] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
41 data['features'][i]['geometry']['coordinates'] = mtm |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
42 if filename is not None: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
43 simplejson.dump(data, open(utils.removeExtension(filename)+'-mtm.json', 'w')) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
44 return data |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
45 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
46 def convertToObjects(data, timeStep = 1, project = True, minLength = 10): |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
47 'Converts the trips to the moving.MovingObject class from Traffic Intelligence' |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
48 if project: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
49 proj = Proj(init="epsg:2950") |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
50 objects = [] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
51 nTrips = len(data['features']) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
52 for i in xrange(nTrips): |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
53 latlon = data['features'][i]['geometry']['coordinates'] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
54 if project: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
55 projectedX = [proj(p[0], p[1]) for p in latlon[::timeStep]] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
56 else: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
57 projectedX = latlon[::timeStep] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
58 o = moving.MovingObject(num = i, positions = moving.Trajectory(np.array(projectedX).T.tolist())) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
59 o.properties = data['features'][i]['properties'] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
60 o.motif = english2French.get(o.properties['purpose'], o.properties['purpose']) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
61 try: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
62 o.start = datetime.datetime.strptime(o.properties['start'], '%Y-%m-%d %H:%M:%S') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
63 o.stop = datetime.datetime.strptime(o.properties['stop'], '%Y-%m-%d %H:%M:%S') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
64 if o.positions.length() > minLength: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
65 objects.append(o) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
66 except TypeError: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
67 print('{} {}'.format(o.properties['start'], o.properties['stop'])) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
68 print('issue with {}'.format(o.properties)) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
69 #o.start = datetime.datetime(1979, 7, 21) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
70 #o.stop = o.start |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
71 #print(e) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
72 return objects |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
73 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
74 filename = './trip5000.json' |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
75 data = simplejson.load(open(filename)) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
76 # od = pd.read_csv('/home/nicolas/tmp/defivelomtl/velo-od-2013/od13niv2 - Résident MTL avec vélo.csv', delimiter = ';') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
77 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
78 #convertJsonToMTM(data) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
79 #objects = convertToObjects(data, project = False, minLength = 10) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
80 objects = convertToObjects(data, minLength = 10) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
81 colors = utils.PlottingPropertyValues('rk') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
82 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
83 def printMRV(objects, motifs, color, linewidth, alpha, blackBG = False): |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
84 fig = plt.figure() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
85 for o in objects: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
86 if o.motif in motifs: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
87 o.plot(color, linewidth = linewidth, alpha = alpha) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
88 plt.axis('equal') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
89 plt.axis('off') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
90 plt.tight_layout() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
91 if blackBG: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
92 fig.patch.set_facecolor('black') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
93 plt.savefig(u'mrv-'+u'-'.join(motifs).replace(' ', '-')+'-'+color+'-blackbg.png', dpi = 300, facecolor=fig.get_facecolor(), edgecolor='none') |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
94 else: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
95 plt.savefig(u'mrv-'+u'-'.join(motifs).replace(' ', '-')+'-'+color+u'.png', dpi = 300) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
96 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
97 for i, m in enumerate(allmotifs): |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
98 printMRV(objects, [m], colors[i], 0.5, 0.1) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
99 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
100 printMRV(objects, ['Aller au travail', 'Domicile-travail'], 'k', 0.5, 0.1) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
101 printMRV(objects, ['Travail', u'D\xe9placement professionnel'], 'k', 0.5, 0.1) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
102 printMRV(objects, ['Aller au travail', 'Domicile-travail', 'Travail', u'D\xe9placement professionnel'], 'k', 0.5, 0.1) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
103 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
104 # generate an enriched json with added data |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
105 generateJSON = False |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
106 if generateJSON: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
107 for o in objects: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
108 o.positions.computeCumulativeDistances() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
109 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
110 #properties = {'length': [], |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
111 # 'wiggliness': []} |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
112 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
113 removeBothEnds = 2 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
114 # export mean speed, nseconds, wiggliness, speeds, accel |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
115 for o in objects: |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
116 #print o.positions.length(), (o.stop-o.start).seconds, (o.stop-o.start).seconds/float(o.positions.length()), o.positions.wiggliness() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
117 #print o.positions.length(), o.properties['n_coord'], len(o.positions.differentiateSG(5,2,2)), len(o.positions.differentiateSG(5,2,1)) |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
118 speeds = o.positions.differentiateSG(5,2,1, removeBothEnds = removeBothEnds).norm().tolist() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
119 accel = o.positions.differentiateSG(5,2,2, removeBothEnds = removeBothEnds).norm().tolist() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
120 data['features'][o.getNum()]['properties']['speeds'] = [speeds[0]]*removeBothEnds+speeds+[speeds[-1]]*removeBothEnds |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
121 data['features'][o.getNum()]['properties']['accelerations'] = [accel[0]]*removeBothEnds+accel+[accel[-1]]*removeBothEnds |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
122 data['features'][o.getNum()]['properties']['n_points'] = o.positions.length() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
123 data['features'][o.getNum()]['properties']['n_seconds'] = (o.stop-o.start).seconds |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
124 data['features'][o.getNum()]['properties']['mean_speed'] = o.positions.cumulativeDistances[-1]/data['features'][o.getNum()]['properties']['n_seconds'] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
125 data['features'][o.getNum()]['properties']['wiggliness'] = o.positions.wiggliness() |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
126 |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
127 nums = [o.getNum() for o in objects] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
128 data['features'] = [d for i, d in enumerate(data['features']) if i in nums] |
277e9cdcedce
added demo script for monresovelo
Nicolas Saunier <nicolas.saunier@polymtl.ca>
parents:
diff
changeset
|
129 simplejson.dump(data, open(utils.removeExtension(filename)+'-enriched.json', 'w')) |