> For the complete documentation index, see [llms.txt](https://docs.omnata.com/omnata-product-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.omnata.com/omnata-product-documentation/omnata-sync-for-snowflake/apps/bom-weather-data.md).

# BOM Weather Data

## Overview

This dataset is built from Australian Bureau of Meteorology's (BOM) automated weather station historical datasets and current observations. Omnata combines, cleans and normalizes these datasets for consumption via Snowflake. Omnata maintains the a production ETL pipeline from BOM servers, has an uptime status page and automated outage recovery.&#x20;

## Dataset summary

Half-hourly (and sub-hourly) weather observations from 858 automated and manual weather stations across Australia and Antarctica, spanning October 1948 to present day. Updated continuously.

|                        |                                                           |
| ---------------------- | --------------------------------------------------------- |
| **Total Observations** | 251.5 million                                             |
| **Stations**           | 858 reporting stations (of 19,491 in reference catalogue) |
| **Time Span**          | October 1948 - present (77+ years)                        |
| **Typical Frequency**  | \~48 observations per station per day                     |
| **Geographic Scope**   | All Australian states/territories + Antarctic stations    |

{% hint style="info" %}
The reason the dataset only covers 858 of \~19k possible stations is that the majority of BOM stations are historical or single measurement. For example, only \~8000 stations are active today and \~6000 are volunteer run to measure only rainfall.
{% endhint %}

### Key Coverage Changes Over Time

1. **1948-1984:** Limited to 1-3 stations in NSW/VIC. Minimal rainfall data captured.
2. **1985-1999:** Network expanded rapidly from 10 to 351 stations. Rainfall recording became standard (\~86% complete).
3. **2000-2016:** Steady growth to \~560 stations. Observation frequency increased with automation.
4. **2017-present:** Network reached 620+ stations. A further expansion in 2025 added \~150 stations, bringing the total to 773.

### What's Included

**Observations** (38 columns): air temperature, apparent temperature, dewpoint, relative humidity, wind speed/direction/gust, atmospheric pressure (MSL and QNH), rainfall (hourly, 10-minute, cumulative since 9am), cloud cover/base/type, visibility, sea state, swell, and weather description.

**Station Reference** (11 columns): station number, WMO code, name, operating years, geographic coordinates (lat/lon as GEOGRAPHY), state, elevation, barometer height, and timezone.

**Join key:** `STATION_NUMBER`

### Coverage by State

```
Observations by State (millions)

NSW  |████████████████████████████████████████████████████████  56.4M
QLD  |█████████████████████████████████████████████▉            45.9M
VIC  |████████████████████████████████████████▎                 40.3M
WA   |███████████████████████████████████████▌                  39.5M
SA   |███████████████████████████▎                              27.3M
TAS  |████████████████████                                      20.0M
NT   |████████████████▌                                         16.5M
ANT  |██▌                                                        2.5M
```

<table data-search="false"><thead><tr><th>State</th><th>Stations</th><th>Oldest data begins</th><th data-hidden>Observations</th></tr></thead><tbody><tr><td>NSW</td><td>217</td><td>1948</td><td>56.4M</td></tr><tr><td>QLD</td><td>168</td><td>1985</td><td>45.9M</td></tr><tr><td>VIC</td><td>108</td><td>1970</td><td>40.3M</td></tr><tr><td>WA</td><td>147</td><td>1985</td><td>39.5M</td></tr><tr><td>SA</td><td>88</td><td>1985</td><td>27.3M</td></tr><tr><td>TAS</td><td>57</td><td>1984</td><td>20.0M</td></tr><tr><td>NT</td><td>63</td><td>1985</td><td>16.5M</td></tr><tr><td>ANT</td><td>10</td><td>1994</td><td>2.5M</td></tr></tbody></table>

### Metric Completeness

| Metric                 | Overall | Pre-1990 | 1990-2009 | 2010-present |
| ---------------------- | ------- | -------- | --------- | ------------ |
| Air temperature        | 94%     | 95%      | 95%       | 94%          |
| Humidity / Dewpoint    | 91%     | 95%      | 93%       | 89%          |
| Wind speed & direction | 96%     | 100%     | 99%       | 95%          |
| Atmospheric pressure   | 78%     | 91%      | 77%       | 79%          |
| Rainfall (cumulative)  | 88%     | 5%       | 86%       | 90%          |
| Rainfall (hourly)      | 88%     | 5%       | 86%       | 90%          |

Apparent temperature, gust, cloud oktas, visibility, and weather descriptions have low completeness (<10%) as they depend on manual observation or specific sensor configurations.

#### **Important notes for analysis:**

* Rainfall fields are unreliable before 1990 (only 5% populated)
* Pressure completeness dropped from \~91% to \~77% post-1990 as stations without barometers were added
* Sub-hourly data density varies by station; some report every 1-2 minutes, others at 30-minute intervals

### Station Network Growth

```
Active Stations Over Time

800 |                                                                    *
    |                                                                 *
700 |
    |
600 |                                          * * * * * * * * * *
    |                                     *  *
500 |                              * * * *
    |                          * *
400 |                      * *
    |                   *
300 |                *
    |            *
200 |         *
    |       *
100 |    *
    | *
  0 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-
    1985  1988  1991  1994  1997  2000  2003  2006  2009  2012  2015  2018  2021  2024
```

## Dataset Schema

### Core Observation Fields

| Field                  | Type      | Description                               | Units           |
| ---------------------- | --------- | ----------------------------------------- | --------------- |
| `station_id`           | String    | Unique BOM station identifier             | -               |
| `station_name`         | String    | Human-readable station name               | -               |
| `observation_time`     | Timestamp | Date and time of observation (local time) | ISO 8601        |
| `observation_time_utc` | Timestamp | Date and time of observation (UTC)        | ISO 8601        |
| `latitude`             | Float     | Station latitude                          | Decimal degrees |
| `longitude`            | Float     | Station longitude                         | Decimal degrees |
| `elevation`            | Integer   | Station elevation above sea level         | Meters          |

### Weather Measurements

| Field                    | Type    | Description                       | Units            |
| ------------------------ | ------- | --------------------------------- | ---------------- |
| `air_temperature`        | Float   | Air temperature                   | °C               |
| `apparent_temperature`   | Float   | Apparent temperature (feels like) | °C               |
| `dew_point`              | Float   | Dew point temperature             | °C               |
| `relative_humidity`      | Integer | Relative humidity                 | %                |
| `wind_direction`         | String  | Wind direction (compass point)    | Cardinal/Ordinal |
| `wind_direction_degrees` | Integer | Wind direction                    | Degrees (0-360)  |
| `wind_speed_kmh`         | Float   | Wind speed                        | km/h             |
| `wind_gust_kmh`          | Float   | Wind gust speed                   | km/h             |
| `pressure_msl`           | Float   | Mean sea level pressure           | hPa              |
| `pressure_qnh`           | Float   | QNH pressure                      | hPa              |
| `rainfall_since_9am`     | Float   | Rainfall since 9am local time     | mm               |
| `visibility`             | Integer | Visibility                        | km               |
| `cloud_cover`            | String  | Cloud cover description           | Text             |
| `weather_description`    | String  | Current weather conditions        | Text             |

### Data Quality Indicators

| Field               | Type      | Description                         |
| ------------------- | --------- | ----------------------------------- |
| `data_quality`      | String    | Quality assessment (Good/Fair/Poor) |
| `automatic_station` | Boolean   | Whether station is automated (AWS)  |
| `last_updated`      | Timestamp | When record was last updated        |

### Data Freshness

* **Update Frequency**: Daily
* **Granularity**: 30mins

{% hint style="info" %}
Lower latency data available [**get in touch**](https://omnata.com/contact-us) to request
{% endhint %}

### Usage Examples

#### Basic Query

```sql
-- Get latest observations for Sydney area stations
SELECT station_name, observation_time, air_temperature, 
       wind_speed_kmh, rainfall_since_9am
FROM OBSERVATIONS
WHERE station_name LIKE '%SYDNEY%'
  AND observation_time >= CURRENT_TIMESTAMP - INTERVAL '24 HOURS'
ORDER BY observation_time DESC;
```

#### Temperature Analysis

```sql
-- Find stations with extreme temperatures in last 24 hours
SELECT station_name, state, 
       MAX(air_temperature) as max_temp,
       MIN(air_temperature) as min_temp,
       AVG(air_temperature) as avg_temp
FROM OBSERVATIONS 
WHERE observation_time >= CURRENT_TIMESTAMP - INTERVAL '24 HOURS'
  AND air_temperature IS NOT NULL
GROUP BY station_name, state
HAVING MAX(air_temperature) > 35 OR MIN(air_temperature) < 5
ORDER BY max_temp DESC;
```

### Compliance and Attribution

This dataset is derived from the Australian Bureau of Meteorology's publicly available weather observations. Usage complies with BOM's data licensing terms. Original data remains the property of the Commonwealth of Australia, Bureau of Meteorology.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.omnata.com/omnata-product-documentation/omnata-sync-for-snowflake/apps/bom-weather-data.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
