wxdata 2.0.4__tar.gz → 2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {wxdata-2.0.4/src/wxdata.egg-info → wxdata-2.1}/PKG-INFO +326 -254
- {wxdata-2.0.4 → wxdata-2.1}/README.md +325 -253
- {wxdata-2.0.4 → wxdata-2.1}/pyproject.toml +1 -1
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/__init__.py +29 -1
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigefs/aigefs.py +3 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigfs/aigfs.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/cfs/cfs.py +3 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/ecmwf.py +24 -1
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gefs/gefs.py +9 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gfs/gfs.py +8 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/hgefs/hgefs.py +3 -0
- wxdata-2.1/src/wxdata/open_meteo_api/utils.py +127 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/__init__.py +8 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/cmc.py +557 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/current_weather.py +126 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/dwd.py +576 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/ecmwf.py +1869 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/jma.py +415 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/meteo_france.py +596 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/noaa.py +1931 -0
- wxdata-2.1/src/wxdata/open_meteo_api/weather_forecasts/ukmo.py +156 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/aigefs_post_processing.py +3 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/aigfs_post_processing.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/cfs_post_processing.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/ecmwf_post_processing.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/gefs_post_processing.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/gfs_post_processing.py +3 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/hgefs_post_processing.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/rtma_post_processing.py +2 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/rtma/rtma.py +3 -0
- wxdata-2.1/src/wxdata/utils/warnings.py +45 -0
- {wxdata-2.0.4 → wxdata-2.1/src/wxdata.egg-info}/PKG-INFO +326 -254
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata.egg-info/SOURCES.txt +11 -0
- {wxdata-2.0.4 → wxdata-2.1}/LICENSE +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/setup.cfg +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigefs/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigefs/paths.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigefs/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigfs/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigfs/paths.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/aigfs/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/calc/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/calc/derived_fields.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/calc/kinematics.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/calc/thermodynamics.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/calc/unit_conversion.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/cfs/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/cfs/file_scanner.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/cfs/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/client/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/client/byte_range.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/client/client.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/client/level_coords.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/file_funcs.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/keys.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/parsers.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/paths.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/ecmwf/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/fems/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/fems/meta_data.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/fems/observations.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gefs/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gefs/exception_messages.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gefs/file_funcs.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gefs/paths.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gefs/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gfs/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gfs/exception_messages.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gfs/paths.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/gfs/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/hgefs/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/hgefs/paths.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/hgefs/url_scanner.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/metars/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/metars/_clean_data.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/metars/metar_obs.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/noaa/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/noaa/nws.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/post_processors/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/radar/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/radar/nexrad2.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/radar/url_scanner.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/rtma/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/rtma/file_funcs.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/rtma/file_scanner.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/rtma/keys.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/rtma/url_scanners.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/soundings/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/soundings/_exceptions.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/soundings/wyoming_soundings.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/__init__.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/coords.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/exceptions.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/file_funcs.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/file_scanner.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/nomads_gribfilter.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/progress_bar.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/recycle_bin.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/scripts.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/tools.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata/utils/xmacis2_cleanup.py +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata.egg-info/dependency_links.txt +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata.egg-info/requires.txt +0 -0
- {wxdata-2.0.4 → wxdata-2.1}/src/wxdata.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wxdata
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.1
|
|
4
4
|
Summary: A Python package of end-to-end weather data clients & raw data clients with VPN/PROXY support, data processors that decode variable keys from GRIB format into a plain-language format & various tools for assisting Python automated workflows, querying meteorological datasets and filling gaps in meteorological data.
|
|
5
5
|
Author: Eric J. Drewitz
|
|
6
6
|
Project-URL: Documentation, https://github.com/edrewitz/wxdata/blob/main/Documentation/Landing%20Page.md
|
|
@@ -242,6 +242,7 @@ End-To-End clients with multiple servers to pull data from can find the differen
|
|
|
242
242
|
19) [Downloading Current RAWS Data and Plotting Current Energy Release Components (ERCs) Observations Across California and Nevada](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/observed_erc_map.ipynb)
|
|
243
243
|
20) [Downloading NEXRAD II Radar Data and then plotting it in Py-ART](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/NEXRADII.ipynb)
|
|
244
244
|
21) [Downloading 30 Days of 6hrly CFS Data and plotting the 30-Day time-mean for mean sea level pressure across the Northern Hemisphere](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/cfs.ipynb)
|
|
245
|
+
22) [Download all 50 Ensemble Members of the ECMWF IFS Ensemble for 2-Meter Temperature Using the Open-Meteo API and Make an Ensemble Spaghetti Plot](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/ecmwf_ifs_ens_spaghetti.ipynb)
|
|
245
246
|
|
|
246
247
|
*Advanced Users*
|
|
247
248
|
1) [Using the `client` module to download the latest HadCRUT5 Analysis netCDF file and open this dataset in xarray](https://github.com/edrewitz/WxData-JupyterLab-Examples/blob/main/hadcrut5.ipynb)
|
|
@@ -260,6 +261,7 @@ End-To-End clients with multiple servers to pull data from can find the differen
|
|
|
260
261
|
4. [Data Querying Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-querying-tools)
|
|
261
262
|
5. [Data Transformation & Gap Filling Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#data-transformation--gap-filling-tools)
|
|
262
263
|
6. [Automated Python Workflow Tools](https://github.com/edrewitz/WxData?tab=readme-ov-file#automated-python-workflow-tools)
|
|
264
|
+
7. [Open-Meteo API](https://github.com/edrewitz/WxData/blob/main/README.md#open-meteo-api)
|
|
263
265
|
|
|
264
266
|
### End-To-End Data Clients
|
|
265
267
|
|
|
@@ -419,262 +421,331 @@ End-To-End clients with multiple servers to pull data from can find the differen
|
|
|
419
421
|
|
|
420
422
|
---------------------------------------
|
|
421
423
|
|
|
424
|
+
### Open-Meteo API
|
|
425
|
+
|
|
426
|
+
***Current Weather***
|
|
427
|
+
1. [Current Weather](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20current%20weather.md#open-meteo-api-current-weather)
|
|
428
|
+
|
|
429
|
+
***National Oceanic and Atmospheric Administrationn (NOAA)***
|
|
430
|
+
1. [GFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20noaa%20gfs.md#open-meteo-api-gfs)
|
|
431
|
+
2. [GEFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20noaa%20gefs.md#open-meteo-api-gefs)
|
|
432
|
+
3. [AIGFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20noaa%20aigfs.md#open-meteo-api-aigfs)
|
|
433
|
+
4. [AIGEFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20noaa%20aigefs.md#open-meteo-api-aigefs)
|
|
434
|
+
5. [HGEFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20noaa%20hgefs.md#open-meteo-api-hgefs)
|
|
435
|
+
6. [NBM](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20noaa%20nbm.md#open-meteo-api-nbm)
|
|
436
|
+
|
|
437
|
+
***European Centre for Medium-Range Weather Forecasts (ECMWF)***
|
|
438
|
+
1. [IFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20ecmwf%20ifs.md#open-meteo-api-ecmwf-ifs)
|
|
439
|
+
2. [AIFS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20ecmwf%20aifs.md#open-meteo-api-ecmwf-aifs)
|
|
440
|
+
3. [IFS HRES](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20ecmwf%20ifs%20hres.md#open-meteo-api-ecmwf-ifs-hres)
|
|
441
|
+
4. [IFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20ecmwf%20ifs%20ens.md#open-meteo-api-ecmwf-ifs-ensemble)
|
|
442
|
+
5. [AIFS Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20ecmwf%20aifs%20ens.md#open-meteo-api-ecmwf-aifs-ensemble)
|
|
443
|
+
|
|
444
|
+
***Canadian Meteorological Centre (CMC)***
|
|
445
|
+
1. [GEM](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20cmc%20gem.md#open-meteo-api-cmc-gem)
|
|
446
|
+
2. [GEM Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20cmc%20gem%20ens.md#open-meteo-api-gem-ensemble)
|
|
447
|
+
|
|
448
|
+
***Deutscher Wetterdienst (DWD)***
|
|
449
|
+
1. [ICON](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20dwd%20icon.md#open-meteo-api-dwd-icon)
|
|
450
|
+
2. [ICON EPS](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20dwd%20icon%20eps.md#open-meteo-api-dwd-icon-eps)
|
|
451
|
+
|
|
452
|
+
***Meteo-France***
|
|
453
|
+
1. [ARPEGE](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20meteo%20france%20arpege.md#open-meteo-api-meteo-france-arpege)
|
|
454
|
+
|
|
455
|
+
***Japan Meteorological Agency (JMA)***
|
|
456
|
+
1. [JMA](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20jma%20jma.md#open-meteo-api-jma)
|
|
457
|
+
|
|
458
|
+
***UK Met Office (UKMO)***
|
|
459
|
+
1. [UKMO Global Ensemble](https://github.com/edrewitz/WxData/blob/main/Documentation/open%20meteo%20api%20ukmo%20global%20ens.md#open-meteo-api-ukmo-global-ensemble)
|
|
460
|
+
|
|
461
|
+
---------------------------------------
|
|
462
|
+
|
|
422
463
|
## Importing Functions from WxData
|
|
423
464
|
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
These functions do the following:
|
|
435
|
-
|
|
436
|
-
1) Scan for the latest available data.
|
|
437
|
-
- If the data on your local machine is not up to date, new data will download automatically.
|
|
438
|
-
- If the data on your local machine is up to date, new data download is bypassed.
|
|
439
|
-
- This is a safeguard that prevents excessive requests on the data servers.
|
|
440
|
-
|
|
441
|
-
2) Builds the wxdata directory to store the weather data files.
|
|
442
|
-
- Scans for the directory branch and builds the branch if it does not exist.
|
|
443
|
-
|
|
444
|
-
3) Downloads the data.
|
|
445
|
-
- Users can define their VPN/PROXY IP Address as a (dict) in their script and pass their
|
|
446
|
-
VPN/PROXY IP address into the function to avoid SSL Certificate errors when requesting data.
|
|
447
|
-
- Algorithm allows for up to 5 retries with a 30 second break between each retry to resolve connection
|
|
448
|
-
interruptions while not overburdening the data servers.
|
|
449
|
-
|
|
450
|
-
4) Pre-processes the data via filename formatting and correctly filing in the wxdata directory.
|
|
451
|
-
|
|
452
|
-
5) Post-processing by doing the following tasks:
|
|
453
|
-
- Remapping GRIB2 variable keys into plain language variable keys.
|
|
454
|
-
- Fixing dataset build errors and grouping all variables together.
|
|
455
|
-
- Transforms longitude from 0 to 360 degrees into -180 to 180 degrees.
|
|
456
|
-
- Subsetting the data to the latitude/longitude boundaries specified by the user.
|
|
457
|
-
- Converting temperature from kelvin to units the user wants (default is Celsius).
|
|
458
|
-
- Returning a post-processed xarray.array to the user.
|
|
459
|
-
|
|
460
|
-
6) Preserves system memory by doing the following:
|
|
461
|
-
- Deleting old data files before each new download.
|
|
462
|
-
- When clear_recycle_bin=True, the user's recycle bin is also cleared.
|
|
463
|
-
"""
|
|
464
|
-
|
|
465
|
-
# Global Forecast System (GFS)
|
|
466
|
-
# - GFS 0.25x0.25 Degree Primary Parameters
|
|
467
|
-
# - GFS 0.25x0.25 Degree Secondary Parameters
|
|
468
|
-
# - GFS 0.5x0.5 Degree
|
|
469
|
-
from wxdata.gfs.gfs import(
|
|
470
|
-
gfs_0p25,
|
|
471
|
-
gfs_0p25_secondary_parameters,
|
|
472
|
-
gfs_0p50
|
|
473
|
-
)
|
|
474
|
-
|
|
475
|
-
# AI Global Forecast System (AIGFS)
|
|
476
|
-
from wxdata.aigfs.aigfs import aigfs
|
|
477
|
-
|
|
478
|
-
# Hybrid Global Ensemble Forecast System (HGEFS)
|
|
479
|
-
from wxdata.hgefs.hgefs import hgefs_mean_spread
|
|
480
|
-
|
|
481
|
-
# Global Ensemble Forecast System (GEFS)
|
|
482
|
-
# - GEFS 0.5x0.5 Degree Primary Parameters
|
|
483
|
-
# - GEFS 0.5x0.5 Degree Secondary Parameters
|
|
484
|
-
# - GEFS 0.25x0.25 Degree
|
|
485
|
-
from wxdata.gefs.gefs import(
|
|
486
|
-
gefs_0p50,
|
|
487
|
-
gefs_0p50_secondary_parameters,
|
|
488
|
-
gefs_0p25
|
|
489
|
-
)
|
|
490
|
-
|
|
491
|
-
# Climate Forecast System (CFS)
|
|
492
|
-
# - CFS Flux Products
|
|
493
|
-
# - CFS Pressure Products
|
|
494
|
-
from wxdata.cfs.cfs import(
|
|
495
|
-
cfs_flux,
|
|
496
|
-
cfs_pressure
|
|
497
|
-
)
|
|
498
|
-
|
|
499
|
-
# AI Global Ensemble Forecast System (AIGEFS)
|
|
500
|
-
# - AIGEFS Pressure Members (Pressure Level Variables)
|
|
501
|
-
# - AIGEFS Surface Members (Surface Level Variables)
|
|
502
|
-
# - AIGEFS Single (AIGEFS Ensemble Mean & AIGEFS Ensemble Spread)
|
|
503
|
-
from wxdata.aigefs.aigefs import(
|
|
504
|
-
aigefs_pressure_members,
|
|
505
|
-
aigefs_surface_members,
|
|
506
|
-
aigefs_single
|
|
507
|
-
)
|
|
508
|
-
|
|
509
|
-
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
510
|
-
# - ECMWF IFS
|
|
511
|
-
# - ECMWF IFS Ensemble
|
|
512
|
-
# - ECMWF AIFS
|
|
513
|
-
# - ECMWF AIFS Ensemble
|
|
514
|
-
# - ECMWF IFS Wave
|
|
515
|
-
# - ECMWF IFS Wave Ensemble
|
|
516
|
-
from wxdata.ecmwf.ecmwf import(
|
|
517
|
-
ecmwf_ifs,
|
|
518
|
-
ecmwf_ifs_ens,
|
|
519
|
-
ecmwf_aifs,
|
|
520
|
-
ecmwf_aifs_ens,
|
|
521
|
-
ecmwf_ifs_wave,
|
|
522
|
-
ecmwf_ifs_wave_ens
|
|
523
|
-
)
|
|
524
|
-
|
|
525
|
-
# FEMS RAWS Network
|
|
526
|
-
# - Single Station Weather Observations
|
|
527
|
-
# - Single Station Fuels Observations
|
|
528
|
-
# - Multi Station Weather Observations
|
|
529
|
-
# - Multi Station Fuels Observations
|
|
530
|
-
# - Current Weather Observations - Multi Station
|
|
531
|
-
# - Current Fuels Observations - Multi Station
|
|
532
|
-
# - Current Weather Observations - All Stations By State
|
|
533
|
-
# - Current Fuels Observations - All Stations By State
|
|
534
|
-
# - Single Station NFDRS Forecast
|
|
535
|
-
# - Multi Station NFDRS Forecast
|
|
536
|
-
# - Single Station Weather Forecast
|
|
537
|
-
# - Multi Station Weather Forecast
|
|
538
|
-
from wxdata.fems.observations import(
|
|
539
|
-
get_single_raws_station_weather_observations,
|
|
540
|
-
get_single_raws_station_fuels_observations,
|
|
541
|
-
get_multi_raws_station_weather_observations,
|
|
542
|
-
get_multi_raws_station_fuels_observations,
|
|
543
|
-
get_current_multi_raws_station_weather_observations,
|
|
544
|
-
get_current_multi_raws_station_fuels_observations,
|
|
545
|
-
get_current_all_raws_station_weather_observations,
|
|
546
|
-
get_current_all_raws_station_fuels_observations,
|
|
547
|
-
get_single_raws_station_nfdrs_forecast,
|
|
548
|
-
get_multi_raws_station_nfdrs_forecast,
|
|
549
|
-
get_single_raws_station_weather_forecast,
|
|
550
|
-
get_multi_raws_station_weather_forecast
|
|
551
|
-
)
|
|
552
|
-
|
|
553
|
-
# FEMS RAWS Network
|
|
554
|
-
# - Single Station Meta Data
|
|
555
|
-
# - Multi Station Meta Data
|
|
556
|
-
from wxdata.fems.meta_data import(
|
|
557
|
-
get_single_raws_station_meta_data,
|
|
558
|
-
get_multi_raws_station_meta_data
|
|
559
|
-
)
|
|
560
|
-
|
|
561
|
-
# Real-Time Mesoscale Analysis (RTMA)
|
|
562
|
-
# - RTMA Latest
|
|
563
|
-
# - RTMA Comparison Between Two Times
|
|
564
|
-
from wxdata.rtma.rtma import(
|
|
565
|
-
rtma,
|
|
566
|
-
rtma_comparison
|
|
567
|
-
)
|
|
568
|
-
|
|
569
|
-
# NOAA
|
|
570
|
-
# - Storm Prediction Center Outlooks
|
|
571
|
-
# - Climate Prediction Center Outlooks
|
|
572
|
-
# - National Weather Service Forecasts
|
|
573
|
-
from wxdata.noaa.nws import(
|
|
574
|
-
get_ndfd_grids,
|
|
575
|
-
get_cpc_outlook
|
|
576
|
-
)
|
|
577
|
-
|
|
578
|
-
# Observed Upper-Air Soundings
|
|
579
|
-
# (University of Wyoming Database)
|
|
580
|
-
from wxdata.soundings.wyoming_soundings import get_observed_sounding_data
|
|
581
|
-
|
|
582
|
-
# METAR Observational Data (From NOAA)
|
|
583
|
-
from wxdata.metars.metar_obs import download_metar_data
|
|
584
|
-
|
|
585
|
-
# NEXRAD2 Radar Data
|
|
586
|
-
# - NEXRAD2 Radar Single Station
|
|
587
|
-
# - NEXRAD2 Radar Multi Station
|
|
588
|
-
from wxdata.radar.nexrad2 import(
|
|
589
|
-
download_current_single_station_nexrad2_radar_data,
|
|
590
|
-
download_current_multi_station_nexrad2_radar_data
|
|
591
|
-
)
|
|
592
|
-
|
|
593
|
-
"""
|
|
594
|
-
This section hosts all the functions and modules that involve post-processing the data.
|
|
595
|
-
These are the functions and modules that:
|
|
596
|
-
|
|
597
|
-
1) Re-map the GRIB2 Variable Keys into Plain Language Keys
|
|
598
|
-
2) Build the xarray.array of the various datasets.
|
|
599
|
-
|
|
600
|
-
"""
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
# Global Forecast System (GFS)
|
|
604
|
-
import wxdata.post_processors.gfs_post_processing as gfs_post_processing
|
|
605
|
-
|
|
606
|
-
# AI Global Forecast System (AIGFS)
|
|
607
|
-
import wxdata.post_processors.aigfs_post_processing as aigfs_post_processing
|
|
608
|
-
|
|
609
|
-
# Hybrid Global Ensemble Forecast System (HGEFS)
|
|
610
|
-
import wxdata.post_processors.hgefs_post_processing as hgefs_post_processing
|
|
611
|
-
|
|
612
|
-
# Global Ensemble Forecast System (GEFS)
|
|
613
|
-
import wxdata.post_processors.gefs_post_processing as gefs_post_processing
|
|
614
|
-
|
|
615
|
-
# AI Global Ensemble Forecast System (AIGEFS)
|
|
616
|
-
import wxdata.post_processors.aigefs_post_processing as aigefs_post_processing
|
|
617
|
-
|
|
618
|
-
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
619
|
-
import wxdata.post_processors.ecmwf_post_processing as ecmwf_post_processing
|
|
620
|
-
|
|
621
|
-
# Climate Forecast System (CFS)
|
|
622
|
-
import wxdata.post_processors.cfs_post_processing as cfs_post_processing
|
|
623
|
-
|
|
624
|
-
# Real-Time Mesoscale Analysis (RTMA)
|
|
625
|
-
from wxdata.post_processors.rtma_post_processing import process_rtma_data
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
"""
|
|
629
|
-
This section hosts the utility functions accessable to the user.
|
|
630
|
-
|
|
631
|
-
These functions provide helpful utilities when analyzing weather data.
|
|
632
|
-
|
|
633
|
-
Utility functions are geared towards the following types of users:
|
|
634
|
-
|
|
635
|
-
1) Users who want to use their own scripts to download the data however, they
|
|
636
|
-
would like to use the wxdata post-processing capabilities.
|
|
637
|
-
|
|
638
|
-
2) Users who want to make hemispheric graphics or any graphics where cyclic points
|
|
639
|
-
resolve missing data along the prime meridian or international dateline.
|
|
640
|
-
"""
|
|
641
|
-
# WxData function using cartopy to make cyclic points
|
|
642
|
-
# This is for users who wish to make graphics that cross the -180/180 degree longitude line
|
|
643
|
-
# This is commonly used for Hemispheric graphics
|
|
644
|
-
# Function that converts the longitude dimension in an xarray.array
|
|
645
|
-
# From 0 to 360 to -180 to 180
|
|
646
|
-
from wxdata.utils.coords import(
|
|
647
|
-
cyclic_point,
|
|
648
|
-
shift_longitude
|
|
649
|
-
)
|
|
650
|
-
|
|
651
|
-
# Functions to pixel query and query pixels along a line between points A and B
|
|
652
|
-
# Function to interpolate to n amount of points in between x and y values respectively
|
|
653
|
-
from wxdata.utils.tools import(
|
|
654
|
-
pixel_query,
|
|
655
|
-
line_query,
|
|
656
|
-
linear_anti_aliasing
|
|
657
|
-
)
|
|
658
|
-
|
|
659
|
-
# This function executes a list of Python scripts in the order the user lists them
|
|
660
|
-
from wxdata.utils.scripts import run_external_scripts
|
|
661
|
-
|
|
662
|
-
"""
|
|
663
|
-
This section hosts the various data clients that retrieve various types of data.
|
|
664
|
-
|
|
665
|
-
These clients can be easily configured to work on VPN/PROXY connections.
|
|
666
|
-
"""
|
|
667
|
-
|
|
668
|
-
# These are the wxdata HTTPS Clients with full VPN/PROXY Support
|
|
669
|
-
# Client List:
|
|
670
|
-
# - get_gridded_data()
|
|
671
|
-
# - get_csv_data()
|
|
672
|
-
# - get_excel_data()
|
|
673
|
-
# - get_xmacis_data()
|
|
674
|
-
# - get_aws_open_data()
|
|
675
|
-
# - byte_range_request()
|
|
676
|
-
import wxdata.client.client as client
|
|
465
|
+
```Python
|
|
466
|
+
"""
|
|
467
|
+
This file hosts all of the functions in the WxData Python library that directly interact with the user.
|
|
468
|
+
|
|
469
|
+
(C) Eric J. Drewitz 2025-2026
|
|
470
|
+
"""
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
"""
|
|
474
|
+
This section of functions are for users who want full wxdata functionality.
|
|
677
475
|
|
|
476
|
+
These functions do the following:
|
|
477
|
+
|
|
478
|
+
1) Scan for the latest available data.
|
|
479
|
+
- If the data on your local machine is not up to date, new data will download automatically.
|
|
480
|
+
- If the data on your local machine is up to date, new data download is bypassed.
|
|
481
|
+
- This is a safeguard that prevents excessive requests on the data servers.
|
|
482
|
+
|
|
483
|
+
2) Builds the wxdata directory to store the weather data files.
|
|
484
|
+
- Scans for the directory branch and builds the branch if it does not exist.
|
|
485
|
+
|
|
486
|
+
3) Downloads the data.
|
|
487
|
+
- Users can define their VPN/PROXY IP Address as a (dict) in their script and pass their
|
|
488
|
+
VPN/PROXY IP address into the function to avoid SSL Certificate errors when requesting data.
|
|
489
|
+
- Algorithm allows for up to 5 retries with a 30 second break between each retry to resolve connection
|
|
490
|
+
interruptions while not overburdening the data servers.
|
|
491
|
+
|
|
492
|
+
4) Pre-processes the data via filename formatting and correctly filing in the wxdata directory.
|
|
493
|
+
|
|
494
|
+
5) Post-processing by doing the following tasks:
|
|
495
|
+
- Remapping GRIB2 variable keys into plain language variable keys.
|
|
496
|
+
- Fixing dataset build errors and grouping all variables together.
|
|
497
|
+
- Transforms longitude from 0 to 360 degrees into -180 to 180 degrees.
|
|
498
|
+
- Subsetting the data to the latitude/longitude boundaries specified by the user.
|
|
499
|
+
- Converting temperature from kelvin to units the user wants (default is Celsius).
|
|
500
|
+
- Returning a post-processed xarray.array to the user.
|
|
501
|
+
|
|
502
|
+
6) Preserves system memory by doing the following:
|
|
503
|
+
- Deleting old data files before each new download.
|
|
504
|
+
- When clear_recycle_bin=True, the user's recycle bin is also cleared.
|
|
505
|
+
"""
|
|
506
|
+
|
|
507
|
+
# Global Forecast System (GFS)
|
|
508
|
+
# - GFS 0.25x0.25 Degree Primary Parameters
|
|
509
|
+
# - GFS 0.25x0.25 Degree Secondary Parameters
|
|
510
|
+
# - GFS 0.5x0.5 Degree
|
|
511
|
+
from wxdata.gfs.gfs import(
|
|
512
|
+
gfs_0p25,
|
|
513
|
+
gfs_0p25_secondary_parameters,
|
|
514
|
+
gfs_0p50
|
|
515
|
+
)
|
|
516
|
+
|
|
517
|
+
# AI Global Forecast System (AIGFS)
|
|
518
|
+
from wxdata.aigfs.aigfs import aigfs
|
|
519
|
+
|
|
520
|
+
# Hybrid Global Ensemble Forecast System (HGEFS)
|
|
521
|
+
from wxdata.hgefs.hgefs import hgefs_mean_spread
|
|
522
|
+
|
|
523
|
+
# Global Ensemble Forecast System (GEFS)
|
|
524
|
+
# - GEFS 0.5x0.5 Degree Primary Parameters
|
|
525
|
+
# - GEFS 0.5x0.5 Degree Secondary Parameters
|
|
526
|
+
# - GEFS 0.25x0.25 Degree
|
|
527
|
+
from wxdata.gefs.gefs import(
|
|
528
|
+
gefs_0p50,
|
|
529
|
+
gefs_0p50_secondary_parameters,
|
|
530
|
+
gefs_0p25
|
|
531
|
+
)
|
|
532
|
+
|
|
533
|
+
# Climate Forecast System (CFS)
|
|
534
|
+
# - CFS Flux Products
|
|
535
|
+
# - CFS Pressure Products
|
|
536
|
+
from wxdata.cfs.cfs import(
|
|
537
|
+
cfs_flux,
|
|
538
|
+
cfs_pressure
|
|
539
|
+
)
|
|
540
|
+
|
|
541
|
+
# AI Global Ensemble Forecast System (AIGEFS)
|
|
542
|
+
# - AIGEFS Pressure Members (Pressure Level Variables)
|
|
543
|
+
# - AIGEFS Surface Members (Surface Level Variables)
|
|
544
|
+
# - AIGEFS Single (AIGEFS Ensemble Mean & AIGEFS Ensemble Spread)
|
|
545
|
+
from wxdata.aigefs.aigefs import(
|
|
546
|
+
aigefs_pressure_members,
|
|
547
|
+
aigefs_surface_members,
|
|
548
|
+
aigefs_single
|
|
549
|
+
)
|
|
550
|
+
|
|
551
|
+
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
552
|
+
# - ECMWF IFS
|
|
553
|
+
# - ECMWF IFS Ensemble
|
|
554
|
+
# - ECMWF AIFS
|
|
555
|
+
# - ECMWF AIFS Ensemble
|
|
556
|
+
# - ECMWF IFS Wave
|
|
557
|
+
# - ECMWF IFS Wave Ensemble
|
|
558
|
+
from wxdata.ecmwf.ecmwf import(
|
|
559
|
+
ecmwf_ifs,
|
|
560
|
+
ecmwf_ifs_ens,
|
|
561
|
+
ecmwf_aifs,
|
|
562
|
+
ecmwf_aifs_ens,
|
|
563
|
+
ecmwf_ifs_wave,
|
|
564
|
+
ecmwf_ifs_wave_ens
|
|
565
|
+
)
|
|
566
|
+
|
|
567
|
+
# FEMS RAWS Network
|
|
568
|
+
# - Single Station Weather Observations
|
|
569
|
+
# - Single Station Fuels Observations
|
|
570
|
+
# - Multi Station Weather Observations
|
|
571
|
+
# - Multi Station Fuels Observations
|
|
572
|
+
# - Current Weather Observations - Multi Station
|
|
573
|
+
# - Current Fuels Observations - Multi Station
|
|
574
|
+
# - Current Weather Observations - All Stations By State
|
|
575
|
+
# - Current Fuels Observations - All Stations By State
|
|
576
|
+
# - Single Station NFDRS Forecast
|
|
577
|
+
# - Multi Station NFDRS Forecast
|
|
578
|
+
# - Single Station Weather Forecast
|
|
579
|
+
# - Multi Station Weather Forecast
|
|
580
|
+
from wxdata.fems.observations import(
|
|
581
|
+
get_single_raws_station_weather_observations,
|
|
582
|
+
get_single_raws_station_fuels_observations,
|
|
583
|
+
get_multi_raws_station_weather_observations,
|
|
584
|
+
get_multi_raws_station_fuels_observations,
|
|
585
|
+
get_current_multi_raws_station_weather_observations,
|
|
586
|
+
get_current_multi_raws_station_fuels_observations,
|
|
587
|
+
get_current_all_raws_station_weather_observations,
|
|
588
|
+
get_current_all_raws_station_fuels_observations,
|
|
589
|
+
get_single_raws_station_nfdrs_forecast,
|
|
590
|
+
get_multi_raws_station_nfdrs_forecast,
|
|
591
|
+
get_single_raws_station_weather_forecast,
|
|
592
|
+
get_multi_raws_station_weather_forecast
|
|
593
|
+
)
|
|
594
|
+
|
|
595
|
+
# FEMS RAWS Network
|
|
596
|
+
# - Single Station Meta Data
|
|
597
|
+
# - Multi Station Meta Data
|
|
598
|
+
from wxdata.fems.meta_data import(
|
|
599
|
+
get_single_raws_station_meta_data,
|
|
600
|
+
get_multi_raws_station_meta_data
|
|
601
|
+
)
|
|
602
|
+
|
|
603
|
+
# Real-Time Mesoscale Analysis (RTMA)
|
|
604
|
+
# - RTMA Latest
|
|
605
|
+
# - RTMA Comparison Between Two Times
|
|
606
|
+
from wxdata.rtma.rtma import(
|
|
607
|
+
rtma,
|
|
608
|
+
rtma_comparison
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
# NOAA
|
|
612
|
+
# - Storm Prediction Center Outlooks
|
|
613
|
+
# - Climate Prediction Center Outlooks
|
|
614
|
+
# - National Weather Service Forecasts
|
|
615
|
+
from wxdata.noaa.nws import(
|
|
616
|
+
get_ndfd_grids,
|
|
617
|
+
get_cpc_outlook
|
|
618
|
+
)
|
|
619
|
+
|
|
620
|
+
# Observed Upper-Air Soundings
|
|
621
|
+
# (University of Wyoming Database)
|
|
622
|
+
from wxdata.soundings.wyoming_soundings import get_observed_sounding_data
|
|
623
|
+
|
|
624
|
+
# METAR Observational Data (From NOAA)
|
|
625
|
+
from wxdata.metars.metar_obs import download_metar_data
|
|
626
|
+
|
|
627
|
+
# NEXRAD2 Radar Data
|
|
628
|
+
# - NEXRAD2 Radar Single Station
|
|
629
|
+
# - NEXRAD2 Radar Multi Station
|
|
630
|
+
from wxdata.radar.nexrad2 import(
|
|
631
|
+
download_current_single_station_nexrad2_radar_data,
|
|
632
|
+
download_current_multi_station_nexrad2_radar_data
|
|
633
|
+
)
|
|
634
|
+
|
|
635
|
+
"""
|
|
636
|
+
This section hosts all the functions and modules that involve post-processing the data.
|
|
637
|
+
These are the functions and modules that:
|
|
638
|
+
|
|
639
|
+
1) Re-map the GRIB2 Variable Keys into Plain Language Keys
|
|
640
|
+
2) Build the xarray.array of the various datasets.
|
|
641
|
+
|
|
642
|
+
"""
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
# Global Forecast System (GFS)
|
|
646
|
+
import wxdata.post_processors.gfs_post_processing as gfs_post_processing
|
|
647
|
+
|
|
648
|
+
# AI Global Forecast System (AIGFS)
|
|
649
|
+
import wxdata.post_processors.aigfs_post_processing as aigfs_post_processing
|
|
650
|
+
|
|
651
|
+
# Hybrid Global Ensemble Forecast System (HGEFS)
|
|
652
|
+
import wxdata.post_processors.hgefs_post_processing as hgefs_post_processing
|
|
653
|
+
|
|
654
|
+
# Global Ensemble Forecast System (GEFS)
|
|
655
|
+
import wxdata.post_processors.gefs_post_processing as gefs_post_processing
|
|
656
|
+
|
|
657
|
+
# AI Global Ensemble Forecast System (AIGEFS)
|
|
658
|
+
import wxdata.post_processors.aigefs_post_processing as aigefs_post_processing
|
|
659
|
+
|
|
660
|
+
# European Centre for Medium-Range Weather Forecasts (ECMWF)
|
|
661
|
+
import wxdata.post_processors.ecmwf_post_processing as ecmwf_post_processing
|
|
662
|
+
|
|
663
|
+
# Climate Forecast System (CFS)
|
|
664
|
+
import wxdata.post_processors.cfs_post_processing as cfs_post_processing
|
|
665
|
+
|
|
666
|
+
# Real-Time Mesoscale Analysis (RTMA)
|
|
667
|
+
from wxdata.post_processors.rtma_post_processing import process_rtma_data
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
"""
|
|
671
|
+
This section hosts the utility functions accessable to the user.
|
|
672
|
+
|
|
673
|
+
These functions provide helpful utilities when analyzing weather data.
|
|
674
|
+
|
|
675
|
+
Utility functions are geared towards the following types of users:
|
|
676
|
+
|
|
677
|
+
1) Users who want to use their own scripts to download the data however, they
|
|
678
|
+
would like to use the wxdata post-processing capabilities.
|
|
679
|
+
|
|
680
|
+
2) Users who want to make hemispheric graphics or any graphics where cyclic points
|
|
681
|
+
resolve missing data along the prime meridian or international dateline.
|
|
682
|
+
"""
|
|
683
|
+
# WxData function using cartopy to make cyclic points
|
|
684
|
+
# This is for users who wish to make graphics that cross the -180/180 degree longitude line
|
|
685
|
+
# This is commonly used for Hemispheric graphics
|
|
686
|
+
# Function that converts the longitude dimension in an xarray.array
|
|
687
|
+
# From 0 to 360 to -180 to 180
|
|
688
|
+
from wxdata.utils.coords import(
|
|
689
|
+
cyclic_point,
|
|
690
|
+
shift_longitude
|
|
691
|
+
)
|
|
692
|
+
|
|
693
|
+
# Functions to pixel query and query pixels along a line between points A and B
|
|
694
|
+
# Function to interpolate to n amount of points in between x and y values respectively
|
|
695
|
+
from wxdata.utils.tools import(
|
|
696
|
+
pixel_query,
|
|
697
|
+
line_query,
|
|
698
|
+
linear_anti_aliasing
|
|
699
|
+
)
|
|
700
|
+
|
|
701
|
+
# This function executes a list of Python scripts in the order the user lists them
|
|
702
|
+
from wxdata.utils.scripts import run_external_scripts
|
|
703
|
+
|
|
704
|
+
"""
|
|
705
|
+
This section hosts the various data clients that retrieve various types of data.
|
|
706
|
+
|
|
707
|
+
These clients can be easily configured to work on VPN/PROXY connections.
|
|
708
|
+
"""
|
|
709
|
+
|
|
710
|
+
# These are the wxdata HTTPS Clients with full VPN/PROXY Support
|
|
711
|
+
# Client List:
|
|
712
|
+
# - get_gridded_data()
|
|
713
|
+
# - get_csv_data()
|
|
714
|
+
# - get_excel_data()
|
|
715
|
+
# - get_xmacis_data()
|
|
716
|
+
# - get_aws_open_data()
|
|
717
|
+
# - byte_range_request()
|
|
718
|
+
import wxdata.client.client as client
|
|
719
|
+
|
|
720
|
+
"""
|
|
721
|
+
***************************************************************************
|
|
722
|
+
This section hosts the various Python interfaces for the Open-Meteo API.
|
|
723
|
+
|
|
724
|
+
This API can be found at: https://open-meteo.com/
|
|
725
|
+
***************************************************************************
|
|
726
|
+
"""
|
|
727
|
+
#############################
|
|
728
|
+
### Weather Forecast Data ###
|
|
729
|
+
#############################
|
|
730
|
+
|
|
731
|
+
# - NOAA/NCEP Models
|
|
732
|
+
# - ECMWF Models
|
|
733
|
+
# - DWD Models
|
|
734
|
+
# - Meteo-France Models
|
|
735
|
+
# - CMC Models
|
|
736
|
+
# - Japan Meteorological Agency (JMA) Models
|
|
737
|
+
# - UK Met Office (UKMO)
|
|
738
|
+
# - Current Weather (Model Mosaic)
|
|
739
|
+
import wxdata.open_meteo_api.weather_forecasts.noaa as open_meteo_api_noaa
|
|
740
|
+
import wxdata.open_meteo_api.weather_forecasts.ecmwf as open_meteo_api_ecmwf
|
|
741
|
+
import wxdata.open_meteo_api.weather_forecasts.dwd as open_meteo_api_dwd
|
|
742
|
+
import wxdata.open_meteo_api.weather_forecasts.meteo_france as open_meteo_api_meteo_france
|
|
743
|
+
import wxdata.open_meteo_api.weather_forecasts.cmc as open_meteo_api_cmc
|
|
744
|
+
import wxdata.open_meteo_api.weather_forecasts.jma as open_meteo_api_jma
|
|
745
|
+
import wxdata.open_meteo_api.weather_forecasts.ukmo as open_meteo_api_ukmo
|
|
746
|
+
import wxdata.open_meteo_api.weather_forecasts.current_weather as open_meteo_api_current_weather
|
|
747
|
+
|
|
748
|
+
```
|
|
678
749
|
-------------------------------------------
|
|
679
750
|
|
|
680
751
|
## Citations
|
|
@@ -725,5 +796,6 @@ End-To-End clients with multiple servers to pull data from can find the differen
|
|
|
725
796
|
7) [Applied Climate Information System (ACIS)](https://www.rcc-acis.org/docs_webservices.html)
|
|
726
797
|
8) [USDA Fire Environment Mapping System](https://fems.fs2c.usda.gov/download)
|
|
727
798
|
9) [Amazon AWS Unidata NEXRAD2 Bucket](https://unidata-nexrad-level2.s3.amazonaws.com/index.html)
|
|
799
|
+
10) [Open-Meteo API](https://open-meteo.com/)
|
|
728
800
|
|
|
729
801
|
|