Python tools for accessing and processing Australian SILO climate data.
Features:
- SILO API client for PatchedPoint (station) and DataDrill (gridded) datasets
- Download and work with SILO Cloud-Optimized GeoTIFF (COG) files with spatial subsetting
- Download and process SILO NetCDF files locally
- Command-line interface for quick data access
- Met.no API client for weather forecasts with SILO integration
# Install from GitHub using uv
uv pip install git+https://github.com/harryeslick/weather_tools.git
# Or run directly without installation
uvx --from git+https://github.com/harryeslick/weather_tools.git weather-tools --help# Set API key (your email address)
export SILO_API_KEY="your.email@example.com"
# Optional: Set custom SILO data directory (default: ~/DATA/silo_grids)
export SILO_DATA_DIR="/path/to/your/silo_data"
# Query station data
weather-tools silo patched-point --station 30043 \
--start-date 2023-01-01 --end-date 2023-01-31 \
--var rainfall --var max_temp --output weather.csv
# Search for stations
weather-tools silo search --name Brisbane --state QLD
# Search for stations by lat lon
weather-tools silo search --lat -27.47 --lon 153.03 --radius 20 --name Airport
# Download SILO NetCDF files
weather-tools local download --var daily --start-year 2020 --end-year 2023
# Extract local data for a location
weather-tools local extract --lat -27.5 --lon 153.0 \
--start-date 2020-01-01 --end-date 2020-12-31 \
--output brisbane.csv📖 Complete CLI Guide → - Comprehensive CLI documentation with detailed examples
from weather_tools.silo_api import SiloAPI
# Initialize API client
api = SiloAPI() # Uses SILO_API_KEY environment variable
# Get PatchedPoint data (weather station data) as DataFrame
df = api.get_patched_point(
station_code="30043",
start_date="20230101",
end_date="20230131",
variables=["rainfall", "max_temp", "min_temp"]
)
# Search for stations
stations = api.search_stations(name_fragment="Brisbane", state="QLD")
print(stations[['name', 'station_code', 'latitude', 'longitude']])📖 Complete Python API Guide → - Comprehensive Python API documentation with examples
SILO_API_KEY (required for API access)
- Your email address used as the API key for SILO API access
- Example:
export SILO_API_KEY="your.email@example.com"
SILO_DATA_DIR (optional)
- Custom location for SILO data files (NetCDF and GeoTIFF)
- Default:
~/DATA/silo_grids - Example:
export SILO_DATA_DIR="/custom/path/to/silo_data" - Affects:
- NetCDF files:
$SILO_DATA_DIR/{variable}/{year}.{variable}.nc - GeoTIFF files:
$SILO_DATA_DIR/geotiff/{variable}/{year}/{date}.{variable}.tif - Local extraction commands:
weather-tools local extract/info - Download commands:
weather-tools local downloadandweather-tools geotiff download
- NetCDF files:
SILO (Scientific Information for Land Owners) provides Australian climate data from 1889 onwards with two dataset types:
- PatchedPoint: Station-based observational data with infilled gaps (ideal for specific weather station locations)
- DataDrill: Gridded data at 0.05° × 0.05° resolution (~5km) covering all of Australia
Data is available via:
- API: Real-time queries (requires API key = email address)
- NetCDF Files: Bulk downloads from AWS S3 for offline processing
- GeoTIFF Files: Cloud-optimized format for efficient spatial subsetting
Common Variables:
- Rainfall (daily/monthly)
- Maximum/minimum temperature
- Evaporation (pan/synthetic)
- Solar radiation
- Vapour pressure
- Wind, humidity, pressure
Variable Names:
- CLI: Readable names (rainfall, max_temp, min_temp, evaporation, etc.)
- Python API (low-level): Single letter codes (R=rainfall, X=max_temp, N=min_temp, etc.)
- Local files: Full names (daily_rain, max_temp, min_temp, etc.)
See full documentation for complete variable list.
📚 Full Documentation - Complete guides, API reference, and examples
Quick Links:
- CLI Guide - Command-line interface documentation
- Python API Guide - Python library documentation
- SILO API Reference
- Examples & Tutorials
This project is licensed under the MIT License.
SILO climate data are provided under the Creative Commons Attribution 4.0 International (CC BY 4.0) license.
Data Provider: SILO is managed by the Climate Projections and Services team within Queensland Treasury, Queensland Government.
Data Sources: SILO datasets are constructed from observational data obtained from the Australian Bureau of Meteorology (BoM) and other suppliers.
Citation: Jeffrey, S.J., Carter, J.O., Moodie, K.B. and Beswick, A.R. (2001). Using spatial interpolation to construct a comprehensive archive of Australian climate data. Environmental Modelling & Software, 16(4), 309-330.
Website: https://www.longpaddock.qld.gov.au/silo/
Important Notes:
- SILO uses mathematical interpolation to construct spatial grids and infill gaps in time series
- Users should understand the implications and accuracy of using interpolated data
Weather forecast data from met.no are provided under dual licenses:
- Norwegian Licence for Open Government Data (NLOD) 2.0
- Creative Commons 4.0 BY International (CC BY 4.0)
Data Provider: The Norwegian Meteorological Institute (MET Norway)
Attribution: Weather forecast data is based on data from MET Norway.
API Documentation: https://api.met.no/weatherapi/locationforecast/2.0/documentation
Terms of Service: https://developer.yr.no/doc/TermsOfService/
Important Notes:
- Users must ensure they comply with the Met.no Terms of Service.
- Weather forecast data is retrieved in real-time from the met.no API
- Forecast data should be considered a supplement to SILO historical observations
This software package is not affiliated with or endorsed by the Queensland Government, Queensland Treasury, the Australian Bureau of Meteorology, or the Norwegian Meteorological Institute. It is an independent tool for accessing and processing publicly available climate data.
We acknowledge:
- The SILO team (Queensland Government) for providing freely accessible, high-quality historical climate data for Australia
- The Norwegian Meteorological Institute (MET Norway) for providing freely accessible global weather forecast data through their API