def vents(vv, dv, origine, sites): """ Calcule les statistiques relatives aux pourcentages d'influence du site émetteur d'origine sur les sites récepteurs au travers du calcul de la rose des vents. Seuls les vents > 1 m/s seront pris en compte dans les calculs, pour une rose des vents de 16 secteurs. Paramètres: vv: vitesses de vent dv: directions du vent origine: Site origine des vents à étudier sites: liste de sites récepteurs à calculer """ nsector = 16 classes = np.arange(1, 30, 1) # classes de vitesses de vent vv = vv.astype(float) dv = dv.astype(float) # suppression des données nulles vv, dv = utils.dissolveMask(vv, dv) vv = vv.dropna() dv = dv.dropna() # Calcul des pourcentages de vents par secteur dirs, bins, table = histogram(dir=dv, var=vv, bins=classes, nsector=nsector, normed=False, blowto=True) freq = table.sum(axis=0) / table.sum() * 100 # Création du dataframe des résultats de pourcentages sous les vents freq = pd.DataFrame(zip(dirs, freq), columns=('dir_debut', 'pourcentage')) # Décalage des directions pour supprimer le problème du secteur nord [350°-10°] delta = 360. / nsector / 2 freq['dir_debut'] = freq['dir_debut'] + delta # on ajoute une colonne où sont stockées les directions de fin freq['dir_fin'] = freq['dir_debut'].shift(-1) freq.at[freq.index[0], 'dir_debut'] = 0. freq.at[freq.index[-1], 'dir_fin'] = 360. # Calcule des angles et distances des sites par rapport à l'origine angles = angles_avec(sites, origine) distances = distances_avec(sites, origine) # On regroupe angles et distances dans un unique dataframe df = angles.join(distances) # Pour chaque site, on cherche le pourcentage sous les vents de l'origine df['pourcentage'] = 0. for idx in df.index: ang = df.at[idx, 'angle'] cond = (ang >= freq['dir_debut']) & (ang < freq['dir_fin']) p = freq.get(cond)['pourcentage'] try: df.at[idx, 'pourcentage'] = p except: pass df = df.applymap(np.round) return df
def vents(vv, dv, speed_classes=[0, 1, 2, 3, 4, 5], histo=True, savein=None, suffix='', format='jpg', **kwargs): """Trace les graphiques suivants (16 secteurs fixés): - rose des vents - histogramme des vitesses de vent - histogramme des directions de vent Paramètres: vv: vitesses de vent dv: directions du vent speed_classes: classes de vent histo: si oui ou non il faut tracer les histogrammes de direction et vitesse savein: 'repertoire' oé enregistrer les graphiques suffix: suffixe à ajouter au nom du fichier image sauvegardé format: format du fichier image é sauvegarder. Si aucun, 'jpg' est choisi. """ axes_list = list() if not format: format = 'jpg' if suffix: suffix = '_%s' % suffix else: suffix = '' vv = vv.astype(float) dv = dv.astype(float) vv, dv = utils.dissolveMask(vv, dv) # vv = vv.dropna() # dv = dv.dropna() # Rose des vents try: ax = new_wraxe() ax.bar(dir=dv, var=vv, bins=speed_classes, opening=0.8, normed=True, **kwargs) ax.legend() plt.draw() freq = ax._info['table'] if savein: plt.savefig("%s/RDV%s.%s" % (savein, suffix, format)) axes_list.append(ax) except Exception, error: print error