Skip to content

GribStream/python-client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

python-client

Python client library to interface with GribStream

Leverage: - The National Blend of Models (NBM) - The Global Forecast System (GFS) - The Rapid Refresh (RAP)

GFS and RAP are suitable for SkewT LogP charts. Check the example.

houston2025

from client import GribStreamClient
import datetime

with GribStreamClient(apikey=None) as client: # DEMO API token

print("Query all NBM weather forecasts for three parameters, over a three hour range, ten hours out, for three coordinates")
start = datetime.datetime.now(datetime.UTC)
df = client.forecasts(
    dataset='nbm',
    forecasted_from=datetime.datetime(year=2024, month=8, day=10, hour=0),
    forecasted_until=datetime.datetime(year=2024, month=8, day=10, hour=3),
    coordinates=[
        {"lat": 40.75, "lon": -73.98},
        {"lat": 29.75, "lon": -95.36},
        {"lat": 47.60, "lon": -122.33},
    ],
    variables=[
        {"name": "TMP", "level": "2 m above ground", "info": ""},
        {"name": "WIND", "level": "10 m above ground", "info": ""},
        {"name": "DPT", "level": "2 m above ground", "info": ""},
    ],
    min_horizon=1,
    max_horizon=10,
)
print(df.sort_values(['forecasted_time', 'lat', 'lon']).head(20).to_string(index=False))
print('response in:', datetime.datetime.now(datetime.UTC) - start)

print()

print("Query the best GFS historical data for two parameters, for a three day range, for three coordinates, as of the end of the second day")
start = datetime.datetime.now(datetime.UTC)
df = client.history(
    dataset='gfs',
    from_time=datetime.datetime(year=2022, month=8, day=10, hour=0),
    until_time=datetime.datetime(year=2022, month=8, day=13, hour=0),
    coordinates=[
        {"lat": 40.75, "lon": -73.98},
        {"lat": 29.75, "lon": -95.36},
        {"lat": 47.60, "lon": -122.33},
    ],
    variables=[
        {"name": "TMP", "level": "2 m above ground", "info": ""},
        {"name": "TMP", "level": "surface", "info": ""},
    ],
    # Time travel. Before as_of, forecasted_time is history, after it is the forecast at as_of
    as_of=datetime.datetime(year=2024, month=8, day=12, hour=0),
    min_horizon=0,
    max_horizon=264,
)
print(df.sort_values(['forecasted_time', 'lat', 'lon']).head(20).to_string(index=False))
print('response in:', datetime.datetime.now(datetime.UTC) - start)

print("done")

Output:

Warning, missing API token. Running in limited DEMO mode.
Query all NBM weather forecasts for three parameters, over a three hour range, ten hours out, for three coordinates
            forecasted_at           forecasted_time   lat     lon  DPT|2 m above ground|  TMP|2 m above ground|  WIND|10 m above ground|
2024-08-10 00:00:00+00:00 2024-08-10 01:00:00+00:00 29.75  -95.36                 297.27                 305.87                      2.0
2024-08-10 00:00:00+00:00 2024-08-10 01:00:00+00:00 40.75  -73.98                 295.27                 296.27                     11.6
2024-08-10 00:00:00+00:00 2024-08-10 01:00:00+00:00 47.60 -122.33                 289.27                 298.67                      2.0
2024-08-10 01:00:00+00:00 2024-08-10 02:00:00+00:00 29.75  -95.36                 297.72                 304.90                      1.6
2024-08-10 00:00:00+00:00 2024-08-10 02:00:00+00:00 29.75  -95.36                 297.75                 304.90                      1.6
2024-08-10 01:00:00+00:00 2024-08-10 02:00:00+00:00 40.75  -73.98                 295.32                 296.10                     11.2
2024-08-10 00:00:00+00:00 2024-08-10 02:00:00+00:00 40.75  -73.98                 295.35                 296.10                     11.2
2024-08-10 01:00:00+00:00 2024-08-10 02:00:00+00:00 47.60 -122.33                 289.72                 296.50                      1.6
2024-08-10 00:00:00+00:00 2024-08-10 02:00:00+00:00 47.60 -122.33                 289.35                 296.50                      1.6
2024-08-10 02:00:00+00:00 2024-08-10 03:00:00+00:00 29.75  -95.36                 297.47                 304.05                      1.6
2024-08-10 00:00:00+00:00 2024-08-10 03:00:00+00:00 29.75  -95.36                 297.82                 304.23                      1.2
2024-08-10 01:00:00+00:00 2024-08-10 03:00:00+00:00 29.75  -95.36                 298.01                 304.23                      1.6
2024-08-10 02:00:00+00:00 2024-08-10 03:00:00+00:00 40.75  -73.98                 295.07                 295.65                     10.4
2024-08-10 00:00:00+00:00 2024-08-10 03:00:00+00:00 40.75  -73.98                 295.42                 295.83                     10.4
2024-08-10 01:00:00+00:00 2024-08-10 03:00:00+00:00 40.75  -73.98                 295.21                 295.83                     10.4
2024-08-10 02:00:00+00:00 2024-08-10 03:00:00+00:00 47.60 -122.33                 289.87                 294.85                      1.2
2024-08-10 00:00:00+00:00 2024-08-10 03:00:00+00:00 47.60 -122.33                 289.82                 295.03                      1.6
2024-08-10 01:00:00+00:00 2024-08-10 03:00:00+00:00 47.60 -122.33                 289.61                 294.63                      1.2
2024-08-10 02:00:00+00:00 2024-08-10 04:00:00+00:00 29.75  -95.36                 297.89                 303.52                      1.2
2024-08-10 00:00:00+00:00 2024-08-10 04:00:00+00:00 29.75  -95.36                 298.23                 303.53                      1.2
response in: 0:00:01.427238

Query the best GFS historical data for two parameters, for a three day range, for three coordinates, as of the end of the second day
            forecasted_at           forecasted_time   lat     lon  TMP|2 m above ground|  TMP|surface|
2022-08-10 00:00:00+00:00 2022-08-10 00:00:00+00:00 29.75  -95.36                 305.76        306.26
2022-08-10 00:00:00+00:00 2022-08-10 00:00:00+00:00 40.75  -73.98                 303.16        303.46
2022-08-10 00:00:00+00:00 2022-08-10 00:00:00+00:00 47.60 -122.33                 297.66        298.66
2022-08-10 00:00:00+00:00 2022-08-10 01:00:00+00:00 29.75  -95.36                 304.38        304.30
2022-08-10 00:00:00+00:00 2022-08-10 01:00:00+00:00 40.75  -73.98                 301.58        301.80
2022-08-10 00:00:00+00:00 2022-08-10 01:00:00+00:00 47.60 -122.33                 295.48        296.10
2022-08-10 00:00:00+00:00 2022-08-10 02:00:00+00:00 29.75  -95.36                 303.24        303.22
2022-08-10 00:00:00+00:00 2022-08-10 02:00:00+00:00 40.75  -73.98                 301.04        301.42
2022-08-10 00:00:00+00:00 2022-08-10 02:00:00+00:00 47.60 -122.33                 294.24        294.52
2022-08-10 00:00:00+00:00 2022-08-10 03:00:00+00:00 29.75  -95.36                 302.77        302.79
2022-08-10 00:00:00+00:00 2022-08-10 03:00:00+00:00 40.75  -73.98                 300.47        300.69
2022-08-10 00:00:00+00:00 2022-08-10 03:00:00+00:00 47.60 -122.33                 291.47        290.99
2022-08-10 00:00:00+00:00 2022-08-10 04:00:00+00:00 29.75  -95.36                 301.26        300.90
2022-08-10 00:00:00+00:00 2022-08-10 04:00:00+00:00 40.75  -73.98                 299.06        299.50
2022-08-10 00:00:00+00:00 2022-08-10 04:00:00+00:00 47.60 -122.33                 288.96        288.20
2022-08-10 00:00:00+00:00 2022-08-10 05:00:00+00:00 29.75  -95.36                 300.61        300.24
2022-08-10 00:00:00+00:00 2022-08-10 05:00:00+00:00 40.75  -73.98                 297.31        297.44
2022-08-10 00:00:00+00:00 2022-08-10 05:00:00+00:00 47.60 -122.33                 287.51        286.94
2022-08-10 06:00:00+00:00 2022-08-10 06:00:00+00:00 29.75  -95.36                 300.38        299.93
2022-08-10 06:00:00+00:00 2022-08-10 06:00:00+00:00 40.75  -73.98                 296.98        296.93
response in: 0:00:00.659955
done

If you liked GribStream please consider upvoting on ProductHunt here

About

Python client library to interface with GribStream

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages