Unified client-facing downloader for multi-source hazard and environmental datasets.
The repository now has two compatible entry points:
- The original script-backed downloader for operational hazard products such as FIRMS fire detections, WFIGS perimeters, GIBS imagery, NDFD/HRRR weather, HMS smoke, LANDFIRE layers, and WRC housing density.
- A provider-catalog downloader for raw data sources used in foundation-model and general hazard-model workflows, including HRRR, FIRMS, LANDFIRE, AQS PM2.5, HMS smoke, IBTrACS, HURDAT2, USDM, WFIGS, MTBS, MERRA-2, WRC housing, and LandScan.
from downloader import DownloadRequest, download_data, list_datasetsrequest = DownloadRequest(
datasets=["satellite_fire_detections_viirs", "nasa_gibs", "current_perimeters"],
temporal_window=("2024-01-01", "2024-01-01"),
area_of_interest_bbox=(-125.0, 24.0, -66.0, 50.0),
output_root="./downloads_example",
extra_options={
"nasa_gibs": {"layers": "MODIS_Terra_CorrectedReflectance_TrueColor"},
"satellite_fire_detections_viirs": {"day_range": 1},
},
)
results = download_data(request)Use this path when you want raw provider files and manifests for model-building workflows:
from downloader import ProviderDownloadRequest, download_provider_data, list_provider_datasets
request = ProviderDownloadRequest(
datasets=["aqs_pm25", "hms_smoke", "ibtracs"],
output_root="./downloads_demo",
years=(2024, 2024),
dry_run=True,
max_files=2,
)
results = download_provider_data(request)List provider-catalog datasets:
python3 -m downloader.provider_cli --listDry-run a request:
python3 -m downloader.provider_cli \
--datasets aqs_pm25 hms_smoke ibtracs \
--output-root ./downloads_demo \
--start-year 2024 \
--end-year 2024 \
--dry-run \
--max-files 3See downloader/PROVIDER_DATASETS.md for provider-catalog usage and
downloader/FIREWX_FM_DATA_SOURCES.md for the FireWx-FM data-source coverage
matrix, credential notes, and the boundary between raw downloads and
model-ready dataloaders.
For custom HRRR date/hour/forecast-hour requests, use the direct HRRR public archive script:
python3 downloader/scripts/hrrr_downloader.py \
--start-date 2024-06-01 \
--end-date 2024-06-02 \
--hours 00,06,12,18 \
--forecast-hours 00 \
--output-root ./downloads_hrrr \
--include-idx \
--dry-runRemove --dry-run to download native NOAA HRRR files. For a small live smoke
test, use --idx-only --max-files 1 to download only one index sidecar.
For the current FireWx-FM checkpoint status, downloader role, and next
foundation-model retraining pipeline, see
docs/wildfire_fm_downloader_handoff_20260612.md.
-
datasets: list[str]Supported values:canopy_cover: LANDFIRE canopy cover rastercurrent_perimeters: current WFIGS fire perimeter snapshotgoes_geocolor: GOES GeoColor source imagery fileshistorical_fires: historical fire perimeter archiveshpwren_real_time_weather_stations: HPWREN station metadata and recent samplesnasa_gibs: NASA GIBS global imagery layersnohrsc_snow_analysis: NOHRSC daily snow analysis archivessatellite_fire_detections_goes: GOES fire detection filessatellite_fire_detections_modis: FIRMS MODIS fire detection CSVsatellite_fire_detections_viirs: FIRMS VIIRS fire detection CSVsmoke_analysis: HMS annual smoke polygon bundlespot_forecast: current and recent spot forecast productssurface_fuels: LANDFIRE surface fuels rastervegetation_type: LANDFIRE vegetation type rasterwatches_and_warnings: NDFD watches and warnings filesweather_forecast: NDFD and HRRR forecast fileswrc_housing_density: WRC housing density raster
-
temporal_window: tuple[str, str] | NoneFormat:("YYYY-MM-DD", "YYYY-MM-DD")
-
area_of_interest_bbox: tuple[float, float, float, float] | NoneFormat:(min_lon, min_lat, max_lon, max_lat)
-
output_root: strMeaning:- root directory where each dataset writes its own subfolder
-
extra_options: dict[str, dict]Meaning:- per-dataset script options
download_data(request) returns a list of structured records:
datasetstatusreturncodecommandoutput_dirapplied_temporal_windowapplied_aoi_bboxwarningsstdout_tailstderr_tail
downloader/- main package
downloader/scripts/- raw downloader scripts
example_downloader_client.py- minimal client example
example_provider_downloader_client.py- minimal provider-catalog downloader example
verify_downloader_readiness.py- batch verification entrypoint
pip install -r requirements.txtThis repository does not redistribute raw provider data. It downloads public files where provider terms allow, writes instruction manifests for credentialed or terms-limited sources, and expects users to keep raw data and credentials outside git.