wxdata 2.3__tar.gz → 3.0__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-3.0/PKG-INFO +180 -0
- wxdata-3.0/README.md +148 -0
- {wxdata-2.3 → wxdata-3.0}/pyproject.toml +22 -3
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/__init__.py +85 -11
- wxdata-3.0/src/wxdata/aigefs_cli.py +641 -0
- wxdata-3.0/src/wxdata/aigfs_cli.py +526 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/cfs/__init__.py +4 -0
- {wxdata-2.3/src/wxdata → wxdata-3.0/src/wxdata/archived_data}/model_data/noaa/cfs/cfs.py +353 -287
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/cfs/url_scanner.py +226 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/gefs/__init__.py +5 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/gefs/gefs.py +2858 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/gefs/url_scanner.py +693 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/gfs/__init__.py +5 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/gfs/gfs.py +2904 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/gfs/url_scanners.py +431 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/rtma/__init__.py +1 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/rtma/rtma.py +229 -0
- wxdata-3.0/src/wxdata/archived_data/model_data/noaa/rtma/url_scanner.py +134 -0
- wxdata-3.0/src/wxdata/archived_data/radar_data/__init__.py +4 -0
- wxdata-3.0/src/wxdata/archived_data/radar_data/nexrad2.py +237 -0
- wxdata-3.0/src/wxdata/cansips_cli.py +591 -0
- wxdata-3.0/src/wxdata/cfs_cli.py +1769 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/client/byte_range.py +113 -23
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/client/client.py +231 -292
- wxdata-3.0/src/wxdata/ecmwf_cli.py +1689 -0
- wxdata-3.0/src/wxdata/gdps_cli.py +1275 -0
- wxdata-3.0/src/wxdata/gefs_cli.py +2103 -0
- wxdata-3.0/src/wxdata/geps_cli.py +758 -0
- wxdata-3.0/src/wxdata/gfs_cli.py +2087 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/gridded_forecasts/noaa/nws/nws.py +61 -29
- wxdata-3.0/src/wxdata/hgefs_cli.py +517 -0
- wxdata-3.0/src/wxdata/hrdps_cli.py +1259 -0
- wxdata-3.0/src/wxdata/metars_cli.py +115 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/forecast/cansips_forecast.py +41 -7
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/hindcast/cansips_hindcast.py +38 -5
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/gdps/gdps.py +42 -9
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/geps/geps.py +39 -6
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/hrdps/hrdps.py +38 -5
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/rdps/rdps.py +38 -5
- wxdata-3.0/src/wxdata/model_data/ecmwf/__init__.py +17 -0
- wxdata-3.0/src/wxdata/model_data/ecmwf/byte_range.py +489 -0
- wxdata-3.0/src/wxdata/model_data/ecmwf/ecmwf.py +13076 -0
- wxdata-3.0/src/wxdata/model_data/ecmwf/url_scanners.py +3214 -0
- wxdata-3.0/src/wxdata/model_data/ecmwf/validate.py +40 -0
- wxdata-3.0/src/wxdata/model_data/noaa/aigefs/aigefs.py +1446 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/aigefs/url_scanners.py +176 -47
- wxdata-3.0/src/wxdata/model_data/noaa/aigfs/aigfs.py +670 -0
- wxdata-3.0/src/wxdata/model_data/noaa/aigfs/url_scanners.py +288 -0
- wxdata-3.0/src/wxdata/model_data/noaa/cfs/cfs.py +1652 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/cfs/file_scanner.py +1 -0
- wxdata-3.0/src/wxdata/model_data/noaa/cfs/url_scanners.py +814 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gefs/gefs.py +1164 -530
- wxdata-3.0/src/wxdata/model_data/noaa/gefs/paths.py +58 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gfs/gfs.py +1085 -510
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/hgefs/hgefs.py +95 -90
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/rtma/rtma.py +143 -56
- wxdata-3.0/src/wxdata/ndfd_cli.py +424 -0
- wxdata-3.0/src/wxdata/nexrad2_cli.py +301 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/metars/metar_obs.py +1 -2
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/radar/nexrad2.py +32 -25
- wxdata-3.0/src/wxdata/observational_data/radar/url_scanner.py +246 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/soundings/wyoming_soundings.py +50 -7
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/aigefs_post_processing.py +1 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/aigfs_post_processing.py +1 -0
- wxdata-3.0/src/wxdata/post_processors/cfs_post_processing.py +273 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/rtma_post_processing.py +24 -0
- wxdata-3.0/src/wxdata/rdps_cli.py +1282 -0
- wxdata-3.0/src/wxdata/rtma_cli.py +529 -0
- wxdata-3.0/src/wxdata/soundings_cli.py +246 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/__init__.py +1 -1
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/tools.py +22 -13
- wxdata-3.0/src/wxdata/utils/transforms.py +73 -0
- wxdata-3.0/src/wxdata/utils/verify.py +38 -0
- wxdata-3.0/src/wxdata.egg-info/PKG-INFO +180 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata.egg-info/SOURCES.txt +39 -2
- wxdata-3.0/src/wxdata.egg-info/entry_points.txt +18 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata.egg-info/requires.txt +1 -1
- wxdata-2.3/PKG-INFO +0 -1078
- wxdata-2.3/README.md +0 -1046
- wxdata-2.3/src/wxdata/model_data/ecmwf/__init__.py +0 -11
- wxdata-2.3/src/wxdata/model_data/ecmwf/ecmwf.py +0 -6202
- wxdata-2.3/src/wxdata/model_data/ecmwf/url_scanners.py +0 -1103
- wxdata-2.3/src/wxdata/model_data/noaa/aigefs/aigefs.py +0 -750
- wxdata-2.3/src/wxdata/model_data/noaa/aigfs/aigfs.py +0 -310
- wxdata-2.3/src/wxdata/model_data/noaa/aigfs/url_scanners.py +0 -229
- wxdata-2.3/src/wxdata/model_data/noaa/cfs/url_scanners.py +0 -1048
- wxdata-2.3/src/wxdata/post_processors/cfs_post_processing.py +0 -1763
- wxdata-2.3/src/wxdata/utils/xmacis2_cleanup.py +0 -109
- wxdata-2.3/src/wxdata.egg-info/PKG-INFO +0 -1078
- {wxdata-2.3 → wxdata-3.0}/LICENSE +0 -0
- {wxdata-2.3 → wxdata-3.0}/setup.cfg +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/airnow_api/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/airnow_api/_errors.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/airnow_api/observations.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/air_quality/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/air_quality/cams.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/climate/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/climate/climate_data.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/marine_forecasts/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/marine_forecasts/dwd.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/marine_forecasts/ecmwf.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/marine_forecasts/meteo_france.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/marine_forecasts/noaa.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/seasonal_forecasts/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/seasonal_forecasts/ecmwf_daily.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/seasonal_forecasts/ecmwf_monthly.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/seasonal_forecasts/ecmwf_weekly.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/solar_radiation/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/solar_radiation/models.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/solar_radiation/solar_radiation.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/cmc.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/current_weather.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/dwd.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/ecmwf.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/google.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/jma.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/meteo_france.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/noaa.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/api/open_meteo_api/weather_forecasts/ukmo.py +0 -0
- {wxdata-2.3/src/wxdata → wxdata-3.0/src/wxdata/archived_data}/model_data/noaa/gefs/paths.py +0 -0
- {wxdata-2.3/src/wxdata/observational_data/radar → wxdata-3.0/src/wxdata/archived_data/radar_data}/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/calc/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/calc/derived_fields.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/calc/kinematics.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/calc/thermodynamics.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/calc/unit_conversion.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/client/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/client/level_coords.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/fuels_data/fems/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/fuels_data/fems/meta_data.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/fuels_data/fems/observations.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/gridded_forecasts/noaa/nws/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/forecast/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/forecast/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/hindcast/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/hindcast/file_sorter.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/cansips/hindcast/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/gdps/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/gdps/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/geps/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/geps/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/hrdps/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/hrdps/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/rdps/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/rdps/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/utils/_exceptions.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/utils/cmc_keys.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/utils/file_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/cmc/utils/filenames.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/ecmwf/file_funcs.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/ecmwf/keys.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/ecmwf/parsers.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/ecmwf/paths.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/aigefs/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/aigefs/paths.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/aigfs/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/aigfs/paths.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/cfs/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gefs/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gefs/exception_messages.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gefs/file_funcs.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gefs/url_scanners.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gfs/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gfs/exception_messages.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gfs/paths.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/gfs/url_scanners.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/hgefs/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/hgefs/paths.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/hgefs/url_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/rtma/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/rtma/file_funcs.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/rtma/file_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/rtma/keys.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/model_data/noaa/rtma/url_scanners.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/metars/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/metars/_clean_data.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/radar/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/soundings/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/observational_data/soundings/_exceptions.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/__init__.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/cmc_post_processing.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/ecmwf_post_processing.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/gefs_post_processing.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/gfs_post_processing.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/post_processors/hgefs_post_processing.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/api.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/coords.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/exceptions.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/file_funcs.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/file_scanner.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/nomads_gribfilter.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/progress_bar.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/recycle_bin.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/scripts.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata/utils/warnings.py +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata.egg-info/dependency_links.txt +0 -0
- {wxdata-2.3 → wxdata-3.0}/src/wxdata.egg-info/top_level.txt +0 -0
wxdata-3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: wxdata
|
|
3
|
+
Version: 3.0
|
|
4
|
+
Summary: A Python package of end-to-end weather data clients & raw data clients with VPN/Proxy Server 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
|
+
Author: Eric J. Drewitz
|
|
6
|
+
Project-URL: Documentation, https://edrewitz.github.io/WxData/
|
|
7
|
+
Project-URL: Repository, https://github.com/edrewitz/wxdata/tree/main
|
|
8
|
+
Keywords: meteorology,atmospheric sciences
|
|
9
|
+
Classifier: Programming Language :: Python
|
|
10
|
+
Classifier: Topic :: Scientific/Engineering
|
|
11
|
+
Classifier: Topic :: Scientific/Engineering :: Atmospheric Science
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Requires-Python: >=3.10
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: metpy>=1.7.1
|
|
17
|
+
Requires-Dist: numpy>=2.2.6
|
|
18
|
+
Requires-Dist: pandas>=2.3.3
|
|
19
|
+
Requires-Dist: cartopy>=0.25.0
|
|
20
|
+
Requires-Dist: xarray>=2025.6.1
|
|
21
|
+
Requires-Dist: netcdf4>=1.7.3
|
|
22
|
+
Requires-Dist: shapeography>=1.2
|
|
23
|
+
Requires-Dist: beautifulsoup4>=4.14.3
|
|
24
|
+
Requires-Dist: requests>=2.32.5
|
|
25
|
+
Requires-Dist: cfgrib>=0.9.15.1
|
|
26
|
+
Requires-Dist: dask>=2025.11.0
|
|
27
|
+
Requires-Dist: tqdm>=4.67.3
|
|
28
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
29
|
+
Requires-Dist: arm-pyart>=2.2.0
|
|
30
|
+
Requires-Dist: click>=8.3.1
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
<img src="https://github.com/edrewitz/WxData/blob/main/icons/wxdata_logo.png.png?raw=true" width="400" height="400" alt="Alt text" />
|
|
34
|
+
|
|
35
|
+
***(C) Eric J. Drewitz 2025-2026***
|
|
36
|
+
|
|
37
|
+
[](https://anaconda.org/conda-forge/wxdata) [](https://anaconda.org/conda-forge/wxdata) 
|
|
38
|
+
|
|
39
|
+
[](https://anaconda.org/conda-forge/wxdata)
|
|
40
|
+
[](https://anaconda.org/conda-forge/wxdata) [](https://anaconda.org/conda-forge/wxdata)
|
|
41
|
+
|
|
42
|
+
[](https://doi.org/10.5281/zenodo.17727621)
|
|
43
|
+
|
|
44
|
+
**Anaconda Downloads**
|
|
45
|
+
|
|
46
|
+
[](https://anaconda.org/conda-forge/wxdata)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
**PIP Downloads**
|
|
50
|
+
|
|
51
|
+
[](https://pepy.tech/projects/wxdata)
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
**WxData User Guide**
|
|
55
|
+
|
|
56
|
+
1) [What Is WxData?](https://edrewitz.github.io/WxData/#what-is-wxdata)
|
|
57
|
+
|
|
58
|
+
2) [Installation Instructions](https://edrewitz.github.io/WxData/#installation-instructions)
|
|
59
|
+
|
|
60
|
+
3) [WxData Documentation](https://edrewitz.github.io/WxData/#wxdata-documentation)
|
|
61
|
+
|
|
62
|
+
1. [Real-Time Data Clients](https://edrewitz.github.io/WxData/#real-time-data-clients)
|
|
63
|
+
|
|
64
|
+
2. [Archived Data Clients](https://edrewitz.github.io/WxData/#archived-data-clients)
|
|
65
|
+
|
|
66
|
+
3. [Command Line Interface & Shell Scripting](https://edrewitz.github.io/WxData/#command-line-interface--shell-scripting)
|
|
67
|
+
|
|
68
|
+
4. [Raw Data Clients](https://edrewitz.github.io/WxData/#raw-data-clients)
|
|
69
|
+
|
|
70
|
+
5. [Post-Processors](https://edrewitz.github.io/WxData/#post-processors)
|
|
71
|
+
|
|
72
|
+
6. [Data Querying Tools](https://edrewitz.github.io/WxData/#data-querying-tools)
|
|
73
|
+
|
|
74
|
+
7. [Data Transformation & Gap Filling Tools](https://edrewitz.github.io/WxData/#data-transformation--gap-filling-tools)
|
|
75
|
+
|
|
76
|
+
8. [Automated Python Workflow Tools](https://edrewitz.github.io/WxData/#automated-python-workflow-tools)
|
|
77
|
+
|
|
78
|
+
9. [Open-Meteo API](https://edrewitz.github.io/WxData/#open-meteo-api)
|
|
79
|
+
|
|
80
|
+
4) [WxData Tutorials](https://edrewitz.github.io/WxData/#wxdata-tutorials)
|
|
81
|
+
|
|
82
|
+
5) [Server List](https://edrewitz.github.io/WxData/#server-list)
|
|
83
|
+
|
|
84
|
+
6) [Citations](https://edrewitz.github.io/WxData/#citations)
|
|
85
|
+
|
|
86
|
+
7) [Data Sources](https://edrewitz.github.io/WxData/#data-sources)
|
|
87
|
+
|
|
88
|
+
**About WxData**
|
|
89
|
+
|
|
90
|
+
WxData is a Python package that has many clients for retrieving and processing various types of meteorological datasets (both real-time and archived) with a focus on automation.
|
|
91
|
+
These datasets include 20+ Weather Forecast Models, Observational Data, Radar Data, Fuels Data (Fire Weather), Observed Upper-Air Sounding Data, Real-Time Mesoscale Analysis, Gridded NOAA National Weather Service Forecasts and Gridded NOAA Storm Prediction Center Outlooks, NOAA Climate Prediction Center Outlooks, as well as interfaces with the Open-Meteo and AirNow APIs.
|
|
92
|
+
|
|
93
|
+
- WxData has a command-line interface so users can write shell scripts to retrieve weather data.
|
|
94
|
+
|
|
95
|
+
- WxData has support for server choice and rotation (if a server fails to respond) between the following:
|
|
96
|
+
|
|
97
|
+
- NCEP/NOMADS -> Amazon Web Services -> Google Cloud
|
|
98
|
+
|
|
99
|
+
- ECMWF Open-Data -> Amazon Web Services -> Google Cloud
|
|
100
|
+
|
|
101
|
+
- WxData makes it easy for users to create automated ETL pipelines for their weather operations.
|
|
102
|
+
|
|
103
|
+
- These automated ETL pipelines can be quite advanced (i.e. multiple concurrent GRIB2 file downloads between the main [i.e. NCEP/NOMADS] and cloud servers [i.e. AWS & Google Cloud] to spread the traffic between multiple servers (and you can use a proxy server if you choose) -> extracting an `xarray.array` from the GRIB2 files -> cleaning the `xarray.array` and decoding the GRIB2 variable keys into plain-language -> transforming & exporting the cleaned and decoded `xarray.array` into a NETCDF (.nc) file.
|
|
104
|
+
|
|
105
|
+
- WxData supports GRIB -> NETCDF transformations.
|
|
106
|
+
|
|
107
|
+
- WxData decodes GRIB2 variable keys into plain-language and returns an `xarray.array` with the decoded variable keys.
|
|
108
|
+
|
|
109
|
+
- WxData has safeguards that prevent hitting server rate-limits.
|
|
110
|
+
|
|
111
|
+
- WxData has a medley of tools to query, fill gaps and transform data.
|
|
112
|
+
|
|
113
|
+
- WxData has additional tools to assist users with Python automated workflows.
|
|
114
|
+
|
|
115
|
+
- WxData allows users who work on VPNs and behind firewalls to access data through a user-specified proxy server.
|
|
116
|
+
|
|
117
|
+
**Citations**
|
|
118
|
+
|
|
119
|
+
**MetPy**: May, R. M., Goebbert, K. H., Thielen, J. E., Leeman, J. R., Camron, M. D., Bruick, Z.,
|
|
120
|
+
Bruning, E. C., Manser, R. P., Arms, S. C., and Marsh, P. T., 2022: MetPy: A
|
|
121
|
+
Meteorological Python Library for Data Analysis and Visualization. Bull. Amer. Meteor.
|
|
122
|
+
Soc., 103, E2273-E2284, https://doi.org/10.1175/BAMS-D-21-0125.1.
|
|
123
|
+
|
|
124
|
+
**xarray**: Hoyer, S., Hamman, J. (In revision). Xarray: N-D labeled arrays and datasets in Python. Journal of Open Research Software.
|
|
125
|
+
|
|
126
|
+
**cartopy**: Phil Elson, Elliott Sales de Andrade, Greg Lucas, Ryan May, Richard Hattersley, Ed Campbell, Andrew Dawson, Bill Little, Stephane Raynaud, scmc72, Alan D. Snow, Ruth Comer, Kevin Donkers, Byron Blay, Peter Killick, Nat Wilson, Patrick Peglar, lgolston, lbdreyer, … Chris Havlin. (2023). SciTools/cartopy: v0.22.0 (v0.22.0). Zenodo. https://doi.org/10.5281/zenodo.8216315
|
|
127
|
+
|
|
128
|
+
**NumPy**: Harris, C.R., Millman, K.J., van der Walt, S.J. et al. Array programming with NumPy. Nature 585, 357–362 (2020). DOI: 10.1038/s41586-020-2649-2. (Publisher link).
|
|
129
|
+
|
|
130
|
+
**Pandas**: Pandas: McKinney, W., & others. (2010). Data structures for statistical computing in python. In Proceedings of the 9th Python in Science Conference (Vol. 445, pp. 51–56).
|
|
131
|
+
|
|
132
|
+
**dask**: Dask Development Team (2016). Dask: Library for dynamic task scheduling. URL http://dask.pydata.org
|
|
133
|
+
|
|
134
|
+
**cfgrib**: Author: ECMWF, Year: (2025), Title: cfgrib: A Python interface to map GRIB files to xarray, Source: https://github.com/ecmwf/cfgrib
|
|
135
|
+
|
|
136
|
+
**requests**: K. Reitz, "Requests: HTTP for Humans". Available: https://requests.readthedocs.io/.
|
|
137
|
+
|
|
138
|
+
**Beautiful Soup**: Richardson, L. (2025). Beautiful Soup (Version 4.14.3) [Computer software]. https://www.crummy.com/software/BeautifulSoup/
|
|
139
|
+
|
|
140
|
+
**shapeography**: Eric J. Drewitz. (2026). edrewitz/shapeography: shapeography 1.0 Released (shapeography1.0). Zenodo. https://doi.org/10.5281/zenodo.18676845
|
|
141
|
+
|
|
142
|
+
**geopandas**: Kelsey Jordahl, Joris Van den Bossche, Martin Fleischmann, Jacob Wasserman, James McBride, Jeffrey Gerard, … François Leblanc. (2020, July 15). geopandas/geopandas: v0.8.1 (Version v0.8.1). Zenodo. http://doi.org/10.5281/zenodo.3946761
|
|
143
|
+
|
|
144
|
+
**tqdm**: da Costa-Luis, (2019). tqdm: A Fast, Extensible Progress Meter for Python and CLI. Journal of Open Source Software, 4(37), 1277, https://doi.org/10.21105/joss.01277
|
|
145
|
+
|
|
146
|
+
**ecmwf-opendata**: European Centre for Medium-Range Weather Forecasts (2026). ecmwf-opendata[Computer software]. GitHub. https://github.com/ecmwf/ecmwf-opendata
|
|
147
|
+
|
|
148
|
+
**openpyxl**: Gazoni, E., & Clark, C. (2024). openpyxl: A Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files (Version 3.1.5) [Computer software]. https://openpyxl.readthedocs.io/
|
|
149
|
+
|
|
150
|
+
**pyart**: Helmus, J.J. & Collis, S.M., (2016). The Python ARM Radar Toolkit (Py-ART), a Library for Working with Weather Radar Data in the Python Programming Language. Journal of Open Research Software. 4(1), p.e25. DOI: 10.5334/jors.119.
|
|
151
|
+
|
|
152
|
+
----------------------------------------------------------
|
|
153
|
+
|
|
154
|
+
**Data Sources**
|
|
155
|
+
|
|
156
|
+
1) [National Oceanic and Atmospheric Administration/National Center for Environmental Prediction](https://nomads.ncep.noaa.gov/)
|
|
157
|
+
|
|
158
|
+
2) [European Centre for Medium-Range Weather Forecasts](https://data.ecmwf.int/forecasts/)
|
|
159
|
+
|
|
160
|
+
3) [University of Wyoming](http://www.weather.uwyo.edu/upperair/sounding.shtml)
|
|
161
|
+
|
|
162
|
+
4) [National Oceanic and Atmospheric Administration/National Weather Service](https://tgftp.nws.noaa.gov/)
|
|
163
|
+
|
|
164
|
+
5) [National Oceanic and Atmospheric Administration/Aviation Weather Center](https://aviationweather.gov/)
|
|
165
|
+
|
|
166
|
+
6) [National Oceanic and Atmospheric Administration/Climate Prediction Center](https://www.cpc.ncep.noaa.gov/products/GIS/GIS_DATA/us_tempprcpfcst/index.php)
|
|
167
|
+
|
|
168
|
+
7) [Applied Climate Information System (ACIS)](https://www.rcc-acis.org/docs_webservices.html)
|
|
169
|
+
|
|
170
|
+
8) [USDA Fire Environment Mapping System](https://fems.fs2c.usda.gov/download)
|
|
171
|
+
|
|
172
|
+
9) [Open-Meteo API](https://open-meteo.com/)
|
|
173
|
+
|
|
174
|
+
10) [Air Now API](https://docs.airnowapi.org/webservices)
|
|
175
|
+
|
|
176
|
+
11) [Canadian Meteorological Centre](https://dd.weather.gc.ca/)
|
|
177
|
+
|
|
178
|
+
12) [Amazon Web Services](https://aws.amazon.com/)
|
|
179
|
+
|
|
180
|
+
13) [Google Cloud](https://cloud.google.com/)
|
wxdata-3.0/README.md
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<img src="https://github.com/edrewitz/WxData/blob/main/icons/wxdata_logo.png.png?raw=true" width="400" height="400" alt="Alt text" />
|
|
2
|
+
|
|
3
|
+
***(C) Eric J. Drewitz 2025-2026***
|
|
4
|
+
|
|
5
|
+
[](https://anaconda.org/conda-forge/wxdata) [](https://anaconda.org/conda-forge/wxdata) 
|
|
6
|
+
|
|
7
|
+
[](https://anaconda.org/conda-forge/wxdata)
|
|
8
|
+
[](https://anaconda.org/conda-forge/wxdata) [](https://anaconda.org/conda-forge/wxdata)
|
|
9
|
+
|
|
10
|
+
[](https://doi.org/10.5281/zenodo.17727621)
|
|
11
|
+
|
|
12
|
+
**Anaconda Downloads**
|
|
13
|
+
|
|
14
|
+
[](https://anaconda.org/conda-forge/wxdata)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
**PIP Downloads**
|
|
18
|
+
|
|
19
|
+
[](https://pepy.tech/projects/wxdata)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
**WxData User Guide**
|
|
23
|
+
|
|
24
|
+
1) [What Is WxData?](https://edrewitz.github.io/WxData/#what-is-wxdata)
|
|
25
|
+
|
|
26
|
+
2) [Installation Instructions](https://edrewitz.github.io/WxData/#installation-instructions)
|
|
27
|
+
|
|
28
|
+
3) [WxData Documentation](https://edrewitz.github.io/WxData/#wxdata-documentation)
|
|
29
|
+
|
|
30
|
+
1. [Real-Time Data Clients](https://edrewitz.github.io/WxData/#real-time-data-clients)
|
|
31
|
+
|
|
32
|
+
2. [Archived Data Clients](https://edrewitz.github.io/WxData/#archived-data-clients)
|
|
33
|
+
|
|
34
|
+
3. [Command Line Interface & Shell Scripting](https://edrewitz.github.io/WxData/#command-line-interface--shell-scripting)
|
|
35
|
+
|
|
36
|
+
4. [Raw Data Clients](https://edrewitz.github.io/WxData/#raw-data-clients)
|
|
37
|
+
|
|
38
|
+
5. [Post-Processors](https://edrewitz.github.io/WxData/#post-processors)
|
|
39
|
+
|
|
40
|
+
6. [Data Querying Tools](https://edrewitz.github.io/WxData/#data-querying-tools)
|
|
41
|
+
|
|
42
|
+
7. [Data Transformation & Gap Filling Tools](https://edrewitz.github.io/WxData/#data-transformation--gap-filling-tools)
|
|
43
|
+
|
|
44
|
+
8. [Automated Python Workflow Tools](https://edrewitz.github.io/WxData/#automated-python-workflow-tools)
|
|
45
|
+
|
|
46
|
+
9. [Open-Meteo API](https://edrewitz.github.io/WxData/#open-meteo-api)
|
|
47
|
+
|
|
48
|
+
4) [WxData Tutorials](https://edrewitz.github.io/WxData/#wxdata-tutorials)
|
|
49
|
+
|
|
50
|
+
5) [Server List](https://edrewitz.github.io/WxData/#server-list)
|
|
51
|
+
|
|
52
|
+
6) [Citations](https://edrewitz.github.io/WxData/#citations)
|
|
53
|
+
|
|
54
|
+
7) [Data Sources](https://edrewitz.github.io/WxData/#data-sources)
|
|
55
|
+
|
|
56
|
+
**About WxData**
|
|
57
|
+
|
|
58
|
+
WxData is a Python package that has many clients for retrieving and processing various types of meteorological datasets (both real-time and archived) with a focus on automation.
|
|
59
|
+
These datasets include 20+ Weather Forecast Models, Observational Data, Radar Data, Fuels Data (Fire Weather), Observed Upper-Air Sounding Data, Real-Time Mesoscale Analysis, Gridded NOAA National Weather Service Forecasts and Gridded NOAA Storm Prediction Center Outlooks, NOAA Climate Prediction Center Outlooks, as well as interfaces with the Open-Meteo and AirNow APIs.
|
|
60
|
+
|
|
61
|
+
- WxData has a command-line interface so users can write shell scripts to retrieve weather data.
|
|
62
|
+
|
|
63
|
+
- WxData has support for server choice and rotation (if a server fails to respond) between the following:
|
|
64
|
+
|
|
65
|
+
- NCEP/NOMADS -> Amazon Web Services -> Google Cloud
|
|
66
|
+
|
|
67
|
+
- ECMWF Open-Data -> Amazon Web Services -> Google Cloud
|
|
68
|
+
|
|
69
|
+
- WxData makes it easy for users to create automated ETL pipelines for their weather operations.
|
|
70
|
+
|
|
71
|
+
- These automated ETL pipelines can be quite advanced (i.e. multiple concurrent GRIB2 file downloads between the main [i.e. NCEP/NOMADS] and cloud servers [i.e. AWS & Google Cloud] to spread the traffic between multiple servers (and you can use a proxy server if you choose) -> extracting an `xarray.array` from the GRIB2 files -> cleaning the `xarray.array` and decoding the GRIB2 variable keys into plain-language -> transforming & exporting the cleaned and decoded `xarray.array` into a NETCDF (.nc) file.
|
|
72
|
+
|
|
73
|
+
- WxData supports GRIB -> NETCDF transformations.
|
|
74
|
+
|
|
75
|
+
- WxData decodes GRIB2 variable keys into plain-language and returns an `xarray.array` with the decoded variable keys.
|
|
76
|
+
|
|
77
|
+
- WxData has safeguards that prevent hitting server rate-limits.
|
|
78
|
+
|
|
79
|
+
- WxData has a medley of tools to query, fill gaps and transform data.
|
|
80
|
+
|
|
81
|
+
- WxData has additional tools to assist users with Python automated workflows.
|
|
82
|
+
|
|
83
|
+
- WxData allows users who work on VPNs and behind firewalls to access data through a user-specified proxy server.
|
|
84
|
+
|
|
85
|
+
**Citations**
|
|
86
|
+
|
|
87
|
+
**MetPy**: May, R. M., Goebbert, K. H., Thielen, J. E., Leeman, J. R., Camron, M. D., Bruick, Z.,
|
|
88
|
+
Bruning, E. C., Manser, R. P., Arms, S. C., and Marsh, P. T., 2022: MetPy: A
|
|
89
|
+
Meteorological Python Library for Data Analysis and Visualization. Bull. Amer. Meteor.
|
|
90
|
+
Soc., 103, E2273-E2284, https://doi.org/10.1175/BAMS-D-21-0125.1.
|
|
91
|
+
|
|
92
|
+
**xarray**: Hoyer, S., Hamman, J. (In revision). Xarray: N-D labeled arrays and datasets in Python. Journal of Open Research Software.
|
|
93
|
+
|
|
94
|
+
**cartopy**: Phil Elson, Elliott Sales de Andrade, Greg Lucas, Ryan May, Richard Hattersley, Ed Campbell, Andrew Dawson, Bill Little, Stephane Raynaud, scmc72, Alan D. Snow, Ruth Comer, Kevin Donkers, Byron Blay, Peter Killick, Nat Wilson, Patrick Peglar, lgolston, lbdreyer, … Chris Havlin. (2023). SciTools/cartopy: v0.22.0 (v0.22.0). Zenodo. https://doi.org/10.5281/zenodo.8216315
|
|
95
|
+
|
|
96
|
+
**NumPy**: Harris, C.R., Millman, K.J., van der Walt, S.J. et al. Array programming with NumPy. Nature 585, 357–362 (2020). DOI: 10.1038/s41586-020-2649-2. (Publisher link).
|
|
97
|
+
|
|
98
|
+
**Pandas**: Pandas: McKinney, W., & others. (2010). Data structures for statistical computing in python. In Proceedings of the 9th Python in Science Conference (Vol. 445, pp. 51–56).
|
|
99
|
+
|
|
100
|
+
**dask**: Dask Development Team (2016). Dask: Library for dynamic task scheduling. URL http://dask.pydata.org
|
|
101
|
+
|
|
102
|
+
**cfgrib**: Author: ECMWF, Year: (2025), Title: cfgrib: A Python interface to map GRIB files to xarray, Source: https://github.com/ecmwf/cfgrib
|
|
103
|
+
|
|
104
|
+
**requests**: K. Reitz, "Requests: HTTP for Humans". Available: https://requests.readthedocs.io/.
|
|
105
|
+
|
|
106
|
+
**Beautiful Soup**: Richardson, L. (2025). Beautiful Soup (Version 4.14.3) [Computer software]. https://www.crummy.com/software/BeautifulSoup/
|
|
107
|
+
|
|
108
|
+
**shapeography**: Eric J. Drewitz. (2026). edrewitz/shapeography: shapeography 1.0 Released (shapeography1.0). Zenodo. https://doi.org/10.5281/zenodo.18676845
|
|
109
|
+
|
|
110
|
+
**geopandas**: Kelsey Jordahl, Joris Van den Bossche, Martin Fleischmann, Jacob Wasserman, James McBride, Jeffrey Gerard, … François Leblanc. (2020, July 15). geopandas/geopandas: v0.8.1 (Version v0.8.1). Zenodo. http://doi.org/10.5281/zenodo.3946761
|
|
111
|
+
|
|
112
|
+
**tqdm**: da Costa-Luis, (2019). tqdm: A Fast, Extensible Progress Meter for Python and CLI. Journal of Open Source Software, 4(37), 1277, https://doi.org/10.21105/joss.01277
|
|
113
|
+
|
|
114
|
+
**ecmwf-opendata**: European Centre for Medium-Range Weather Forecasts (2026). ecmwf-opendata[Computer software]. GitHub. https://github.com/ecmwf/ecmwf-opendata
|
|
115
|
+
|
|
116
|
+
**openpyxl**: Gazoni, E., & Clark, C. (2024). openpyxl: A Python library to read/write Excel 2010 xlsx/xlsm/xltx/xltm files (Version 3.1.5) [Computer software]. https://openpyxl.readthedocs.io/
|
|
117
|
+
|
|
118
|
+
**pyart**: Helmus, J.J. & Collis, S.M., (2016). The Python ARM Radar Toolkit (Py-ART), a Library for Working with Weather Radar Data in the Python Programming Language. Journal of Open Research Software. 4(1), p.e25. DOI: 10.5334/jors.119.
|
|
119
|
+
|
|
120
|
+
----------------------------------------------------------
|
|
121
|
+
|
|
122
|
+
**Data Sources**
|
|
123
|
+
|
|
124
|
+
1) [National Oceanic and Atmospheric Administration/National Center for Environmental Prediction](https://nomads.ncep.noaa.gov/)
|
|
125
|
+
|
|
126
|
+
2) [European Centre for Medium-Range Weather Forecasts](https://data.ecmwf.int/forecasts/)
|
|
127
|
+
|
|
128
|
+
3) [University of Wyoming](http://www.weather.uwyo.edu/upperair/sounding.shtml)
|
|
129
|
+
|
|
130
|
+
4) [National Oceanic and Atmospheric Administration/National Weather Service](https://tgftp.nws.noaa.gov/)
|
|
131
|
+
|
|
132
|
+
5) [National Oceanic and Atmospheric Administration/Aviation Weather Center](https://aviationweather.gov/)
|
|
133
|
+
|
|
134
|
+
6) [National Oceanic and Atmospheric Administration/Climate Prediction Center](https://www.cpc.ncep.noaa.gov/products/GIS/GIS_DATA/us_tempprcpfcst/index.php)
|
|
135
|
+
|
|
136
|
+
7) [Applied Climate Information System (ACIS)](https://www.rcc-acis.org/docs_webservices.html)
|
|
137
|
+
|
|
138
|
+
8) [USDA Fire Environment Mapping System](https://fems.fs2c.usda.gov/download)
|
|
139
|
+
|
|
140
|
+
9) [Open-Meteo API](https://open-meteo.com/)
|
|
141
|
+
|
|
142
|
+
10) [Air Now API](https://docs.airnowapi.org/webservices)
|
|
143
|
+
|
|
144
|
+
11) [Canadian Meteorological Centre](https://dd.weather.gc.ca/)
|
|
145
|
+
|
|
146
|
+
12) [Amazon Web Services](https://aws.amazon.com/)
|
|
147
|
+
|
|
148
|
+
13) [Google Cloud](https://cloud.google.com/)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "wxdata"
|
|
3
|
-
version = "
|
|
3
|
+
version = "3.0"
|
|
4
4
|
description = "A Python package of end-to-end weather data clients & raw data clients with VPN/Proxy Server 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
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -29,12 +29,31 @@ dependencies = [
|
|
|
29
29
|
"cfgrib>=0.9.15.1",
|
|
30
30
|
"dask>=2025.11.0",
|
|
31
31
|
"tqdm>=4.67.3",
|
|
32
|
-
"ecmwf-opendata>=0.3.26",
|
|
33
32
|
"openpyxl>=3.1.5",
|
|
34
33
|
"arm-pyart>=2.2.0",
|
|
34
|
+
"click>=8.3.1",
|
|
35
35
|
|
|
36
36
|
]
|
|
37
37
|
|
|
38
|
+
[project.scripts]
|
|
39
|
+
wxdata-rtma = "wxdata.rtma_cli:main"
|
|
40
|
+
wxdata-cfs = "wxdata.cfs_cli:main"
|
|
41
|
+
wxdata-gfs = "wxdata.gfs_cli:main"
|
|
42
|
+
wxdata-gefs = "wxdata.gefs_cli:main"
|
|
43
|
+
wxdata-aigefs = "wxdata.aigefs_cli:main"
|
|
44
|
+
wxdata-aigfs = "wxdata.aigfs_cli:main"
|
|
45
|
+
wxdata-hgefs = "wxdata.hgefs_cli:main"
|
|
46
|
+
wxdata-ecmwf = "wxdata.ecmwf_cli:main"
|
|
47
|
+
wxdata-cansips = "wxdata.cansips_cli:main"
|
|
48
|
+
wxdata-gdps = "wxdata.gdps_cli:main"
|
|
49
|
+
wxdata-rdps = "wxdata.rdps_cli:main"
|
|
50
|
+
wxdata-hrdps = "wxdata.hrdps_cli:main"
|
|
51
|
+
wxdata-geps = "wxdata.geps_cli:main"
|
|
52
|
+
wxdata-ndfd = "wxdata.ndfd_cli:main"
|
|
53
|
+
wxdata-soundings = "wxdata.soundings_cli:main"
|
|
54
|
+
wxdata-metars = "wxdata.metars_cli:main"
|
|
55
|
+
wxdata-nexrad2 = "wxdata.nexrad2_cli:main"
|
|
56
|
+
|
|
38
57
|
[build-system]
|
|
39
58
|
requires = ["setuptools>=64.0.0", "wheel"]
|
|
40
59
|
build-backend = "setuptools.build_meta"
|
|
@@ -43,5 +62,5 @@ build-backend = "setuptools.build_meta"
|
|
|
43
62
|
where = ["src"] # Look for packages in the src directory
|
|
44
63
|
|
|
45
64
|
[project.urls]
|
|
46
|
-
Documentation = "https://github.
|
|
65
|
+
Documentation = "https://edrewitz.github.io/WxData/"
|
|
47
66
|
Repository = "https://github.com/edrewitz/wxdata/tree/main"
|
|
@@ -40,13 +40,73 @@ These functions do the following:
|
|
|
40
40
|
"""
|
|
41
41
|
|
|
42
42
|
"""
|
|
43
|
-
********************************************************************************
|
|
44
43
|
|
|
44
|
+
***********************************************************************************************
|
|
45
45
|
|
|
46
|
-
************ This section hosts the Model Data Clients. ***********************
|
|
47
46
|
|
|
47
|
+
************ This section hosts the Archived Model Data Clients ******************************
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
***********************************************************************************************
|
|
51
|
+
"""
|
|
52
|
+
|
|
53
|
+
# Global Forecast System (GFS)
|
|
54
|
+
# - GFS 0.25x0.25 Degree Primary Parameters
|
|
55
|
+
# - GFS 0.25x0.25 Degree Secondary Parameters
|
|
56
|
+
# - GFS 0.5x0.5 Degree
|
|
57
|
+
from wxdata.archived_data.model_data.noaa.gfs.gfs import(
|
|
58
|
+
get_archived_gfs_0p25,
|
|
59
|
+
get_archived_gfs_0p25_secondary_parameters,
|
|
60
|
+
get_archived_gfs_0p50
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
# Global Ensemble Forecast System (GEFS)
|
|
64
|
+
# - GEFS 0.5x0.5 Degree Primary Parameters
|
|
65
|
+
# - GEFS 0.5x0.5 Degree Secondary Parameters
|
|
66
|
+
# - GEFS 0.25x0.25 Degree
|
|
67
|
+
from wxdata.archived_data.model_data.noaa.gefs.gefs import(
|
|
68
|
+
get_archived_gefs_0p50,
|
|
69
|
+
get_archived_gefs_0p50_secondary_parameters,
|
|
70
|
+
get_archived_gefs_0p25
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Climate Forecast System (CFS)
|
|
74
|
+
# - CFS Flux Products
|
|
75
|
+
# - CFS Pressure Products
|
|
76
|
+
from wxdata.archived_data.model_data.noaa.cfs.cfs import(
|
|
77
|
+
get_archived_cfs_flux,
|
|
78
|
+
get_archived_cfs_pressure
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# Real-Time Mesoscale Analysis (RTMA)
|
|
82
|
+
from wxdata.archived_data.model_data.noaa.rtma.rtma import get_archived_rtma
|
|
48
83
|
|
|
49
|
-
|
|
84
|
+
"""
|
|
85
|
+
|
|
86
|
+
***********************************************************************************************
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
************ This section hosts the Archived Radar Data Clients ******************************
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
***********************************************************************************************
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
from wxdata.archived_data.radar_data.nexrad2 import(
|
|
97
|
+
download_archived_single_station_nexrad2_radar_data,
|
|
98
|
+
download_archived_multi_station_nexrad2_radar_data
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
"""
|
|
102
|
+
|
|
103
|
+
***********************************************************************************************
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
************ This section hosts the Model Data Clients (Latest Data). ************************
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
***********************************************************************************************
|
|
50
110
|
"""
|
|
51
111
|
|
|
52
112
|
##############
|
|
@@ -107,19 +167,31 @@ from wxdata.model_data.noaa.rtma.rtma import(
|
|
|
107
167
|
##############################################################
|
|
108
168
|
# European Centre for Medium-Range Weather Forecasts (ECMWF) #
|
|
109
169
|
##############################################################
|
|
110
|
-
# - ECMWF IFS
|
|
111
|
-
# - ECMWF IFS Ensemble
|
|
112
|
-
# - ECMWF AIFS
|
|
113
|
-
# - ECMWF AIFS Ensemble
|
|
114
|
-
# - ECMWF IFS Wave
|
|
115
|
-
# - ECMWF IFS Wave Ensemble
|
|
170
|
+
# - ECMWF IFS (0.25x0.25 Degree)
|
|
171
|
+
# - ECMWF IFS Ensemble (0.25x0.25 Degree)
|
|
172
|
+
# - ECMWF AIFS (0.25x0.25 Degree)
|
|
173
|
+
# - ECMWF AIFS Ensemble (0.25x0.25 Degree)
|
|
174
|
+
# - ECMWF IFS Wave (0.25x0.25 Degree)
|
|
175
|
+
# - ECMWF IFS Wave Ensemble (0.25x0.25 Degree)
|
|
176
|
+
# - ECMWF AIFS Wave (0.25x0.25 Degree)
|
|
177
|
+
# - ECMWF AIFS Wave Ensemble (0.25x0.25 Degree)
|
|
178
|
+
# - ECMWF High Resolution IFS (0.10x0.10 Degree)
|
|
179
|
+
# - ECMWF High Resolution IFS Ensemble (0.10x0.10 Degree)
|
|
180
|
+
# - ECMWF High Resolution IFS Wave (0.10x0.10 Degree)
|
|
181
|
+
# - ECMWF High Resolution IFS Wave Ensemble (0.10x0.10 Degree)
|
|
116
182
|
from wxdata.model_data.ecmwf.ecmwf import(
|
|
117
183
|
ecmwf_ifs,
|
|
118
184
|
ecmwf_ifs_ens,
|
|
119
185
|
ecmwf_aifs,
|
|
120
186
|
ecmwf_aifs_ens,
|
|
121
187
|
ecmwf_ifs_wave,
|
|
122
|
-
ecmwf_ifs_wave_ens
|
|
188
|
+
ecmwf_ifs_wave_ens,
|
|
189
|
+
ecmwf_aifs_wave,
|
|
190
|
+
ecmwf_aifs_wave_ens,
|
|
191
|
+
ecmwf_high_res_ifs,
|
|
192
|
+
ecmwf_high_res_ifs_ens,
|
|
193
|
+
ecmwf_high_res_ifs_wave,
|
|
194
|
+
ecmwf_high_res_ifs_wave_ens
|
|
123
195
|
)
|
|
124
196
|
|
|
125
197
|
##################################
|
|
@@ -307,6 +379,9 @@ from wxdata.utils.tools import(
|
|
|
307
379
|
# This function executes a list of Python scripts in the order the user lists them
|
|
308
380
|
from wxdata.utils.scripts import run_external_scripts
|
|
309
381
|
|
|
382
|
+
# This function transforms an xarray.array in GRIB2 format to netCDF4 format and writes a netCDF (.nc) file to a user-specified file path.
|
|
383
|
+
from wxdata.utils.transforms import grib_to_netcdf
|
|
384
|
+
|
|
310
385
|
"""
|
|
311
386
|
***************************************************************************
|
|
312
387
|
|
|
@@ -322,7 +397,6 @@ from wxdata.utils.scripts import run_external_scripts
|
|
|
322
397
|
# - get_gridded_data()
|
|
323
398
|
# - get_csv_data()
|
|
324
399
|
# - get_excel_data()
|
|
325
|
-
# - get_xmacis_data()
|
|
326
400
|
# - get_aws_open_data()
|
|
327
401
|
# - byte_range_request()
|
|
328
402
|
import wxdata.client.client as client
|