ecmwf-opendata
ist ein Paket zum Vereinfachung des Downloads von ECMW-Daten. Es implementiert eine anforderungsbasierte Schnittstelle zum Datensatz mithilfe der MARS-Sprache von ECMW, um meteorologische Felder auszuwählen, ähnlich wie das vorhandene Python-Paket von ECMWF-API-Klient.
Eine Sammlung von Jupyter -Notizbüchern, die dieses Paket verwenden, finden Sie hier.
Das ecmwf-opendata
Python-Paket kann von PYPI mit:
$ pip install ecmwf-opendata
Im folgenden Beispiel wird die neueste verfügbare 10-Tage-Prognose für den mittleren Meeresspiegeldruck ( msl
) in eine lokale Datei namens data.grib2
heruntergeladen:
from ecmwf . opendata import Client
client = Client ()
client . retrieve (
step = 240 ,
type = "fc" ,
param = "msl" ,
target = "data.grib2" ,
)
❗ Hinweis: Dieses Paket ist für Benutzer entwickelt, die eine Teilmenge des gesamten Datensatzes herunterladen möchten. Wenn Sie vorhaben, einen großen Prozentsatz jeder Datendatei herunterzuladen, ist es möglicherweise effizienter, ganze Dateien herunterzuladen und die gewünschten Daten herauszufiltern. Weitere Informationen finden Sie in der Dokumentation der Datei -Namenskonvention. Alternativ können Sie dieses Tool verwenden, um ganze Dateien herunterzuladen, indem Sie nur
date
,time
,step
,stream
undtype
angeben. Bitte beachten Sie, dass alle Daten für einen ganzen Tag in der Reihenfolge von 726 Gib sind.
Der Konstruktor des Client -Objekts nimmt die folgenden Optionen an:
client = Client (
source = "ecmwf" ,
model = "ifs" ,
resol = "0p25" ,
preserve_request_order = False ,
infer_stream_keyword = True ,
)
Wo:
source
ist entweder der Name des Servers, der sich an Kontakt oder eine vollständig qualifizierte URL bewegt. Mögliche Werte sind ecmwf
um auf ECMWF -Server zuzugreifen, oder azure
um auf Daten zuzugreifen, die auf Microsoft Azure gehostet werden. Standard ist ecmwf
.
model
ist der Name des Modells, das die Daten erstellt hat. Verwenden Sie ifs
für das physikalische Modell und aifs
für das datengesteuerte Modell. Bitte beachten Sie, dass aifs
derzeit experimentell ist und nur eine kleine Teilmenge von Feldern erzeugt. Standard ist ifs
.
resol
spezifiziert die Auflösung der Daten. Die Standardeinstellung beträgt 0p25
für eine Auflösung von 0,25 Grad und ist die einzige Auflösung, die derzeit verfügbar ist.
preserve_request_order
. Wenn dieses Flag auf True
festgelegt ist, versucht die Bibliothek, die abgerufenen Daten in der von der Anforderung angegebenen Reihenfolge in die Zieldatei zu schreiben. Wenn die Anforderung beispielsweise param=[2t,msl]
angibt, stellt die Bibliothek sicher, dass das Feld 2t
zuerst in der Zieldatei ist, während mit param=[msl,2t]
das Feld msl
an erster Stelle steht. Dies funktioniert auch über verschiedene Schlüsselwörter hinweg: ...,levelist=[500,100],param=[z,t],...
erzeugt eine unterschiedliche Ausgabe zu ...,param=[z,t],levelist=[500,100],...
Wenn das Flag auf False
festgelegt ist, sortiert die Bibliothek die Anfrage zur Minimierung der Anzahl der an den Server gestellten HTTP -Anforderungen, was zu schnelleren Download -Geschwindigkeiten führt. Standard ist False
.
infer_stream_keyword
. Das stream
-Schlüsselwort repräsentiert das ECMWF -Prognosesystem, das die Daten erstellt. Die richtige Festlegung erfordert Kenntnisse darüber, wie ECMWF seine Operationen ausführt. Wenn dieser Boolesche auf True
eingestellt ist, versucht die Bibliothek, den korrekten Wert für das stream
-Schlüsselwort basierend auf dem Rest der Anforderung zu schließen. Standard ist True
wenn das Modell ifs
ist.
Euen HINWEIS: Es wird empfohlen, das Flagpreserve_request_order
nicht aufTrue
zu setzen, wenn eine große Anzahl von Feldern heruntergeladen wird, da dies den Servern zusätzliche Ladungen hinzufügt.
Client.retrieve()
Die methode Client.retrieve()
nimmt die Anforderung als Eingabe an und ruft die entsprechenden Daten vom Server ab und schreibt sie in die Zieldatei des Benutzers.
Eine Anforderung ist eine Liste von Schlüsselwort-/Wertpaaren, die zur Auswahl der gewünschten Daten verwendet werden. Es ist möglich, eine Liste von Werten für ein bestimmtes Schlüsselwort anzugeben.
Die Anfrage kann entweder als Wörterbuch angegeben werden:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
request = {
"time" : 0 ,
"type" : "fc" ,
"step" : 24 ,
"param" : [ "2t" , "msl" ],
}
client . retrieve ( request , "data.grib2" )
# or:
client . retrieve (
request = request ,
target = "data.grib2" ,
)
oder direkt als Argumente zur Methode retrieve()
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
Das Schlüsselwort date
und time
wird verwendet, um Datum und Uhrzeit des Prognoselaufs auszuwählen (siehe Datum und Uhrzeit unten). Wenn date
und date
und time
nicht angegeben sind, stellt die Bibliothek den Server nach den neuesten Übereinstimmungsdaten ab. Das date
und time
der heruntergeladenen Prognose werden von der Methode retrieve()
zurückgegeben.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
)
print ( result . datetime )
Mai drucken 2022-01-23 00:00:00
.
Client.download()
Die Methode Client.download()
nimmt die gleichen Parameter wie die methode Client.retrieve()
an, lädt jedoch die gesamten Datendateien vom Server herunter und ignoriert Schlüsselwörter wie param
, levelist
oder number
.
Im folgenden Beispiel wird das gesamte Feld aus dem neuesten Zeitschritt 24 heruntergeladen, in dem der param
ignoriert wird:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . download (
param = "msl" ,
type = "fc" ,
step = 24 ,
target = "data.grib2" ,
)
Client.latest()
Die methode Client.latest()
nimmt die gleichen Parameter wie die Client.retrieve()
-Methode an und gibt das Datum der neuesten Matching -Prognose zurück, ohne die Daten herunterzuladen:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
print ( client . latest (
type = "fc" ,
step = 24 ,
param = [ "2t" , "msl" ],
target = "data.grib2" ,
))
Mai drucken 2022-01-23 00:00:00
.
⏰ HINWEIS : Die Daten sind je nach Prognosesystem und dem angegebenen Zeitschritt zwischen 7 und 9 Stunden nach dem Startdatum und der Zeit des Prognoses verfügbar.
Die unterstützten Schlüsselwörter sind:
type
: Die Art der Daten (obligatorisch, standardmäßig für fc
).stream
: Das Prognosesystem (optional, wenn es eindeutig ist, sonst obligatorisch). Siehe das obige infer_stream_keyword
.date
: Das Datum, an dem die Prognose beginnt.time
: Die Zeit, zu der die Prognose beginnt.step
: Der prognostizierte Zeitschritt in Stunden oder fcmonth
den Zeitschritt in Monaten für die saisonale Prognose (obligatorisch, standardmäßig auf 0
bzw. 1
).und (alle optional, ohne Standardeinstellungen):
param
: Die meteorologischen Parameter wie Wind, Druck oder Luftfeuchtigkeit.levtype
: Wählen Sie zwischen den Parametern der einzelnen Ebenen und den Parametern auf Druckstufen.levelist
: Die Liste der Druckniveaus, wenn relevant.number
: Die Liste der Ensemble -Mitgliedsnummern, wenn relevant.Die Schlüsselwörter in der ersten Liste werden verwendet, um zu identifizieren, auf welche Datei zugegriffen werden soll, während die zweite Liste verwendet wird, um zu ermitteln, welche Teile der Dateien tatsächlich heruntergeladen werden müssen. Einige HTTP -Server können mehrere Teile einer Datei zurückgeben, während andere nur einen einzelnen Teil aus einer Datei zurückgeben können. Im letzteren Fall kann die Bibliothek viele HTTP -Anforderungen an den Server ausführen. Wenn Sie ganze Dateien herunterladen möchten, geben Sie nur Keywords aus der ersten Liste an.
Die Parameter Datum und Uhrzeit beziehen sich auf die Startzeit der Prognose. Alle Datum und Uhrzeit werden in UTC ausgedrückt.
Es gibt verschiedene Möglichkeiten, das Datum und die Uhrzeit in einer Anfrage anzugeben.
Datum kann mit Zeichenfolgen, Zahlen und Python datetime.datetime
angegeben werden datetime.date
...
date = '20220125' ,
time = 12 ,
...
date = '2022-01-25' ,
time = 12 ,
...
date = '2022-01-25 12:00:00' ,
...
date = 20220125 ,
time = 12 ,
...
date = datetime . datetime ( 2022 , 1 , 25 , 12 , 0 , 0 ),
...
date = datetime . date ( 2022 , 1 , 25 ),
time = 12 ,
...
Datteln können auch als Zahl von weniger oder gleich Null angegeben werden. In diesem Fall entspricht es dem aktuellen UTC -Datum abzüglich der angegebenen Anzahl von Tagen:
...
date = 0 , # today
date = - 1 , # yesterday
date = - 2 , # the day before yesterday
...
Die time
kann als Zeichenfolge oder Ganzzahl oder Python datetime.time
-Objekt angegeben werden. Alle folgenden Zeitwerte sind gleichwertig:
...
time = 12 ,
...
time = 1200 ,
...
time = '12' ,
...
time = '1200' ,
...
time = datetime . time ( 12 ),
...
Liste der gültigen Werte für die Zeit |
---|
0, 6, 12 und 18 |
Wenn nicht time
angegeben ist, wird die Zeit ab dem Datum extrahiert.
...
date = '2022-01-25 12:00:00' ,
...
entspricht:
...
date = '2022-01-25' ,
time = 12 ,
...
Wenn das Schlüsselwort time
angegeben ist, überschreibt es jederzeit in der Anforderung.
...
date = '2022-01-25 12:00:00' ,
time = 18 ,
...
entspricht:
...
date = '2022-01-25' ,
time = 18 ,
...
Wie bereits erwähnt, wird die Bibliothek den Server nach time
neuesten Übereinstimmungsdaten abfragt, wenn date
oder date
nicht angegeben wird. Das date
und time
der heruntergeladenen Prognose werden von der Methode retrieve()
zurückgegeben:
Beispiel ohne das date
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
time = 12 ,
type = "fc" ,
param = "2t" ,
step = "24" ,
target = "data.grib2" ,
)
print ( result . datetime )
Drucken Sie 2022-01-22 12:00:00
wenn Sie am Morgen 2022-01-23 ausgeführt werden.
Beispiel ohne die Schlüsselwörter von date
und time
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
result = client . retrieve (
type = "fc" ,
param = "2t" ,
step = "24" ,
target = "data.grib2" ,
)
print ( result . datetime )
Drucken Sie 2022-01-23 00:00:00
wenn Sie am Morgen 2022-01-23 ausgeführt werden.
ECMWF führt mehrere Prognosesysteme aus:
Jede dieser Prognosen erzeugt auch verschiedene Arten von Produkten, die mithilfe des Schlüsselwörter stream
und type
verwiesen werden.
Gültige Werte für
type
sind:
HRES:
fc
: Vorhersage.ENS:
cf
: Kontrollprognose.pf
: Störte Prognose.em
: Ensemble Mean.es
: Ensemble Standardabweichung.ep
: Wahrscheinlichkeiten.Gültige Werte für
stream
sind:
oper
: Atmosphärische Felder von HRES - 00 UTC und 12 UTC.wave
: Ozeanwellenfelder von HRES - 00 UTC und 12 UTC.enfo
: Atmosphärische Felder aus Ens.waef
: Ozeanwellenfelder von ens.scda
: Atmosphärische Felder von HRES - 06 UTC und 18 UTC.scwv
: Ozeanwellenfelder von HRES - 06 UTC und 18 UTC.? HINWEIS : Wenn das Flag des Clients
infer_stream_keyword
aufTrue
eingestellt ist, schließt die Bibliothek den Stream aus demtype
undtime
. In diesem Fall müssen Sie nurstream=wave
angeben, um auf Ozeanwellenprodukte zuzugreifen, und in anderen Fällen keinen Wert fürstream
bereitstellen.
Um einen Zeitschritt auszuwählen, verwenden Sie das Schlüsselwort step
:
...
step = 24 ,
...
step = [ 24 , 48 ],
...
Prognosesystem | Zeit | Liste der Zeitschritte |
---|---|---|
Hres | 00 und 12 | 0 bis 144 von 3, 144 bis 240 von 6 |
Ens | 00 und 12 | 0 bis 144 von 3, 144 bis 360 von 6 |
Hres | 06 und 18 | 0 bis 90 von 3 |
Ens | 06 und 18 | 0 bis 144 von 3 |
Wahrscheinlichkeiten - sofortige Wetterereignisse | 00 und 12 | 0 bis 360 von 12 |
Wahrscheinlichkeiten - tägliche Wetterereignisse | 00 und 12 | 0-24 bis 336-360 von 12 |
? HINWEIS : Wenn Sie nicht
step
angeben, werden alle verfügbaren Zeitschritte zurückgegeben.
Um einen Parameter auszuwählen, verwenden Sie das Schlüsselwort param
:
...
param = "msl" ,
...
param = [ "2t" , "msl" ]
...
Verwenden Sie für Druckstufenparameter das levelist
-Schlüsselwort:
...
param = "t" ,
levelist = 850 ,
...
param = [ "u" , "v" ],
levelist = [ 1000 , 850 , 500 ],
...
? HINWEIS : Das Nichtangeben von
levelist
gibt alle verfügbaren Ebenen zurück, und der nicht angebeneparam
gibt alle verfügbaren Parameter zurück.
Liste der Druckstufen (HPA) |
---|
1000, 925, 850, 700, 500, 300, 250, 200 und 50 |
Unten finden Sie die Liste aller Parameter:
Atmosphärische Felder auf Druckniveaus
Parameter | Beschreibung | Einheiten |
---|---|---|
D | Divergenz | S -1 |
gh | Geopotentialhöhe | gpm |
Q | Spezifische Luftfeuchtigkeit | kg kg -1 |
R | Relative Luftfeuchtigkeit | % |
T | Temperatur | K |
u | U Komponente des Windes | MS -1 |
v | V Komponente des Windes | MS -1 |
vo | Wirbel (Verwandter) | S -1 |
Atmosphärische Felder auf einer einzigen Ebene
Parameter | Beschreibung | Einheiten |
---|---|---|
10U | 10 Meter U Windkomponente | MS -1 |
10V | 10 Meter V Windkomponente | MS -1 |
2t | 2 Meter Temperatur | K |
MSL | Mittlerer Meeresspiegeldruck | Pa |
ro | Abfluss | M |
Skt | Hauttemperatur | K |
sp | Oberflächendruck | Pa |
st | Bodentemperatur | K |
stl1 | Bodentemperaturstufe 1 | K |
TCWV | Gesamtsäule vertikal integrierter Wasserdampf | kg m -2 |
tp | Gesamtniederschlag | M |
Ozeanwellen Felder
Parameter | Beschreibung | Einheiten |
---|---|---|
MP2 | Mittlere Wellenperiode mit Nullkreuzung | S |
MWD | Mittlere Wellenrichtung | Grad wahr |
MWP | Mittlere Wellenperiode | S |
pp1d | Spitzenwellenperiode | S |
swh | Signifikante Höhe kombinierter Windwellen und Schwellungen | M |
Ensemble Mittelwert und Standardabweichung - Druckstufen
Parameter | Beschreibung | Einheiten | Ebenen |
---|---|---|---|
gh | Geopotentialhöhe | gpm | 300, 500, 1000 |
T | Temperatur | K | 250, 500, 850 |
WS | Windgeschwindigkeit | MS -1 | 250, 850 |
Ensemble Mittelwert und Standardabweichung - Einzelstufe
Parameter | Beschreibung | Einheiten |
---|---|---|
MSL | Mittlerer Meeresspiegeldruck | Pa |
Instantane Wetterereignisse - Atmosphärische Felder - 850 hPa
Parameter | Beschreibung | Einheiten |
---|---|---|
PTSA_GT_1P5STDEV | Wahrscheinlichkeit der standardisierten Temperaturanomalie von mehr als 1,5 Standardabweichung | % |
PTSA_GT_1STDEV | Wahrscheinlichkeit der standardisierten Temperaturanomalie von mehr als 1 Standardabweichung | % |
PTSA_GT_2STDEV | Wahrscheinlichkeit der standardisierten Temperaturanomalie von mehr als 2 Standardabweichung | % |
PTSA_LT_1P5STDEV | Wahrscheinlichkeit der standardisierten Temperaturanomalie von weniger als -1,5 Standardabweichung | % |
PTSA_LT_1STDEV | Wahrscheinlichkeit der standardisierten Temperaturanomalie von weniger als -1 Standardabweichung | % |
PTSA_LT_2STDEV | Wahrscheinlichkeit der standardisierten Temperaturanomalie von weniger als -2 Standardabweichung | % |
Tägliche Wetterereignisse - Atmosphärische Felder - Einzelstufe
Parameter | Beschreibung | Einheiten |
---|---|---|
10fgg10 | 10 -Meter -Windböen von mindestens 10 m/s | % |
10fgg15 | 10 -Meter -Windböe von mindestens 15 m/s | % |
10fgg25 | 10 -Meter -Windböen von mindestens 25 m/s | % |
tpg1 | Gesamtniederschlag von mindestens 1 mm | % |
TPG10 | Gesamtniederschlag von mindestens 10 mm | % |
TPG100 | Gesamtniederschlag von mindestens 100 mm | % |
TPG20 | Gesamtniederschlag von mindestens 20 mm | % |
TPG25 | Gesamtniederschlag von mindestens 25 mm | % |
TPG5 | Gesamtniederschlag von mindestens 5 mm | % |
TPG50 | Gesamtniederschlag von mindestens 50 mm | % |
Sofortige Wetterereignisse - Ozeanwellenfelder
Parameter | Beschreibung | Einheiten |
---|---|---|
SWHG2 | Signifikante Wellenhöhe von mindestens 2 m | % |
SWHG4 | Signifikante Wellenhöhe von mindestens 4 m | % |
SWHG6 | Signifikante Wellenhöhe von mindestens 6 m | % |
SWHG8 | Signifikante Wellenhöhe von mindestens 8 m | % |
Sie können einzelne Mitglieder der Ensemble -Prognose auswählen. Verwenden Sie die number
.
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = 1 ,
...
stream = "enfo" ,
step = 24 ,
param = "msl" ,
number = [ 1 , 10 , 20 ],
...
Liste der Ensemble -Nummern |
---|
1 bis 50 |
? Hinweis : Nicht
number
wird alle Vorhersagemitglieder von Ensemble zurückgegeben.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "oper" ,
type = "fc" ,
step = 24 ,
param = "2t" ,
target = "data.grib2" ,
)
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "oper" ,
type = "tf" ,
step = 240 ,
target = "data.bufr" ,
)
...
step = 90 ,
...
❗ HINWEIS: Tropische Zyklonspuren sind nur dann erhältlich, wenn tropische Zyklone beobachtet oder prognostiziert werden.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "pf" ,
param = "msl" ,
target = "data.grib2" ,
)
number
: number=1
.number=[num for num in range(1,51,2)]
.type="cf"
. Die tropischen Zyklonspuren werden durch das Schlüsselwort type="tf"
identifiziert.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "tf" ,
step = 240 ,
target = "data.bufr" ,
)
step=240
durch step=144
. Das Ensemble -Mittelwert und die Standardabweichung werden durch die Schlüsselwörter type="em"
identifiziert:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "em" ,
step = 24 ,
target = "data.grib2" ,
)
bzw. type="es"
:
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "es" ,
step = 24 ,
target = "data.grib2" ,
)
Die Ensemble -Wahrscheinlichkeitsprodukte werden durch den Schlüsselwort type="ep"
identifiziert. Die Wahrscheinlichkeitsprodukte sind nur für time=00
und time=12
erhältlich.
Es sind zwei verschiedene Produkte erhältlich.
Die Wahrscheinlichkeit von standardisierten Temperaturanomalien bei einem konstanten Druckniveau von 850 PS sind bei 12 Stundenprognoseschritten erhältlich.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "ep" ,
step = [ i for i in range ( 12 , 361 , 12 )],
levelist = 850 ,
param = [
"ptsa_gt_1stdev" ,
"ptsa_gt_1p5stdev" ,
"ptsa_gt_2stdev" ,
"ptsa_lt_1stdev" ,
"ptsa_lt_1p5stdev" ,
"ptsa_lt_2stdev" ,
],
target = "data.grib2" ,
)
Die Wahrscheinlichkeiten von Gesamtausfällen und Windböen, die die angegebenen Schwellenwerte in einem Zeitraum von 24 Stunden überschreiten, sind für die Stufenbereiche von 0-24 bis 336-360 bis 12 verfügbar. Diese sind in der Abrufanforderung mithilfe von: step=["0-24", "12-36", "24-48"]
angegeben.
from ecmwf . opendata import Client
client = Client ( source = "ecmwf" )
steps = [ f" { 12 * i } - { 12 * i + 24 } " for i in range ( 29 )]
client . retrieve (
time = 0 ,
stream = "enfo" ,
type = "ep" ,
step = steps ,
param = [ "tpg1" , "tpg5" , "10fgg10" ],
target = "data.grib2" ,
)
Durch das Herunterladen von Daten aus dem ECMW Open Data Dataset stimmen Sie den ihren Begriffen zu: Attribution 4.0 International (CC nach 4.0). Wenn Sie solchen Begriffen nicht zustimmen, laden Sie die Daten nicht herunter. Besuchen Sie diese Seite für weitere Informationen.
APache -Lizenz 2.0 Bei der Anwendung dieser Lizenz verzichtet ECMWF weder auf die Berechtigungen und Immunitäten, die ihm aufgrund seines Status als zwischenstaatliche Organisation gewährt werden, noch unterscheidet sie einer Zuständigkeit.