Mercurial Hosting > traffic-intelligence
comparison python/pavement.py @ 502:33574b94f09e
corrected a bug and improved code
author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
---|---|
date | Tue, 27 May 2014 15:43:14 -0400 |
parents | 6ebdd90ce3ee |
children | 7978b286fcfa |
comparison
equal
deleted
inserted
replaced
501:c81cbd6953fb | 502:33574b94f09e |
---|---|
104 | 104 |
105 def winterMaintenanceIndicators(data, startDate, endDate, circuitReference, snowThreshold): | 105 def winterMaintenanceIndicators(data, startDate, endDate, circuitReference, snowThreshold): |
106 '''Computes several winter maintenance indicators | 106 '''Computes several winter maintenance indicators |
107 data = entretien_hivernal = pylab.csv2rec('C:\Users\Alexandre\Documents\Cours\Poly\Projet\mesures_entretien_hivernal\mesures_deneigement.txt', delimiter = ',')''' | 107 data = entretien_hivernal = pylab.csv2rec('C:\Users\Alexandre\Documents\Cours\Poly\Projet\mesures_entretien_hivernal\mesures_deneigement.txt', delimiter = ',')''' |
108 import datetime | 108 import datetime |
109 somme_eau, somme_neige, somme_abrasif, somme_sel, somme_lc, somme_lrg, somme_lrd, premiere_neige, compteur_somme_abrasif = 0,0,0,0,0,0,0,0,0 | 109 somme_eau, somme_neige, somme_abrasif, somme_sel, somme_lc, somme_lrg, somme_lrd, compteur_premiere_neige, compteur_somme_abrasif = 0,0,0,0,0,0,0,0,0 |
110 | 110 |
111 if circuitReference in data['ref_circuit']: | 111 if circuitReference in data['ref_circuit']: |
112 for i in range(len(data)): | 112 for i in range(len(data)): |
113 if data['ref_circuit'][i] == circuitReference and (data['date'][i] + datetime.timedelta(days = 6)) <= endDate and (data['date'][i] + datetime.timedelta(days = 6)) > startDate: | 113 if data['ref_circuit'][i] == circuitReference and (data['date'][i] + datetime.timedelta(days = 6)) <= endDate and (data['date'][i] + datetime.timedelta(days = 6)) > startDate: |
114 premiere_neige += data['premiere_neige'][i] | 114 compteur_premiere_neige += float(data['premiere_neige'][i]) |
115 somme_neige += float(data['neige'][i]) | 115 somme_neige += float(data['neige'][i]) |
116 somme_eau += float(data['eau'][i]) | 116 somme_eau += float(data['eau'][i]) |
117 somme_abrasif += float(data['abrasif'][i]) | 117 somme_abrasif += float(data['abrasif'][i]) |
118 somme_sel += float(data['sel'][i]) | 118 somme_sel += float(data['sel'][i]) |
119 somme_lc += float(data['lc'][i]) | 119 somme_lc += float(data['lc'][i]) |
120 somme_lrg += float(data['lrg'][i]) | 120 somme_lrg += float(data['lrg'][i]) |
121 somme_lrd += float(data['lrd'][i]) | 121 somme_lrd += float(data['lrd'][i]) |
122 compteur_somme_abrasif += float(data['autre_abrasif_binaire'][i]) | 122 compteur_somme_abrasif += float(data['autre_abrasif_binaire'][i]) |
123 if compteur_premiere_neige >= 1: | |
124 premiere_neige = 1 | |
125 else: | |
126 premiere_neige = 0 | |
123 if compteur_somme_abrasif >= 1: | 127 if compteur_somme_abrasif >= 1: |
124 autres_abrasifs = 1 | 128 autres_abrasifs = 1 |
125 else: | 129 else: |
126 autres_abrasifs = 0 | 130 autres_abrasifs = 0 |
127 if somme_neige < snowThreshold: | 131 if somme_neige < snowThreshold: |
131 else: | 135 else: |
132 somme_eau, somme_neige, somme_abrasif, somme_sel, somme_lc, somme_lrg, somme_lrd, premiere_neige, autres_abrasifs, neigeMTQ_sup_seuil = '','','','','','','','','','' | 136 somme_eau, somme_neige, somme_abrasif, somme_sel, somme_lc, somme_lrg, somme_lrd, premiere_neige, autres_abrasifs, neigeMTQ_sup_seuil = '','','','','','','','','','' |
133 | 137 |
134 return (somme_eau, somme_neige, neigeMTQ_sup_seuil, somme_abrasif, somme_sel, somme_lc, somme_lrg, somme_lrd, premiere_neige, autres_abrasifs) | 138 return (somme_eau, somme_neige, neigeMTQ_sup_seuil, somme_abrasif, somme_sel, somme_lc, somme_lrg, somme_lrd, premiere_neige, autres_abrasifs) |
135 | 139 |
136 def ecWeatherIndicators(data, startDate, endDate, snowThreshold, weatherDatatype, minProportionMeasures = 0.): | 140 def weatherIndicators(data, startDate, endDate, snowThreshold, weatherDatatype, minProportionMeasures = 0.): |
137 '''Computes the indicators from Environment Canada files | 141 '''Computes the indicators from Environment Canada files |
138 (loaded as a recarray using csv2rec in data), | 142 (loaded as a recarray using csv2rec in data), |
139 between start and end dates (datetime.datetime objects) | 143 between start and end dates (datetime.datetime objects) |
140 | 144 |
141 weatherDataType is to indicate Environnement Canada data ('ec') or else MTQ | 145 weatherDataType is to indicate Environnement Canada data ('ec') or else MTQ |
145 compteur,nbre_jours_gel_consecutifs=0,0 | 149 compteur,nbre_jours_gel_consecutifs=0,0 |
146 tmoys = [] | 150 tmoys = [] |
147 seuils_T = [20,15,10,5] | 151 seuils_T = [20,15,10,5] |
148 deltas_T = [0,0,0,0] | 152 deltas_T = [0,0,0,0] |
149 startIndex = find(data['date'] == startDate) | 153 startIndex = find(data['date'] == startDate) |
150 nDays = (endDate - startDate).days+1 | 154 nDays = int((endDate - startDate).days)+1 |
151 if startIndex.size != 0: | 155 if len(startIndex) > 0 and startIndex+nDays <= len(data): |
152 for i in range(startIndex, startIndex+int(nDays)): | 156 startIndex = startIndex[0] |
157 for i in range(startIndex, startIndex+nDays): | |
153 if not np.isnan(data['tmax'][i]): | 158 if not np.isnan(data['tmax'][i]): |
154 tmax = data['tmax'][i] | 159 tmax = data['tmax'][i] |
155 else: | 160 else: |
156 tmax = None | 161 tmax = None |
157 if not np.isnan(data['tmin'][i]): | 162 if not np.isnan(data['tmin'][i]): |
158 tmin = data['tmin'][i] | 163 tmin = data['tmin'][i] |
159 else: | 164 else: |
195 return (nbre_jours_T_negatif,nbre_jours_gel_degel, deltas_T, nbre_jours_gel_consecutifs, pluie_tot, neige_tot, neigeEC_sup_seuil, ecart_type_T) | 200 return (nbre_jours_T_negatif,nbre_jours_gel_degel, deltas_T, nbre_jours_gel_consecutifs, pluie_tot, neige_tot, neigeEC_sup_seuil, ecart_type_T) |
196 else: | 201 else: |
197 return [None]*2+[[None]*len(seuils_T)]+[None]*5 | 202 return [None]*2+[[None]*len(seuils_T)]+[None]*5 |
198 | 203 |
199 def mtqWeatherIndicators(data, startDate, endDate,tmax,tmin,tmoy): | 204 def mtqWeatherIndicators(data, startDate, endDate,tmax,tmin,tmoy): |
205 print("Deprecated, use weatherIndicators") | |
200 from matplotlib.mlab import find | 206 from matplotlib.mlab import find |
201 nbre_jours_T_negatif,nbre_jours_gel_degel,ecart_type_T = 0,0,0 | 207 nbre_jours_T_negatif,nbre_jours_gel_degel,ecart_type_T = 0,0,0 |
202 compteur,nbre_jours_gel_consecutifs=0,0 | 208 compteur,nbre_jours_gel_consecutifs=0,0 |
203 tmoys = [] | 209 tmoys = [] |
204 seuils_T = [20,15,10,5] | 210 seuils_T = [20,15,10,5] |