Veröffentlichen Sie ein Python-Modul, das meteorologische Elemente berechnet

Einführung

Ich habe ein Python-Modul ** `` `wxparams``` ** erstellt, das Funktionen sammelt, die meteorologische Elemente berechnen, z. B. Funktionen, die die Taupunkttemperatur aus Temperatur und relativer Luftfeuchtigkeit berechnen. Daher werde ich es veröffentlichen. (Abkürzung für ** Wetterparameter **)

Bevor ich Python gestartet habe, habe ich häufig Skripte für die Verarbeitung von Wetterdaten in Perl geschrieben und Funktionen zusammengestellt, die häufig in wetterbezogenen Feldern im Perl-Modul verwendet werden. Aufgrund des Einflusses von Corona verbrachte ich mehr Zeit zu Hause (lacht) und beschloss, es auf diesem Computer in Python umzuschreiben.

Ich werde es veröffentlichen, wenn ich es trotzdem mache, daher lautet der Quellcode GitHub, und die Erklärung zur Verwendung ist in diesem Artikel zusammengefasst.

Installation

Sie können pip von meinem GitHub installieren.

pip install git+https://github.com/Yoshiki443/weather_parameters

Wenn Sie mit der Pip-Installation nicht vertraut sind, können Sie nur `` `wxparams / wxparams.py``` von GitHub herunterladen und verwenden.

Lizenz

Es ist eine MIT-Lizenz.

Hauptfunktionen

  1. Funktionen, die mit dem Wind umgehen
  1. Eine Funktion, die die Wassermenge in der Atmosphäre regelt
  1. Funktion in Bezug auf die atmosphärische Stabilität
  1. Einheitenumrechnung

Wie benutzt man

Ich werde zuerst ein Codebeispiel vorstellen.

import numpy as np
import wxparams as wx
temp = np.array([[0., 5.],[10., 20.]]) #Temperatur[C]
rh = np.array([[90., 50.], [70., 99.5]]) #Feuchtigkeit[%]
td = wx.RH_to_Td(temp, rh) #Taupunkttemperatur[C]
print(td)
#Ausgabe
# [[-1.44330606 -4.56523582]
#  [ 4.78251527 19.91913689]]

Zuerst importieren. Die Abkürzung "wx" im Codebeispiel wird häufig als Abkürzung für Wetter verwendet. Rufen Sie nach dem Import die Funktion auf. Das obige Beispiel zeigt den Fall der Berechnung der Taupunkttemperatur aus der Temperatur und der relativen Luftfeuchtigkeit.

Die hier eingegebenen Daten werden grundsätzlich als ** numpy.ndarray ** angenommen. Oder es funktioniert mit ** pandas.Series **. Wenn Sie jedes Wetterelement einzeln eingeben, funktionieren einige Funktionen und andere nicht.

Geben Sie als Eingabedaten beispielsweise das gesamte meteorologische Element mit einer Druckebene mit GPV (dh einem zweidimensionalen Array) ein, um ein anderes meteorologisches Element zu berechnen, oder geben Sie eine Spalte meteorologischer Elemente mit strukturierten Daten wie csv ein und trennen Sie es. Es soll zur Berechnung der Wetterelemente von verwendet werden.

** numpy.ndarray ** wird als Autor empfohlen, da einige Prozesse numpy.ndarray annehmen.

Unten finden Sie eine Beschreibung der einzelnen Funktionen.

Funktionen, die mit dem Wind umgehen

UV_to_SpdDir(U, V) Die Windrichtung und -geschwindigkeit werden aus der UV-Komponente des Windes berechnet. Die UV-Komponente repräsentiert U = Ost-West-Wind und V = Nord-Süd-Wind, und die Winddaten von GPV mit numerischer Vorhersage wie der Meteorological Agency MSM sind normalerweise die UV-Komponente. Im Allgemeinen hat der Westwind einen positiven Wert für den Ost-West-Wind und der Südwind einen positiven Wert für den Nord-Süd-Wind. Die Einheit der Windgeschwindigkeit kann eine beliebige Geschwindigkeitseinheit sein, z. B. * m / s, Knoten *. Die Windrichtung beträgt 360 Grad, nicht 0 Grad nach Norden. Wenn die Windgeschwindigkeit 0 ist, beträgt die Windrichtung ebenfalls 0 Grad.

** Parameter: **

** Kehrt zurück: **


SpdDir_to_UV(Wspd, Wdir) Im Gegensatz zu UV_to_SpdDir wird die UV-Komponente des Windes aus der Windrichtung und -geschwindigkeit berechnet. Die Einheit der Windgeschwindigkeit kann eine beliebige Geschwindigkeitseinheit sein, z. B. * m / s, Knoten *.

** Parameter: **

** Kehrt zurück: **


Deg_to_Dir8(Wdir, dir_zero=None, numeric=False) Konvertiert die Windrichtung von 360 Grad in 8 Richtungen. Der Rückgabewert ist das Alphabet "** N, NE, E, SE, S, SW, W, NW ", das die acht Richtungen von " Nord, Nordost, Ost, Südost, Süd, Südwest, West, Nordwest " darstellt. Wird konvertiert zu. Wenn die Windrichtung 0 ist, wird sie in die durch das Argument dir_zero angegebene Zeichenfolge konvertiert. Die Standardeinstellung ist Keine. Bei Flugwetter können Sie sie beispielsweise in " VRB **" konvertieren. Dies zeigt einen Zustand an, in dem die Windrichtung nicht festgelegt ist.

Wenn das Argument numerisch auf True gesetzt ist, ist die Ausgabe der numerische Wert "8, 1, 2, 3, 4, 5, 6, 7". Zu diesem Zeitpunkt ist der wahre Norden 8 statt 0. Wenn die Windrichtung 0 ist, ist der Ausgang 0.

** Parameter: **

** Kehrt zurück: **


Deg_to_Dir16(val, dir_zero=None, numeric=False) Konvertiert die Windrichtung von 360 Grad in 16 Richtungen, wie Deg_to_Dir8. Das heißt, der Rückgabewert ist ein Alphabet, das 16 Richtungen von "** Nord, Nordnordost, Nordost, Ostnordost, Ost, Ostsüdost, Südost, Südsüdost, Süd, Südsüdwest, Südwest, Westsüdwest, West, Westnordwest, Nordwest, Nordnordwest " darstellt. Es wird in " N / NNE / NE / ENE / E / ESE / SE / SSE / S / SSW / SW / WSW / W / WNW / NW / NNW **" konvertiert.

Wenn das Argument numerisch auf True gesetzt ist, werden die numerischen Werte "16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15" ausgegeben. Die Behandlung der Windrichtung 0 ist die gleiche wie bei Deg_to_Dir8.

** Parameter: **

** Kehrt zurück: **


Cross_Wind(Wspd, Wdir, RWY) Die Seitenwindkomponente (Seitenwind) des Windes wird aus der Windgeschwindigkeit, Windrichtung und Richtung der Landebahn am Flughafen berechnet. Die Einheit der Windgeschwindigkeit kann eine beliebige Geschwindigkeitseinheit sein, z. B. * m / s, Knoten *. Die Einheit der Windrichtung ist * Grad *. Die Landebahn wird in 360 Grad anstelle der zweistelligen RWY-Nummer angegeben. Geben Sie für RWY22 beispielsweise 220 Grad ein.

** Parameter: **

** Kehrt zurück: **


Tail_Wind(Wspd, Wdir, RWY) Die Rückenwindkomponente (Rückenwind) des Windes wird aus der Windgeschwindigkeit, Windrichtung und Richtung der Landebahn am Flughafen berechnet. Andere sind die gleichen wie Cross_Wind.

** Parameter: **

** Kehrt zurück: **


Head_Wind(Wspd, Wdir, RWY) Die Gegenwindkomponente (Gegenwind) des Windes wird aus der Windgeschwindigkeit, Windrichtung und Richtung der Landebahn am Flughafen berechnet. Entspricht dem entgegengesetzten Wert von Tail_Wind. Davon abgesehen ist es dasselbe wie Cross_Wind.

** Parameter: **

** Kehrt zurück: **


Eine Funktion, die die Wassermenge in der Atmosphäre regelt

RH_to_Td(T, RH, formula="Bolton") Berechnen Sie die Taupunkttemperatur [C] aus der Temperatur [C] und der relativen Luftfeuchtigkeit [%]. Da die relative Luftfeuchtigkeit bei 0% nicht berechnet werden kann, wird sie so umgerechnet, dass 0,1% der Mindestwert ist. Der gesättigte Wasserdampfdruck [hPa] wird im Berechnungsprozess berechnet, und es gibt drei Arten von Berechnungsformeln. Standardmäßig wird die Bolton-Formel verwendet, aber die Tetens-Formel und die WMO-Approximationsformel können als Optionen angegeben werden. Siehe T_to_WVP für Details.

** Parameter: **

** Kehrt zurück: **


Td_to_RH(T, Td, formula="Bolton") Im Gegensatz zu RH_to_Td wird die relative Luftfeuchtigkeit [%] aus der Temperatur [C] und der Taupunkttemperatur [C] berechnet. Andere sind die gleichen wie RH_to_Td.

** Parameter: **

** Kehrt zurück: **


T_to_WVP(T, formula="Bolton") Berechnen Sie den gesättigten Wasserdampfdruck [hPa] aus der Temperatur [C]. Wenn Sie anstelle der Temperatur die Taupunkttemperatur [C] eingeben, wird der Wasserdampfdruck [hPa] berechnet. Es gibt drei Arten von Berechnungsformeln. Die Standardeinstellung verwendet die Bolton-Formel. Dies liegt daran, dass es durch die Formel implementiert wird, die von der Meteorologischen Agentur bei der Berechnung des äquivalenten Temperaturniveaus angenommen wurde. Siehe auch Theta_e. Soweit ich bestätigt habe, spielt es jedoch keine Rolle, welche Formel Sie in der Praxis verwenden. Ich denke, Sie können jede beliebige Formel verwenden. Persönlich bin ich mit der Tetens-Formel vertraut.

Tetens-Ausdruck: $ {\ Large es = 6.1078 \ times 10 ^ {\ left (\ frac {7.5 T} {T + 237.3} \ right)}} $ WMO-Näherung: $ {\ Large es = e ^ {\ left (19.482- \ frac {4303.4} {T + 243.5} \ right)}} $ Boltons Formel: $ {\ Large es = 6.112 \ times e ^ {\ left (\ frac {17.67 T} {T + 243.5} \ right)}} $

** Parameter: **

** Kehrt zurück: **


WVP_to_T(es, formula="Bolton") Die Umkehrfunktion von T_to_WVP berechnet die Temperatur [C] aus dem gesättigten Wasserdampfdruck [hPa]. Wenn Sie den Wasserdampfdruck [hPa] eingeben, wird die Taupunkttemperatur [C] berechnet.

** Parameter: **

** Kehrt zurück: **


T_Td(T, Td) Die Feuchtigkeitszahl [C] wird aus der Temperatur [C] und der Taupunkttemperatur [C] berechnet. Es ist eine Funktion, die einfach eine Subtraktion durchführt.

** Parameter: **

** Kehrt zurück: **


Mixing_Ratio(Td, P, formula="Bolton") Berechnen Sie das Mischungsverhältnis [g / g] aus der Taupunkttemperatur [C] und dem Druck [hPa]. Da der gesättigte Wasserdampfdruck während des Berechnungsprozesses berechnet wird, kann die Formel mit der Formeloption angegeben werden. Siehe T_to_WVP für Optionstypen.

** Parameter: **

** Kehrt zurück: **


Funktion in Bezug auf atmosphärische Instabilität

Theta(T, P) Berechnen Sie das Temperaturniveau [K] aus der Temperatur [C] und dem Druck [hPa].

** Parameter: **

** Kehrt zurück: **


Tlcl(T, Td) Berechnen Sie aus der Temperatur [K] und der Taupunkttemperatur [K] die Temperatur [K] in der Hub- und Einstellhöhe. Bitte beachten Sie, dass die Einheit für Temperatur und Taupunkttemperatur in [K] eingegeben wird. Es wird bei der Berechnung des äquivalenten Temperaturniveaus verwendet. Siehe auch Theta_e für die Formel.

{\Large T_{LCL} = \frac{1}{\frac{1}{Td-56}+\frac{ln(T\ /\ Td)}{800}}+56 }

** Parameter: **

** Kehrt zurück: **


Theta_e(T, Td, P, formula="Bolton") Das äquivalente Temperaturniveau [K] wird aus der Temperatur [C], der Taupunkttemperatur [C] und dem Druck [hPa] berechnet. Es scheint, dass es mehrere Formeln zur Berechnung des äquivalenten Temperaturniveaus gibt, aber hier Berechnungsmethode der Meteorologischen Agentur Es entspricht. Weitere Informationen finden Sie auf der letzten Seite des verknüpften PDF.

{\large \theta_{e} = T\left(\frac{1000}{P-e}\right)^\frac{R_{d}}{C_{pd}}\left(\frac{T}{T_{LCL}}\right)^{0.28w}exp\left(\left(\frac{3036.0}{T_{LCL}}-1.78\right)w(1+0.448w)\right) }

In der obigen PDF-Datei beträgt der Wert von $ R_ {d} \ / \ C_ {pd} $ ** 0,2854 **, aber ich denke, er beträgt normalerweise ** 0,2857 **. Ich weiß nicht, warum es ** 0,2854 ** ist, ob es sich um einen Druckfehler handelt oder ob es einen Grund gibt. Die Umsetzung angenommen ** 0,2857 **.

Da der gesättigte Wasserdampfdruck während des Berechnungsprozesses berechnet wird, kann die Formel mit der Formeloption angegeben werden. Der Standardwert ist "Bolton" gemäß der äquivalenten Temperaturberechnungsformel der Meteorological Agency. Siehe T_to_WVP für Optionstypen.

** Parameter: **

** Kehrt zurück: **


SSI(P0, P1, T0, T1, Td0, formula="Bolton") Berechnen Sie den SSI, der für den atmosphärischen Instabilitätsindex repräsentativ ist. Die Eingaben sind der Höhendruck [hPa], die Temperatur [C] und die Taupunkttemperatur [C] der zu hebenden Luft sowie der Höhendruck [hPa], die Temperatur [C] der angehobenen Luft. Normalerweise wird der SSI bei 850-500 hPa berechnet, kann jedoch bei jedem Druckniveau berechnet werden. Da der gesättigte Wasserdampfdruck während des Berechnungsprozesses berechnet wird, kann die Formel mit der Formeloption angegeben werden. Siehe T_to_WVP für Optionstypen.

** Parameter: **

** Kehrt zurück: **


K_Index(T850, Td850, T700, Td700, T500) Berechnet den K-Index, einen der atmosphärischen Instabilitätsindizes. Die Eingänge sind 850 hPa Temperatur [C] und Taupunkttemperatur [C], 700 hPa Temperatur [C] und Taupunkttemperatur [C] und 500 hPa Temperatur [C].

** Parameter: **

** Kehrt zurück: **


Einheitenumrechnung

MPS_to_KT(x) Es ist eine Einheitsumrechnung der Geschwindigkeit wie Windgeschwindigkeit. Konvertieren Sie m / s in Knoten.

** Parameter: **

** Kehrt zurück: **


KT_to_MPS(x) Es ist eine Einheitsumrechnung der Geschwindigkeit wie Windgeschwindigkeit. Knoten in m / s umrechnen.

** Parameter: **

** Kehrt zurück: **


M_to_FT(x) Es ist eine Einheitsumrechnung der Länge wie Höhe. Meter in Fuß umrechnen.

** Parameter: **

** Kehrt zurück: **


FT_to_M(x) Es ist eine Einheitsumrechnung der Länge wie Höhe. Füße in Meter umrechnen.

** Parameter: **

** Kehrt zurück: **


degF_to_degC(x) Es ist eine Einheitsumrechnung der Temperatur. Konvertiert Hua [F] in Set [C].

** Parameter: **

** Kehrt zurück: **


degC_to_degF(x) Es ist eine Einheitsumrechnung der Temperatur. Konvertiert [C] in [F].

** Parameter: **

** Kehrt zurück: **


Über zukünftige Versions-Upgrades

Wie eingangs erwähnt, habe ich das, was ich ursprünglich als Perl-Modul erstellt habe, in Python umgeschrieben und es einmal abgeschlossen.

In Zukunft werden wir auch die folgenden meteorologischen Faktoren berücksichtigen. Ich weiß nicht, ob Nachfrage besteht (lacht), aber ich würde es gerne mit dem Engagement von Wetterexperten schaffen.

  1. LFC, CAPE, CIN, Lifted Index usw.
  2. Translokation, Wirbel, vertikale Windscherung, Stabilität usw.
  3. Feuchtkugeltemperatur, Feuchtkugeltemperatur usw.
  4. Supercell Index (SCP) und Tornado Index (STP), die in den USA usw. verwendet werden.

Recommended Posts

Veröffentlichen Sie ein Python-Modul, das meteorologische Elemente berechnet
Erstellen Sie ein Python-Modul
Verwenden Sie Blender als Python-Modul
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
[Python] Ein Programm, das Treppen mit # erstellt
[Python] Ein Programm, das die Anzahl der Schokoladensegmente berechnet, die die Bedingungen erfüllen
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Erstellen Sie ein Beziehungsdiagramm von Python-Modulen
Wir haben ein Python-Modul veröffentlicht, das ein regionales Netz für Japan generiert
Die eval () -Funktion, die eine Zeichenfolge als Ausdruck in Python berechnet
[Python] Erstellen Sie einen LineBot, der regelmäßig ausgeführt wird
Eine typisierte Welt, die mit Python beginnt
Ein Programm, das Python zum Abspielen von Junk verwendet
[Python] Ein Programm, das die Partitur rundet
Ich habe ein Modul PyNanaco erstellt, das Nanaco-Guthaben mit Python belasten kann
[Python] Ein Programm, das die Differenz zwischen diagonalen Gesamtwerten berechnet
[Python] Ein Programm, das die Anzahl der Aktualisierungen der höchsten und niedrigsten Datensätze berechnet
Fehler beim Installieren eines Moduls mit Python pip
Ein Memo, das ich schnell in Python geschrieben habe
[Python] Ein Tool, das einen intuitiven relativen Import ermöglicht
[Python / Tkinter] Eine Klasse, die einen scrollbaren Frame erstellt
Ein netter Nimporter, der Nim und Python verbindet
Ein Programm, das doppelte Anweisungen in Python entfernt
So fügen Sie einen Suchpfad für Python-Module hinzu
"Python Kit", das Python-Skripte von Swift aufruft
So fügen Sie Python ein Modul hinzu, das Sie in Julialang eingefügt haben
Python: Erstellen Sie eine Klasse, die entpackte Zuweisungen unterstützt
[Python] Ein grobes Verständnis des Protokollierungsmoduls
Vim-Plug-In, das automatisch Python-Stile formatiert
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Lassen Sie uns mit SWIG ein Modul für Python erstellen
Eine Geschichte, die praktisch war, als ich versuchte, das Python-IP-Adressmodul zu verwenden
Python-Modul importieren
Fileinput, ein Modul, das das Schreiben von Perl-ähnlichen Filterprogrammen in Python erleichtert
Python-Sammlungsmodul
[Python] Ein Programm, das die Anzahl der Täler zählt
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Ich habe eine VM erstellt, auf der OpenCV für Python ausgeführt wird
Ich habe ein Python-Modul erstellt, um Kommentare zu übersetzen
Python, das viele Excel zu einem Excel zusammenführt
Aus einem Buch, das Programmierer lernen können ... (Python): Zeiger
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Erstellt eine Python-Bibliothek DateTimeRange, die Zeitbereiche verarbeitet
Erstellen Sie in Python einen Dekorator, der Argumente dynamisch akzeptiert. Erstellen Sie einen Dekorator
[Python] So schreiben Sie eine Dokumentzeichenfolge, die PEP8 entspricht
Ein Server, der POST-Daten mit flask / python wiedergibt
[Python] Eine praktische Bibliothek, die Kanji in Hiragana konvertiert
Ein Memo, dass ich den Datenspeicher mit Python berührt habe
[Python] Ein Programm, das die Positionen von Kängurus vergleicht.
Veröffentlichen / Hochladen einer in Python erstellten Bibliothek in PyPI
Python-Programm, das ical-Daten in Text konvertiert
MALSS (Einführung), ein Tool, das maschinelles Lernen in Python unterstützt
Lern-Roadmap, mit der Sie Services mit Python von Grund auf neu entwickeln und veröffentlichen können