J'ai créé un module Python ** `` wxparams``` ** qui collecte des fonctions qui calculent des éléments météorologiques, tels que des fonctions qui calculent la température du point de rosée à partir de la température et de l'humidité relative, je vais donc le publier. (Abréviation de ** Paramètres météorologiques **)
Avant de commencer Python, j'écrivais souvent des scripts pour traiter les données météorologiques en Perl, et j'assemblais également des fonctions qui sont souvent utilisées dans les champs liés à la météo dans le module Perl. En raison de l'influence de Corona, j'ai passé plus de temps à la maison (rires), j'ai donc décidé de le réécrire en Python sur cette machine.
Le code source est GitHub, et l'explication de son utilisation est résumée dans cet article car je le publierai si je le fais quand même.
Vous pouvez installer pip depuis mon GitHub.
pip install git+https://github.com/Yoshiki443/weather_parameters
Si vous n'êtes pas à l'aise avec l'installation de pip, vous pouvez télécharger et utiliser uniquement
wxparams / wxparams.py``` depuis GitHub.
C'est une licence MIT.
Je vais d'abord présenter un exemple de code.
import numpy as np
import wxparams as wx
temp = np.array([[0., 5.],[10., 20.]]) #Température[C]
rh = np.array([[90., 50.], [70., 99.5]]) #Humidité[%]
td = wx.RH_to_Td(temp, rh) #Température du point de rosée[C]
print(td)
#production
# [[-1.44330606 -4.56523582]
# [ 4.78251527 19.91913689]]
Importez d'abord. L'abréviation «wx» dans l'exemple de code est souvent utilisée comme abréviation pour la météo. Après l'importation, appelez la fonction. L'exemple ci-dessus montre le cas du calcul de la température du point de rosée à partir de la température et de l'humidité relative.
Les données saisies ici sont fondamentalement supposées être ** numpy.ndarray **. Ou cela fonctionne avec ** pandas.Series **. Si vous entrez chaque élément météorologique un par un, certaines fonctions fonctionneront et d'autres pas.
En tant que données d'entrée, par exemple, saisissez l'élément météorologique entier avec un plan de pression avec GPV (c'est-à-dire un tableau à deux dimensions) pour calculer un autre élément météorologique, ou entrez une colonne d'éléments météorologiques avec des données structurées telles que csv pour séparer Il est censé être utilisé pour calculer les éléments météorologiques de.
** numpy.ndarray ** est recommandé comme auteur, car certains processus supposent numpy.ndarray.
Vous trouverez ci-dessous une description de chaque fonction.
UV_to_SpdDir(U, V) La direction et la vitesse du vent sont calculées à partir de la composante UV du vent. La composante UV représente U = vent est-ouest et V = vent nord-sud, et les données de vent des prévisions numériques GPV telles que le MSM de l'agence météorologique sont généralement la composante UV. En général, le vent d'ouest a une valeur positive pour le vent d'est-ouest et le vent du sud a une valeur positive pour le vent du nord-sud. L'unité de vitesse du vent peut être n'importe quelle unité de vitesse telle que * m / s, noeud *. La direction du vent est de 360 degrés et non de 0 degrés vers le nord. Si la vitesse du vent est de 0, la direction du vent sera également de 0 degré.
** Paramètres: **
** Retour: **
SpdDir_to_UV(Wspd, Wdir) À l'opposé de UV_to_SpdDir, la composante UV du vent est calculée à partir de la direction et de la vitesse du vent. L'unité de vitesse du vent peut être n'importe quelle unité de vitesse telle que * m / s, noeud *.
** Paramètres: **
** Retour: **
Deg_to_Dir8(Wdir, dir_zero=None, numeric=False) Convertit la direction du vent de 360 degrés en 8 directions. La valeur renvoyée est l'alphabet "** N, NE, E, SE, S, SW, W, NW " qui représente les huit directions de " nord, nord-est, est, sud-est, sud, sud-ouest, ouest, nord-ouest ". Sera converti en. Si la direction du vent est 0, elle sera convertie en la chaîne de caractères spécifiée par l'argument dir_zero. La valeur par défaut est Aucun, mais dans le cas de la météo aéronautique, par exemple, vous pouvez l'utiliser pour convertir en " VRB **", qui indique un état où la direction du vent n'est pas fixe.
Si l'argument numeric est défini sur True, la sortie sera la valeur numérique "8, 1, 2, 3, 4, 5, 6, 7". À ce moment, le vrai nord est 8 au lieu de 0. Si la direction du vent est 0, la sortie sera 0.
** Paramètres: **
** Retour: **
Deg_to_Dir16(val, dir_zero=None, numeric=False) Convertit la direction du vent de 360 degrés en 16 directions, comme Deg_to_Dir8. Autrement dit, la valeur de retour est un alphabet représentant 16 directions de "** nord, nord nord-est, nord-est, est nord-est, est, est sud-est, sud-est, sud sud est, sud, sud sud-ouest, sud-ouest, ouest sud-ouest, ouest, ouest nord-ouest, nord-ouest, nord nord-ouest " Il est converti en " N / NNE / NE / ENE / E / ESE / SE / SSE / S / SSW / SW / WSW / W / WNW / NW / NNW **".
Si l'argument numeric est défini sur True, la sortie sera les valeurs numériques "16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15". Le traitement de la direction du vent 0 est le même que celui de Deg_to_Dir8.
** Paramètres: **
** Retour: **
Cross_Wind(Wspd, Wdir, RWY) La composante de vent de travers (vent de travers) du vent est calculée à partir de la vitesse du vent, de la direction du vent et de la direction de la piste à l'aéroport. L'unité de vitesse du vent peut être n'importe quelle unité de vitesse telle que * m / s, noeud *. L'unité de direction du vent est le * degré *. La piste est indiquée en 360 degrés au lieu du numéro RWY à 2 chiffres. Par exemple, pour RWY22, entrez 220 degrés.
** Paramètres: **
** Retour: **
Tail_Wind(Wspd, Wdir, RWY) La composante du vent arrière (vent arrière) du vent est calculée à partir de la vitesse du vent, de la direction du vent et de la direction de la piste à l'aéroport. D'autres sont identiques à Cross_Wind.
** Paramètres: **
** Retour: **
Head_Wind(Wspd, Wdir, RWY) La composante de vent de face (vent de face) du vent est calculée à partir de la vitesse du vent, de la direction du vent et de la direction de la piste à l'aéroport. Correspond à la valeur opposée de Tail_Wind. À part cela, c'est la même chose que Cross_Wind.
** Paramètres: **
** Retour: **
RH_to_Td(T, RH, formula="Bolton") La température du point de rosée [C] est calculée à partir de la température [C] et de l'humidité relative [%]. Puisque l'humidité relative ne peut pas être calculée si elle est de 0%, elle est convertie de sorte que 0,1% soit la valeur minimale. La pression de vapeur d'eau saturée [hPa] est calculée dans le processus de calcul, et il existe trois types de formules de calcul. Par défaut, la formule de Bolton est utilisée, mais la formule de Tetens et la formule d'approximation de l'OMM peuvent être spécifiées comme options. Voir T_to_WVP pour plus de détails.
** Paramètres: **
** Retour: **
Td_to_RH(T, Td, formula="Bolton") À l'opposé de RH_to_Td, l'humidité relative [%] est calculée à partir de la température [C] et de la température du point de rosée [C]. D'autres sont identiques à RH_to_Td.
** Paramètres: **
** Retour: **
T_to_WVP(T, formula="Bolton") Calculez la pression de vapeur d'eau saturée [hPa] à partir de la température [C]. Si vous entrez la température du point de rosée [C] au lieu de la température, la pression de vapeur d'eau [hPa] sera calculée. Il existe trois types de formules de calcul. La valeur par défaut utilise la formule de Bolton. En effet, il est mis en œuvre par la formule adoptée par l'Agence météorologique lors du calcul du niveau de température équivalent. Voir aussi Theta_e. Cependant, pour autant que je l'ai confirmé, peu importe la formule que vous utilisez dans la pratique, je pense donc que vous pouvez utiliser n'importe quelle formule que vous aimez. Personnellement, je connais la formule Tetens.
Expression Tetens:
** Paramètres: **
** Retour: **
WVP_to_T(es, formula="Bolton") La fonction inverse de T_to_WVP calcule la température [C] à partir de la pression de vapeur d'eau saturée [hPa]. Si vous entrez la pression de vapeur d'eau [hPa], la température du point de rosée [C] sera calculée.
** Paramètres: **
** Retour: **
T_Td(T, Td) Le nombre d'humidité [C] est calculé à partir de la température [C] et de la température du point de rosée [C]. C'est une fonction qui effectue simplement une soustraction.
** Paramètres: **
** Retour: **
Mixing_Ratio(Td, P, formula="Bolton") Calculez le rapport de mélange [g / g] à partir de la température du point de rosée [C] et de la pression [hPa]. Puisque la pression de vapeur d'eau saturée est calculée pendant le processus de calcul, la formule peut être spécifiée avec l'option de formule. Voir T_to_WVP pour les types d'options.
** Paramètres: **
** Retour: **
Theta(T, P) Le niveau de température [K] est calculé à partir de la température [C] et de la pression [hPa].
** Paramètres: **
** Retour: **
Tlcl(T, Td) À partir de la température [K] et de la température du point de rosée [K], calculez la température [K] à l'altitude de levage et de réglage. Veuillez noter que l'unité de température et de température du point de rosée est entrée en [K]. Il est utilisé dans le processus de calcul du niveau de température équivalent. Voir aussi Theta_e pour la formule.
** Paramètres: **
** Retour: **
Theta_e(T, Td, P, formula="Bolton") Le niveau de température équivalent [K] est calculé à partir de la température [C], de la température du point de rosée [C] et de la pression [hPa]. Il semble qu'il existe plusieurs formules pour calculer le niveau de température équivalent, mais ici méthode de calcul adoptée par l'Agence météorologique Il est conforme à. Pour plus de détails, reportez-vous à la dernière page du PDF lié.
Dans le PDF ci-dessus, la valeur de $ R_ {d} \ / \ C_ {pd} $ est ** 0,2854 **, mais je pense que c'est généralement ** 0,2857 **. Je ne sais pas pourquoi c'est ** 0,2854 **, s'il s'agit d'une erreur d'impression ou s'il y a une raison. La mise en œuvre a été adoptée ** 0,2857 **.
Puisque la pression de vapeur d'eau saturée est calculée pendant le processus de calcul, la formule peut être spécifiée avec l'option de formule. La valeur par défaut est "Bolton" suivant la formule de calcul de température équivalente de l'Agence météorologique. Voir T_to_WVP pour les types d'options.
** Paramètres: **
** Retour: **
SSI(P0, P1, T0, T1, Td0, formula="Bolton") Calculez le SSI, qui est un représentant de l'indice d'instabilité atmosphérique. Les entrées sont la pression d'altitude [hPa], la température [C] et la température du point de rosée [C] de l'air à soulever, et la pression d'altitude [hPa], température [C] de l'air soulevé. Normalement, le SSI est calculé à 850-500 hPa, mais il peut être calculé à n'importe quel niveau de pression. Puisque la pression de vapeur d'eau saturée est calculée pendant le processus de calcul, la formule peut être spécifiée avec l'option de formule. Voir T_to_WVP pour les types d'options.
** Paramètres: **
** Retour: **
K_Index(T850, Td850, T700, Td700, T500) Calcule l'indice K, l'un des indices d'instabilité atmosphérique. Les entrées sont la température de 850 hPa [C] et la température du point de rosée [C], la température de 700 hPa [C] et la température du point de rosée [C] et la température de 500 hPa [C].
** Paramètres: **
** Retour: **
MPS_to_KT(x) Il s'agit d'une conversion d'unité de vitesse telle que la vitesse du vent. Convertissez m / s en nœud.
** Paramètres: **
** Retour: **
KT_to_MPS(x) Il s'agit d'une conversion d'unité de vitesse telle que la vitesse du vent. Convertit le nœud en m / s.
** Paramètres: **
** Retour: **
M_to_FT(x) C'est une conversion d'unité de longueur telle que l'altitude. Convertissez le mètre en pieds.
** Paramètres: **
** Retour: **
FT_to_M(x) C'est une conversion d'unité de longueur telle que l'altitude. Convertissez les pieds en mètres.
** Paramètres: **
** Retour: **
degF_to_degC(x) C'est une conversion unitaire de température. Convertit Hua [F] en Set [C].
** Paramètres: **
** Retour: **
degC_to_degF(x) C'est une conversion unitaire de température. Convertit [C] en [F].
** Paramètres: **
** Retour: **
Comme je l'ai mentionné au début, j'ai réécrit ce que j'avais créé à l'origine en tant que module Perl en Python, donc je l'ai terminé une fois.
À l'avenir, nous intégrerons également les facteurs météorologiques suivants. Je ne sais pas s'il y a de la demande (rires), mais j'aimerais y parvenir avec l'engagement d'experts météorologiques.
Recommended Posts