To classify events into convective or non-convective storms based on analysis of evolution of wind speed, temperature, station pressure and other meteorlogical variables.
This code uses sktime
1 to perform a supervised classification of the time series of weather variables. A training event set is developed from visual classification of wind gust events over 90 km/h at high-quality stations. The full event set comprises all storm events with a maximum wind gust in excess of 60 km/h. The approach is based on previous concepts from Spassiani and Mason (2021)2 and Cook (2023)3.
Quality flags are used to eliminate spurious gusts, but there still remain some anomalous events (instrument spikes).
Data from this analysis is used to create a geodatabase for publication and use in GIS applications.
This work has been supported by Queensland Fire and Emergency Services.
1-minute weather observations from all available weather stations across Australia.
Variables required:
- gust wind speed
- wind speed
- wind direction
- temperature
- dew point
- station pressure
- rainfall
- quality flags for all variables
Original source data can be requested from the Bureau of Meteorology, Climate Data Services team,
- python 3.9
- jupyter
- numpy
- matplotlib
- pandas
- pytz
- lxml
- prov
- seaborn
- sktime-all-extras
- gitpython
- fiona
- geopandas
- cartopy
- scikit-learn
- metpy
- pycodestyle
- Build the conda environment
- Install additional code from https://github.com/GeoscienceAustralia/nhi-pylib
- Add the path to the additional code to the
PYTHONPATH
environment variable
extractStationDetails.py
- extract station details from the raw data. Creates a geojson file of station locations used in subsequent scriptsextractStationData.py
- extract all events from the raw data. This should be executed twice, initially with a threshold of 90 km/h and again with a threshold of 60 km/h. The outputs for each execution need to be stored in different folders. Users will need to check the path to the original source files (OriginDir
in the configuration files.)selectHQStations.ipynb
- use this to select high-quality stations that will form the training dataset for the ML classification processclassifyGustEvents.py
- classifies all daily maximum wind gusts using El Rafei et al. (2023)4ClassifyEvents.ipynb
- interactive notebook to visually classify storms with maximum gust > 90 km/h at high-quality stationsclassifyTimeSeries.py
- use ML approach insktime
to classify all storm events (> 60 km/h) 5convertStormCounts.py
- convert classified storms to counts of storm type at each stationjoinStormRatesToStationDetails.py
- Join storm rate data to station details and store output in GeoJSON filejoinStormClassToMaxDailyData.py
- Join storm classification data to daily maximum gust datajoinDailyWeatherObservations.py
- Join the daily weather observations to the storm data
AnalyseClassifiedStorms.ipynb
- interactive notebook to compare this classification against the El Rafei et al.4 gust classificationanalyseStormEventTypes.ipynb
- interactive notebook to examine the full classified storm event set, e.g. median and 99th percentile wind gusts for each storm type, seasonal distribution of storm type, comparison against other metrics (e.g. gust ratio, emergence). Still a work in progress.
Link to eCat record for the data
Add a licence
Footnotes
-
Spassiani, A. C., and M. S. Mason, 2021: Application of Self-organizing Maps to classify the meteorological origin of wind gusts in Australia. Journal of Wind Engineering and Industrial Aerodynamics, 210, 104529, https://doi.org/10.1016/j.jweia.2021.104529. ↩
-
Cook, N. J., 2023: Automated classification of gust events in the contiguous USA. Journal of Wind Engineering and Industrial Aerodynamics, 234, 105330, https://doi.org/10.1016/j.jweia.2023.105330. ↩
-
El Rafei, M., S. Sherwood, J. Evans, and A. Dowdy, 2023: Analysis and characterisation of extreme wind gust hazards in New South Wales, Australia. Nat Hazards, 117, 875–895, https://doi.org/10.1007/s11069-023-05887-1. ↩ ↩2
-
Dempster, A., F. Petitjean, and G. I. Webb, 2020: ROCKET: exceptionally fast and accurate time series classification using random convolutional kernels. Data Min Knowl Disc, 34, 1454–1495, https://doi.org/10.1007/s10618-020-00701-z. ↩