Melden Sie sich an, erstellen Sie einen API-Token (es gibt einen kostenlosen Plan) und senden Sie den ersten Request. Kopieren Sie eines der Beispiele unten (cURL oder Python), ersetzen Sie Token und Zeitpunkte und führen Sie es aus. Ersetzen Sie [API_TOKEN] durch Ihren Token, ohne die Klammern.
Rufen Sie stündliche Temperaturdaten für den 1. Mai 2025 am Times Square mit NOAA Global Forecast System (GFS) ab.
Wir senden den Request an diesen Endpoint:
POST https://gribstream.com/api/v2/[MODEL]/timeseries
Umbenannt Früher /history. Der alte Pfad funktioniert weiterhin.
Ersetzen Sie [MODEL] durch den GFS-Code gfs; dann sieht der Endpoint so aus:
POST https://gribstream.com/api/v2/gfs/timeseries
Alle verfügbaren Modelle finden Sie auf der Modellseite.
Zeitpunkte verwenden das Format ISO 8601 UTC; wir fragen einen Zeitraum von fromTime bis untilTime ab.
Koordinaten sind Paare von Gleitkommazahlen (latitude, longitude).
Wetterparameter werden mit Tupeln (name, level, info) ausgewählt. Das sind exakte Katalogselektoren: name ist der Parametercode des Anbieters, level ist das vertikale oder Oberflächenniveau, und info unterscheidet Varianten, wenn nötig. In GFS sehen Sie, dass Temperatur mit TMP auf vielen Niveaus verfügbar ist. Wir verwenden 2m above ground für dieses Beispiel.
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [{ "lat": 40.758, "lon": -73.985 }],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "" }]
}'
import requests
API_TOKEN = "[API_TOKEN]" # Replace with your token
payload = {
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [
{ "lat": 40.758, "lon": -73.985 }
],
"variables": [
{ "name": "TMP", "level": "2 m above ground", "info": "" }
]
}
headers = {
"Authorization": f"Bearer {API_TOKEN}",
}
response = requests.post("https://gribstream.com/api/v2/gfs/timeseries", json=payload, headers=headers)
response.raise_for_status()
print(response.text)
forecasted_at,forecasted_time,lat,lon,name,TMP|2 m above ground|
2025-05-01T06:00:00Z,2025-05-01T09:00:00Z,40.7580,-73.9850,,286.7000
2025-05-01T06:00:00Z,2025-05-01T11:00:00Z,40.7580,-73.9850,,286.5539
2025-05-01T00:00:00Z,2025-05-01T01:00:00Z,40.7580,-73.9850,,292.2532
2025-05-01T12:00:00Z,2025-05-01T15:00:00Z,40.7580,-73.9850,,292.2911
2025-05-01T18:00:00Z,2025-05-01T19:00:00Z,40.7580,-73.9850,,292.7923
2025-05-01T12:00:00Z,2025-05-01T14:00:00Z,40.7580,-73.9850,,290.9911
2025-05-01T12:00:00Z,2025-05-01T17:00:00Z,40.7580,-73.9850,,293.8677
2025-05-01T12:00:00Z,2025-05-01T16:00:00Z,40.7580,-73.9850,,293.2000
2025-05-01T18:00:00Z,2025-05-01T20:00:00Z,40.7580,-73.9850,,292.3354
2025-05-01T18:00:00Z,2025-05-01T18:00:00Z,40.7580,-73.9850,,293.5384
2025-05-01T06:00:00Z,2025-05-01T08:00:00Z,40.7580,-73.9850,,287.1673
2025-05-01T12:00:00Z,2025-05-01T13:00:00Z,40.7580,-73.9850,,289.4673
2025-05-01T00:00:00Z,2025-05-01T04:00:00Z,40.7580,-73.9850,,289.4754
2025-05-01T00:00:00Z,2025-05-01T03:00:00Z,40.7580,-73.9850,,290.4711
2025-05-01T00:00:00Z,2025-05-01T05:00:00Z,40.7580,-73.9850,,288.8000
2025-05-01T00:00:00Z,2025-05-01T00:00:00Z,40.7580,-73.9850,,292.9684
2025-05-01T12:00:00Z,2025-05-01T12:00:00Z,40.7580,-73.9850,,287.7405
2025-05-01T00:00:00Z,2025-05-01T02:00:00Z,40.7580,-73.9850,,291.3480
2025-05-01T06:00:00Z,2025-05-01T06:00:00Z,40.7580,-73.9850,,288.2327
2025-05-01T06:00:00Z,2025-05-01T10:00:00Z,40.7580,-73.9850,,286.2595
2025-05-01T18:00:00Z,2025-05-01T22:00:00Z,40.7580,-73.9850,,290.9539
2025-05-01T06:00:00Z,2025-05-01T07:00:00Z,40.7580,-73.9850,,287.7000
2025-05-01T18:00:00Z,2025-05-01T23:00:00Z,40.7580,-73.9850,,290.0113
2025-05-01T18:00:00Z,2025-05-01T21:00:00Z,40.7580,-73.9850,,291.8027
Beachten Sie, dass die Zeilen weder nach forecasted_at noch nach forecasted_time sortiert sind. Das verbessert die API-Effizienz.
Beim Verarbeiten der Response kann es sehr praktisch sein, Namen statt des Koordinatenpaars zu verwenden. So können Sie dem Ort einen lesbaren Namen geben oder eine ID speichern. Das ist nützlich für Visualisierungen und Dashboards ohne Vorverarbeitung.
Dazu fügen Sie jeder Koordinate eine zusätzliche Eigenschaft name hinzu. In diesem Beispiel verwenden wir TimesSquare.
Auch die dreiteilige Namenskonvention für Wetterparameter kann schwer lesbar sein (TMP|2 m above ground|). Sie können die Variable daher mit einer zusätzlichen Eigenschaft alias umbenennen. Das ist nützlich, um
programmatisch zwischen Temperaturen auf unterschiedlichen Niveaus zu wechseln und die Spalte trotzdem temp zu nennen. Das entspricht dem SQL-Keyword AS.
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [{ "lat": 40.758, "lon": -73.985 , "name": "TimesSquare"}],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
import requests
API_TOKEN = "[API_TOKEN]" # Replace with your token
payload = {
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [
{ "lat": 40.758, "lon": -73.985, "name": "TimesSquare" }
],
"variables": [
{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }
]
}
headers = {
"Authorization": f"Bearer {API_TOKEN}",
}
response = requests.post("https://gribstream.com/api/v2/gfs/timeseries", json=payload, headers=headers)
response.raise_for_status()
print(response.text)
forecasted_at,forecasted_time,lat,lon,name,temp
2025-05-01T05:00:00Z,2025-05-01T06:00:00Z,40.7580,-73.9850,TimesSquare,287.7400
2025-05-01T10:00:00Z,2025-05-01T11:00:00Z,40.7580,-73.9850,TimesSquare,285.7200
2025-05-01T03:00:00Z,2025-05-01T04:00:00Z,40.7580,-73.9850,TimesSquare,289.1600
2025-05-01T08:00:00Z,2025-05-01T09:00:00Z,40.7580,-73.9850,TimesSquare,285.7200
2025-05-01T20:00:00Z,2025-05-01T21:00:00Z,40.7580,-73.9850,TimesSquare,291.7000
2025-05-01T04:00:00Z,2025-05-01T05:00:00Z,40.7580,-73.9850,TimesSquare,288.4300
2025-05-01T02:00:00Z,2025-05-01T03:00:00Z,40.7580,-73.9850,TimesSquare,290.1200
2025-05-01T09:00:00Z,2025-05-01T10:00:00Z,40.7580,-73.9850,TimesSquare,285.4300
2025-05-01T06:00:00Z,2025-05-01T07:00:00Z,40.7580,-73.9850,TimesSquare,286.8900
2025-05-01T19:00:00Z,2025-05-01T20:00:00Z,40.7580,-73.9850,TimesSquare,292.5500
2025-05-01T07:00:00Z,2025-05-01T08:00:00Z,40.7580,-73.9850,TimesSquare,286.3500
2025-05-01T15:00:00Z,2025-05-01T16:00:00Z,40.7580,-73.9850,TimesSquare,292.9300
2025-05-01T11:00:00Z,2025-05-01T12:00:00Z,40.7580,-73.9850,TimesSquare,286.8000
2025-05-01T18:00:00Z,2025-05-01T19:00:00Z,40.7580,-73.9850,TimesSquare,293.4100
2025-05-01T17:00:00Z,2025-05-01T18:00:00Z,40.7580,-73.9850,TimesSquare,293.8500
2025-05-01T12:00:00Z,2025-05-01T13:00:00Z,40.7580,-73.9850,TimesSquare,288.1300
2025-05-01T21:00:00Z,2025-05-01T22:00:00Z,40.7580,-73.9850,TimesSquare,291.0500
2025-05-01T13:00:00Z,2025-05-01T14:00:00Z,40.7580,-73.9850,TimesSquare,290.2100
2025-05-01T14:00:00Z,2025-05-01T15:00:00Z,40.7580,-73.9850,TimesSquare,291.3900
2025-05-01T01:00:00Z,2025-05-01T02:00:00Z,40.7580,-73.9850,TimesSquare,291.2300
2025-05-01T00:00:00Z,2025-05-01T01:00:00Z,40.7580,-73.9850,TimesSquare,291.6000
2025-05-01T16:00:00Z,2025-05-01T17:00:00Z,40.7580,-73.9850,TimesSquare,293.6300
2025-04-30T23:00:00Z,2025-05-01T00:00:00Z,40.7580,-73.9850,TimesSquare,292.6500
2025-05-01T22:00:00Z,2025-05-01T23:00:00Z,40.7580,-73.9850,TimesSquare,289.6300
Deutlich lesbarer.
Das Response-Format wird durch den Header Accept bestimmt. Die API unterstützt drei Response-Formate:
Accept: text/csv - die Response ist eine CSV-Datei mit den Vorhersagedaten.Accept: application/json - die Response ist ein einzelnes JSON-Array von Objekten.Accept: application/ndjson - die Response ist zeilengetrenntes JSON mit einem JSON-Objekt pro Zeile.Wenn kein Format angegeben ist, ist das Standard-Response-Format text/csv.
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-H "Accept: text/csv" \
-d '{
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [{ "lat": 40.758, "lon": -73.985 , "name": "TimesSquare"}],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
forecasted_at,forecasted_time,lat,lon,name,temp
2025-05-01T05:00:00Z,2025-05-01T06:00:00Z,40.7580,-73.9850,TimesSquare,287.7400
2025-05-01T10:00:00Z,2025-05-01T11:00:00Z,40.7580,-73.9850,TimesSquare,285.7200
2025-05-01T03:00:00Z,2025-05-01T04:00:00Z,40.7580,-73.9850,TimesSquare,289.1600
2025-05-01T08:00:00Z,2025-05-01T09:00:00Z,40.7580,-73.9850,TimesSquare,285.7200
2025-05-01T20:00:00Z,2025-05-01T21:00:00Z,40.7580,-73.9850,TimesSquare,291.7000
2025-05-01T04:00:00Z,2025-05-01T05:00:00Z,40.7580,-73.9850,TimesSquare,288.4300
2025-05-01T02:00:00Z,2025-05-01T03:00:00Z,40.7580,-73.9850,TimesSquare,290.1200
2025-05-01T09:00:00Z,2025-05-01T10:00:00Z,40.7580,-73.9850,TimesSquare,285.4300
2025-05-01T06:00:00Z,2025-05-01T07:00:00Z,40.7580,-73.9850,TimesSquare,286.8900
2025-05-01T19:00:00Z,2025-05-01T20:00:00Z,40.7580,-73.9850,TimesSquare,292.5500
2025-05-01T07:00:00Z,2025-05-01T08:00:00Z,40.7580,-73.9850,TimesSquare,286.3500
2025-05-01T15:00:00Z,2025-05-01T16:00:00Z,40.7580,-73.9850,TimesSquare,292.9300
2025-05-01T11:00:00Z,2025-05-01T12:00:00Z,40.7580,-73.9850,TimesSquare,286.8000
2025-05-01T18:00:00Z,2025-05-01T19:00:00Z,40.7580,-73.9850,TimesSquare,293.4100
2025-05-01T17:00:00Z,2025-05-01T18:00:00Z,40.7580,-73.9850,TimesSquare,293.8500
2025-05-01T12:00:00Z,2025-05-01T13:00:00Z,40.7580,-73.9850,TimesSquare,288.1300
2025-05-01T21:00:00Z,2025-05-01T22:00:00Z,40.7580,-73.9850,TimesSquare,291.0500
2025-05-01T13:00:00Z,2025-05-01T14:00:00Z,40.7580,-73.9850,TimesSquare,290.2100
2025-05-01T14:00:00Z,2025-05-01T15:00:00Z,40.7580,-73.9850,TimesSquare,291.3900
2025-05-01T01:00:00Z,2025-05-01T02:00:00Z,40.7580,-73.9850,TimesSquare,291.2300
2025-05-01T00:00:00Z,2025-05-01T01:00:00Z,40.7580,-73.9850,TimesSquare,291.6000
2025-05-01T16:00:00Z,2025-05-01T17:00:00Z,40.7580,-73.9850,TimesSquare,293.6300
2025-04-30T23:00:00Z,2025-05-01T00:00:00Z,40.7580,-73.9850,TimesSquare,292.6500
2025-05-01T22:00:00Z,2025-05-01T23:00:00Z,40.7580,-73.9850,TimesSquare,289.6300
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-H "Accept: application/json" \
-d '{
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [{ "lat": 40.758, "lon": -73.985 , "name": "TimesSquare"}],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
[{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T00:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.96841796875}
,{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T11:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":286.553857421875}
,{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T05:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":288.80002441406253}
,{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T04:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":289.4754296875}
,{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T17:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":293.86765136718753}
,{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T13:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":289.46726074218753}
,{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T14:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.99106445312503}
,{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T19:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.7922607421875}
,{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T18:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":293.53837890625005}
,{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T20:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.33542480468753}
,{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T15:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.29106445312505}
,{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T21:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":291.802685546875}
,{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T09:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":286.70000000000005}
,{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T06:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":288.23271484375}
,{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T07:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":287.70000000000005}
,{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T22:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.953857421875}
,{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T08:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":287.1672607421875}
,{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T10:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":286.2595458984375}
,{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T12:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":287.74045410156253}
,{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T16:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":293.20000000000005}
,{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T02:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":291.348046875}
,{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T03:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.47107421875}
,{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T01:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.25318359375}
,{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T23:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.0113037109375}
]
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-H "Accept: application/ndjson" \
-d '{
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"coordinates": [{ "lat": 40.758, "lon": -73.985 , "name": "TimesSquare"}],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T12:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":287.74045410156253}
{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T05:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":288.80002441406253}
{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T15:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.29106445312505}
{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T06:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":288.23271484375}
{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T16:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":293.20000000000005}
{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T22:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.953857421875}
{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T01:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.25318359375}
{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T02:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":291.348046875}
{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T03:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.47107421875}
{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T13:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":289.46726074218753}
{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T04:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":289.4754296875}
{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T14:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.99106445312503}
{"forecasted_at":"2025-05-01T00:00:00Z","forecasted_time":"2025-05-01T00:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.96841796875}
{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T07:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":287.70000000000005}
{"forecasted_at":"2025-05-01T12:00:00Z","forecasted_time":"2025-05-01T17:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":293.86765136718753}
{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T08:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":287.1672607421875}
{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T18:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":293.53837890625005}
{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T09:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":286.70000000000005}
{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T19:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.7922607421875}
{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T10:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":286.2595458984375}
{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T20:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":292.33542480468753}
{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T21:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":291.802685546875}
{"forecasted_at":"2025-05-01T06:00:00Z","forecasted_time":"2025-05-01T11:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":286.553857421875}
{"forecasted_at":"2025-05-01T18:00:00Z","forecasted_time":"2025-05-01T23:00:00Z","lat":40.758,"lon":-73.985,"name":"TimesSquare","temp":290.0113037109375}
Manchmal ist es sinnvoll, eine Liste bestimmter Zeiten statt eines Zeitraums auszuwählen. Dafür verwenden Sie das Argument timesList im Request. Bei /timeseries ist jeder Wert eine gültige Zeit, die Sie zurückbekommen möchten, entsprechend forecasted_time.
Zum Beispiel können Sie das Wetter zu Neujahr 2022, 2023, 2024 und 2025 abfragen.
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"timesList": [
"2022-01-01T00:00:00Z",
"2023-01-01T00:00:00Z",
"2024-01-01T00:00:00Z",
"2025-01-01T00:00:00Z"
],
"coordinates": [{ "lat": 40.758, "lon": -73.985 , "name": "TimesSquare"}],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
forecasted_at,forecasted_time,lat,lon,name,temp
2022-01-01T00:00:00Z,2022-01-01T00:00:00Z,40.7580,-73.9850,TimesSquare,283.1841
2024-01-01T00:00:00Z,2024-01-01T00:00:00Z,40.7580,-73.9850,TimesSquare,279.0649
2023-01-01T00:00:00Z,2023-01-01T00:00:00Z,40.7580,-73.9850,TimesSquare,281.7180
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,40.7580,-73.9850,TimesSquare,281.8039
Statt Daten für einzelne Koordinaten abzufragen, können Sie ein Grid mit minLatitude, maxLatitude, minLongitude, maxLongitude und step definieren; step ist die Auflösung in Grad.
Ein visuelles Beispiel finden Sie in unserer Demo für Windfelder
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"timesList": [ "2025-01-01T00:00:00Z" ],
"grid": {
"minLatitude": 25.00,
"maxLatitude": 27.00,
"minLongitude": -122.00,
"maxLongitude": -120.00,
"step": 0.5
},
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
forecasted_at,forecasted_time,lat,lon,name,temp
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,27.0000,-122.0000,,290.0439
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,27.0000,-121.5000,,289.8739
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,27.0000,-121.0000,,289.7339
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,27.0000,-120.5000,,289.6239
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,27.0000,-120.0000,,289.5039
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.5000,-122.0000,,290.2839
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.5000,-121.5000,,290.1139
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.5000,-121.0000,,289.9739
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.5000,-120.5000,,289.8339
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.5000,-120.0000,,289.7239
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.0000,-122.0000,,290.5739
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.0000,-121.5000,,290.4239
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.0000,-121.0000,,290.2439
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.0000,-120.5000,,290.0339
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,26.0000,-120.0000,,289.8339
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.5000,-122.0000,,290.9539
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.5000,-121.5000,,290.7239
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.5000,-121.0000,,290.4739
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.5000,-120.5000,,290.2339
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.5000,-120.0000,,290.0439
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.0000,-122.0000,,291.1239
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.0000,-121.5000,,290.9539
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.0000,-121.0000,,290.7139
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.0000,-120.5000,,290.4539
2025-01-01T00:00:00Z,2025-01-01T00:00:00Z,25.0000,-120.0000,,290.2239
Die Lead Time ist die Differenz zwischen dem Zeitpunkt, zu dem eine Vorhersage ausgegeben wurde (forecasted_at), und dem Gültigkeitszeitpunkt der Vorhersage (forecasted_time).
"12h", "45m")."3h").Anders gesagt steuern diese Parameter die minimale und maximale Lead Time jedes abgerufenen Vorhersagewerts (minHorizon/maxHorizon sind veraltete Aliase, die ganze Stunden akzeptieren).
Beispiel: Nur Werte anzeigen, die mindestens 12 Stunden im Voraus vorhergesagt wurden:
curl -X POST 'https://gribstream.com/api/v2/nbm/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2025-05-01T12:00:00Z",
"untilTime": "2025-05-01T18:00:00Z",
"minLeadTime": "12h",
"coordinates": [{ "lat": 40.758, "lon": -73.985, "name": "TimesSquare" }],
"variables": [{ "name": "TMP", "level": "2 m above ground", "alias": "temp" }]
}'
forecasted_at,forecasted_time,lat,lon,name,temp,horizon_hours
2025-05-01T00:00:00Z,2025-05-01T12:00:00Z,40.7580,-73.9850,TimesSquare,286.6700
2025-05-01T01:00:00Z,2025-05-01T13:00:00Z,40.7580,-73.9850,TimesSquare,288.0300
2025-05-01T02:00:00Z,2025-05-01T14:00:00Z,40.7580,-73.9850,TimesSquare,289.5900
2025-05-01T03:00:00Z,2025-05-01T15:00:00Z,40.7580,-73.9850,TimesSquare,290.9600
2025-05-01T04:00:00Z,2025-05-01T16:00:00Z,40.7580,-73.9850,TimesSquare,292.3300
2025-05-01T05:00:00Z,2025-05-01T17:00:00Z,40.7580,-73.9850,TimesSquare,293.1900
Hinweis: Die Zeilen sind hier nach forecasted_at sortiert, damit das Ergebnis leichter lesbar ist.
Weiteres Beispiel: Nur Kurzfristprognosen bis 3 Stunden einschließen:
curl -X POST 'https://gribstream.com/api/v2/nbm/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2025-05-01T12:00:00Z",
"untilTime": "2025-05-01T15:00:00Z",
"maxLeadTime": "3h",
"coordinates": [{ "lat": 40.758, "lon": -73.985 }],
"variables": [{ "name": "TMP", "level": "2 m above ground" }]
}'
Verwenden Sie minLeadTime und maxLeadTime zusammen, um die Vorhersagewerte auf das gewünschte Prognosefenster zu beschränken.
Tipp: Anders als der Parameter asOf (siehe nächstes Beispiel), der Ergebnisse auf Daten beschränkt, die vor einem bestimmten Zeitpunkt verfügbar waren, filtern minLeadTime und maxLeadTime nach dem Alter der Vorhersage relativ zum
vorhergesagten Wert.
asOf (für Backtesting)Beim Backtesting von Prognosemodellen ist es wichtig, Daten so abzufragen, wie sie damals bekannt waren, nicht nachträglich.
Zum Beispiel: “Wie lautete die Vorhersage für den 1. Mai basierend auf dem, was am 30. April um 12:00 UTC verfügbar war?”
Dies ist eine rückblickende Abfrage: asOf ist der Cutoff- bzw. Referenzzeitpunkt, daher sind nur Modellläufe zulässig, die zu diesem Zeitpunkt oder davor generiert wurden, ohne spätere Korrekturen oder Aktualisierungen.
curl -X POST 'https://gribstream.com/api/v2/nbm/timeseries' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2025-05-01T00:00:00Z",
"untilTime": "2025-05-02T00:00:00Z",
"asOf": "2025-05-01T12:00:00Z",
"coordinates": [{ "lat": 40.758, "lon": -73.985 , "name": "TimesSquare"}],
"variables": [{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }]
}'
forecasted_at,forecasted_time,lat,lon,name,temp
2025-04-30T23:00:00Z,2025-05-01T00:00:00Z,40.7580,-73.9850,TimesSquare,292.6500
2025-05-01T00:00:00Z,2025-05-01T01:00:00Z,40.7580,-73.9850,TimesSquare,291.6000
2025-05-01T01:00:00Z,2025-05-01T02:00:00Z,40.7580,-73.9850,TimesSquare,291.2300
2025-05-01T02:00:00Z,2025-05-01T03:00:00Z,40.7580,-73.9850,TimesSquare,290.1200
2025-05-01T03:00:00Z,2025-05-01T04:00:00Z,40.7580,-73.9850,TimesSquare,289.1600
2025-05-01T04:00:00Z,2025-05-01T05:00:00Z,40.7580,-73.9850,TimesSquare,288.4300
2025-05-01T05:00:00Z,2025-05-01T06:00:00Z,40.7580,-73.9850,TimesSquare,287.7400
2025-05-01T06:00:00Z,2025-05-01T07:00:00Z,40.7580,-73.9850,TimesSquare,286.8900
2025-05-01T07:00:00Z,2025-05-01T08:00:00Z,40.7580,-73.9850,TimesSquare,286.3500
2025-05-01T08:00:00Z,2025-05-01T09:00:00Z,40.7580,-73.9850,TimesSquare,285.7200
2025-05-01T09:00:00Z,2025-05-01T10:00:00Z,40.7580,-73.9850,TimesSquare,285.4300
2025-05-01T10:00:00Z,2025-05-01T11:00:00Z,40.7580,-73.9850,TimesSquare,285.7200
2025-05-01T11:00:00Z,2025-05-01T12:00:00Z,40.7580,-73.9850,TimesSquare,286.8000
2025-05-01T12:00:00Z,2025-05-01T13:00:00Z,40.7580,-73.9850,TimesSquare,288.1300
2025-05-01T12:00:00Z,2025-05-01T14:00:00Z,40.7580,-73.9850,TimesSquare,290.1600
2025-05-01T12:00:00Z,2025-05-01T15:00:00Z,40.7580,-73.9850,TimesSquare,291.3400
2025-05-01T12:00:00Z,2025-05-01T16:00:00Z,40.7580,-73.9850,TimesSquare,292.6500
2025-05-01T12:00:00Z,2025-05-01T17:00:00Z,40.7580,-73.9850,TimesSquare,293.0100
2025-05-01T12:00:00Z,2025-05-01T18:00:00Z,40.7580,-73.9850,TimesSquare,293.1500
2025-05-01T12:00:00Z,2025-05-01T19:00:00Z,40.7580,-73.9850,TimesSquare,292.7500
2025-05-01T12:00:00Z,2025-05-01T20:00:00Z,40.7580,-73.9850,TimesSquare,292.1500
2025-05-01T12:00:00Z,2025-05-01T21:00:00Z,40.7580,-73.9850,TimesSquare,291.3500
2025-05-01T12:00:00Z,2025-05-01T22:00:00Z,40.7580,-73.9850,TimesSquare,290.7100
2025-05-01T12:00:00Z,2025-05-01T23:00:00Z,40.7580,-73.9850,TimesSquare,289.5800
Hinweis: Die Zeilen sind hier nach forecasted_at sortiert, damit das Ergebnis leichter lesbar ist.
Dieses Beispiel verwendet NOAA National Blend of Models (NBM), das stündlich läuft. Beachten Sie, dass forecasted_at meist die Stunde vor forecasted_time ist, also die beste Vorhersage für diese
Stunde. Für Zeiten nach dem Cutoff wird asOf auf 2025-05-01T12:00:00Z gesetzt; Modellläufe nach diesem Zeitpunkt werden ausgeschlossen.
Mit GribStream können Sie Expressions definieren, um abgeleitete Spalten, Transformationen und boolesche Filter in Ihren API-Abfragen zu berechnen.
Expressions verwenden die Sprache expr und unterstützen numerische, logische und String-Operationen sowie mathematische Funktionen.
Eine Dashboard-Demo mit einem einzigen API-Request finden Sie hier: Maiswachstumssimulation
func.Hypot(uwind, vwind)
int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360
func.Hypot(uwind, vwind) > 10
curl -X POST 'https://gribstream.com/api/v2/hrrr/timeseries' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2024-09-10T00:00:00Z",
"untilTime": "2024-09-10T10:00:00Z",
"coordinates": [{ "lat": 40.7306, "lon": -73.9352, "name": "New York City" }],
"variables": [
{ "name": "UGRD", "level": "1000 mb", "alias": "uwind" },
{ "name": "VGRD", "level": "1000 mb", "alias": "vwind" }
],
"expressions": [
{ "expression": "func.Hypot(uwind, vwind)", "alias": "wind_magnitude" },
{ "expression": "int(270 - func.Atan2(vwind, uwind) * 180 / 3.14159) % 360", "alias": "wind_direction" }
]
}'
forecasted_at,forecasted_time,lat,lon,name,uwind,vwind,wind_direction,wind_magnitude
2024-09-10T02:00:00Z,2024-09-10T03:00:00Z,40.7306,-73.9352,New York City,7.1213,1.7680,256,7.3375
2024-09-10T01:00:00Z,2024-09-10T02:00:00Z,40.7306,-73.9352,New York City,8.1815,1.6363,258,8.3435
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,40.7306,-73.9352,New York City,8.0572,2.9389,249,8.5765
2024-09-10T05:00:00Z,2024-09-10T06:00:00Z,40.7306,-73.9352,New York City,6.8368,0.1001,269,6.8375
2024-09-10T04:00:00Z,2024-09-10T05:00:00Z,40.7306,-73.9352,New York City,6.4087,3.0921,244,7.1157
2024-09-10T03:00:00Z,2024-09-10T04:00:00Z,40.7306,-73.9352,New York City,6.4841,2.5385,248,6.9633
2024-09-09T23:00:00Z,2024-09-10T00:00:00Z,40.7306,-73.9352,New York City,6.1795,3.9539,237,7.3362
2024-09-10T08:00:00Z,2024-09-10T09:00:00Z,40.7306,-73.9352,New York City,5.9424,-0.6889,276,5.9822
2024-09-10T06:00:00Z,2024-09-10T07:00:00Z,40.7306,-73.9352,New York City,7.3567,1.5594,258,7.5201
2024-09-10T07:00:00Z,2024-09-10T08:00:00Z,40.7306,-73.9352,New York City,6.5438,0.7486,263,6.5864
Mit GribStream können Sie Expressions definieren, die räumlich und zeitlich filtern und nur Daten zurückgeben, die die Bedingung erfüllen.
Filter-Expressions folgen derselben Syntax wie berechnete Expressions, müssen aber zu true oder false auswerten.
Eine Dashboard-Demo mit einem einzigen API-Request finden Sie hier: Sturmjagd
curl -X POST 'https://gribstream.com/api/v2/gfs/timeseries' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2024-09-10T00:00:00Z",
"untilTime": "2024-09-10T10:00:00Z",
"grid": {
"minLatitude": 24.52,
"maxLatitude": 49.38,
"minLongitude": -124.77,
"maxLongitude": -66.93,
"step": 0.5
},
"variables": [
{"name": "CAPE", "level": "180-0 mb above ground", "info": "", "alias": "cape"},
{"name": "CIN", "level": "180-0 mb above ground", "info": "", "alias": "cin"}
],
"expressions":[
{ "expression": "cape + cin", "alias": "storm_severity"}
],
"filter":{"expression": "storm_severity >= 1200"}
}'
forecasted_at,forecasted_time,lat,lon,name,cape,cin,offset_hours,storm_severity
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,29.0200,-70.7700,,1337.0000,-1.6324,-5713.0000,1335.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,29.0200,-70.2700,,1204.0000,-1.6324,-5713.0000,1202.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.5200,-71.7700,,1432.0000,-0.6324,-5713.0000,1431.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.5200,-71.2700,,1384.0000,-1.6324,-5713.0000,1382.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.5200,-70.7700,,1355.0000,-0.6324,-5713.0000,1354.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.5200,-70.2700,,1388.0000,-1.6324,-5713.0000,1386.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.0200,-112.2700,,1599.0000,-148.6324,-5713.0000,1450.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.0200,-111.2700,,1424.0000,-104.6324,-5713.0000,1319.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.0200,-75.2700,,1328.0000,-0.6324,-5713.0000,1327.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.0200,-74.7700,,1242.0000,-1.6324,-5713.0000,1240.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.0200,-73.2700,,1327.0000,0.3676,-5713.0000,1327.3676
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,28.0200,-72.7700,,1471.0000,0.3676,-5713.0000,1471.3676
...
Alle vorherigen Beispiele verwenden den Endpoint timeseries (früher history). Er soll für jeden Zeitpunkt die bestmögliche Vorhersage zurückgeben.
Die beste Vorhersage ist immer die aktuellste, anders gesagt die mit der niedrigsten Lead Time. Hier bedeutet Lead Time die Differenz zwischen Modelllaufzeit (forecasted_at) und gültiger Zeit (forecasted_time). Die Parameter minLeadTime, maxLeadTime und asOf schränken ein,
welche Modellläufe berücksichtigt werden; für jeden Vorhersagewert wird jedoch genau ein Modelllauf ausgewählt.
Wenn Sie alle Läufe jedes Werts abrufen möchten, verwenden Sie den Endpoint runs (früher forecasts).
POST https://gribstream.com/api/v2/[MODEL]/runs
Dieser Endpoint wählt den Zeitraum mit den Parametern forecastedFrom und forecastedUntil, damit klar ist, dass die Daten nach Modelllaufzeit ausgewählt werden, also demselben Zeitpunkt, der als forecasted_at zurückgegeben wird. Bei /runs zählt timesList ebenfalls Modelllaufzeiten auf; das ist nützlich, wenn Sie bestimmte Zyklen suchen.
Alle anderen Parameter bleiben verfügbar und funktionieren gleich, außer asOf, das hier nicht verfügbar ist. Sie können also nach minLeadTime und maxLeadTime filtern, Expressions mit berechneten Werten definieren und danach filtern usw. (minHorizon/maxHorizon sind veraltete Aliase, die ganze Stunden akzeptieren.)
curl -X POST 'https://gribstream.com/api/v2/nbm/runs' \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"forecastedFrom": "2024-09-10T00:00:00Z",
"forecastedUntil": "2024-09-10T03:00:00Z",
"minLeadTime": "1h",
"maxLeadTime": "3h",
"coordinates": [
{ "lat": 47.6, "lon": -122.33 }
],
"variables": [
{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" },
{ "name": "WIND", "level": "10 m above ground", "info": "", "alias": "wind_speed" },
{ "name": "DPT", "level": "2 m above ground", "info": "", "alias": "dew_point" }
]
}'
forecasted_at,forecasted_time,lat,lon,name,dew_point,temp,wind_speed
2024-09-10T00:00:00Z,2024-09-10T01:00:00Z,47.6000,-122.3300,,288.2500,294.2700,1.6000
2024-09-10T00:00:00Z,2024-09-10T02:00:00Z,47.6000,-122.3300,,288.4000,293.4800,1.6000
2024-09-10T00:00:00Z,2024-09-10T03:00:00Z,47.6000,-122.3300,,288.2600,293.0000,1.6000
2024-09-10T01:00:00Z,2024-09-10T02:00:00Z,47.6000,-122.3300,,288.3500,293.4900,1.6000
2024-09-10T01:00:00Z,2024-09-10T03:00:00Z,47.6000,-122.3300,,288.1800,292.9800,1.6000
2024-09-10T01:00:00Z,2024-09-10T04:00:00Z,47.6000,-122.3300,,288.1900,292.2100,1.2000
2024-09-10T02:00:00Z,2024-09-10T03:00:00Z,47.6000,-122.3300,,288.1600,292.9500,1.6000
2024-09-10T02:00:00Z,2024-09-10T04:00:00Z,47.6000,-122.3300,,288.3800,292.1800,1.2000
2024-09-10T02:00:00Z,2024-09-10T05:00:00Z,47.6000,-122.3300,,287.9300,291.2800,1.2000
2024-09-10T03:00:00Z,2024-09-10T04:00:00Z,47.6000,-122.3300,,288.3300,292.0300,1.2000
2024-09-10T03:00:00Z,2024-09-10T05:00:00Z,47.6000,-122.3300,,287.9400,291.4900,1.2000
2024-09-10T03:00:00Z,2024-09-10T06:00:00Z,47.6000,-122.3300,,287.8000,290.8100,1.2000
Hinweis: Die Zeilen sind hier nach forecasted_at sortiert, damit das Ergebnis leichter lesbar ist. Beachten Sie, dass jeder Modelllauf die Lead Times 1 bis 3 zurückgibt.
Einige Modelle in GribStream, etwa NOAA Global Ensemble Forecast System (GEFS Atmos) und ECMWF Integrated Forecasting System - Ensemble Forecast (IFS Enfo), sind Ensembles. Jeder Lauf besteht aus 30 bis 50 Ensemble-Mitgliedern, die mit leicht unterschiedlichen Anfangsbedingungen starten. Alle Ensemble-Mitglieder zu betrachten hilft, Unsicherheit (Spread) zu quantifizieren, Wahrscheinlichkeiten zu berechnen (z. B. “80 % Regenwahrscheinlichkeit > 25 mm”) und seltene Extreme zu erkennen, die ein einzelner deterministischer Lauf verpassen könnte.
Sie können ein oder mehrere Ensemble-Mitglieder mit dem Feld members auswählen. Wenn es nicht angegeben ist, wird standardmäßig nur Ensemble-Mitglied 0 zurückgegeben, also die Kontrollvorhersage.
curl -X POST 'https://gribstream.com/api/v2/gefsatmos/timeseries' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [API_TOKEN]" \
-d '{
"fromTime": "2021-02-24T00:00:00Z",
"untilTime": "2021-02-24T12:00:00Z",
"minLeadTime": "0h",
"maxLeadTime": "3h",
"coordinates": [
{ "lat": 40.75, "lon": -73.98, "name": "home"}
],
"variables": [
{ "name": "TMP", "level": "2 m above ground", "info": "", "alias": "temp" }
],
"members": [1,2,3]
}'
forecasted_at,forecasted_time,lat,lon,name,member,temp
2021-02-24T00:00:00Z,2021-02-24T00:00:00Z,40.7500,-73.9800,home,1,277.0675
2021-02-24T00:00:00Z,2021-02-24T00:00:00Z,40.7500,-73.9800,home,2,276.9957
2021-02-24T00:00:00Z,2021-02-24T00:00:00Z,40.7500,-73.9800,home,3,277.1360
2021-02-24T00:00:00Z,2021-02-24T03:00:00Z,40.7500,-73.9800,home,1,275.1206
2021-02-24T00:00:00Z,2021-02-24T03:00:00Z,40.7500,-73.9800,home,2,275.0662
2021-02-24T00:00:00Z,2021-02-24T03:00:00Z,40.7500,-73.9800,home,3,275.7054
2021-02-24T06:00:00Z,2021-02-24T06:00:00Z,40.7500,-73.9800,home,1,275.9707
2021-02-24T06:00:00Z,2021-02-24T06:00:00Z,40.7500,-73.9800,home,2,275.3141
2021-02-24T06:00:00Z,2021-02-24T06:00:00Z,40.7500,-73.9800,home,3,275.7535
2021-02-24T06:00:00Z,2021-02-24T09:00:00Z,40.7500,-73.9800,home,1,273.9249
2021-02-24T06:00:00Z,2021-02-24T09:00:00Z,40.7500,-73.9800,home,2,273.8208
2021-02-24T06:00:00Z,2021-02-24T09:00:00Z,40.7500,-73.9800,home,3,274.3771
Hinweis: Die Zeilen sind hier nach forecasted_at sortiert, damit das Ergebnis leichter lesbar ist. Beachten Sie, dass jeder Modelllauf die Lead Times 1 bis 3 zurückgibt.
Wenn Sie das gewünschte Dataset und die Selektoren bereits kennen, überspringen Sie diesen Abschnitt und gehen Sie direkt zu /timeseries oder /runs. Das ist weiterhin die normale Art, GribStream zu verwenden.
Der Katalog ist für fortgeschrittenere Fälle gedacht: Dataset-Auswahlfelder, Multi-Modell-Dashboards, interne Tools oder Anwendungen, die Selektoren entdecken müssen, statt sie fest zu codieren.
curl 'https://gribstream.com/api/v2/catalog/datasets'
Dies gibt öffentliche Metadaten für jedes Dataset zurück: Code, vollständiger Name, Anbieter, Tags, Laufkadenz, Archivinformationen, Quelllinks sowie Links zur jeweiligen Modellseite und zu den API-Endpoints.
[
{
"code": "gfs",
"name": "GFS",
"full_name": "Global Forecast System",
"provider": "NOAA",
"models_page_url": "/models/gfs",
"api_timeseries_url": "/api/v2/gfs/timeseries",
"api_runs_url": "/api/v2/gfs/runs"
}
]
curl 'https://gribstream.com/api/v2/catalog/datasets/ifsoper/parameters'
Jede Parameterzusammenfassung enthält den exakten Kurzcode des Datenanbieters, den vollständigen Namen, Einheiten, eine Zusammenfassung und ob der Parameter mehrere Selektorvarianten hat. Parametercodes unterscheiden Groß- und Kleinschreibung; wenn ein Dataset 100u bereitstellt, müssen Sie genau 100u wie zurückgegeben wiederverwenden.
[
{
"short_name": "100u",
"full_name": "100 metre U wind component",
"units": "m s-1",
"variation_count": 1
}
]
Um einen Parameter im Detail zu prüfen, einschließlich aller Varianten und kopierfertiger Selektoren:
curl 'https://gribstream.com/api/v2/catalog/datasets/ifsoper/parameters/100u'
{
"short_name": "100u",
"full_name": "100 metre U wind component",
"variations": [
{
"selector": { "name": "100u", "level": "sfc", "info": "" },
"selector_literal": "{\"name\":\"100u\",\"level\":\"sfc\",\"info\":\"\"}"
}
]
}
Dies ist der fortgeschrittenste Katalog-Workflow. Er ist nützlich, wenn Ihre Anwendung ein gemeinsames Konzept wie 10-m-Windgeschwindigkeit braucht, verschiedene Datasets es aber mit unterschiedlichen Selektoren oder Expressions bereitstellen.
curl 'https://gribstream.com/api/v2/catalog/shared-parameters/wind_speed_10m?dataset=ifsoper&alias=wind'
Die Response enthält ein maschinenlesbares Fragment resolved_request, das Sie in den Request-Body der Vorhersageabfrage für dieses Dataset kopieren können.
{
"code": "wind_speed_10m",
"resolved_dataset": "ifsoper",
"resolved_supported": true,
"resolved_request": {
"variables": [
{ "name": "10u", "level": "sfc", "alias": "u_component", "hidden": true },
{ "name": "10v", "level": "sfc", "alias": "v_component", "hidden": true }
],
"expressions": [
{ "expression": "func.Hypot(u_component, v_component)", "alias": "wind" }
]
}
}
Sobald Sie Selektoren oder ein resolved_request haben, verwenden Sie sie in denselben Endpoints /timeseries und /runs, die weiter oben in dieser Anleitung gezeigt wurden.
Das vollständige Katalogschema und weitere Beispiele finden Sie unter Endpoints, OpenAPI und in der Rohspezifikation unter /docs/openapi.yaml.
Für Szenarien, die in dieser Anleitung nicht abgedeckt sind, schreiben Sie uns: info@gribstream.com.