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]