GithubHelp home page GithubHelp logo

atward / weather-au Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tonyallan/weather-au

0.0 1.0 0.0 62 KB

Australian Weather Data (using bom.gov.au)

License: GNU General Public License v3.0

Python 100.00%

weather-au's Introduction

Australian Weather Data (using bom.gov.au)

Access to the Australian Bureau of Meteorology weather data.

Actions Status PyPI

Currently a work in progress subject to breaking changes!

Purpose

The purpose of these modules is to fetch weather data from various Australian Bureau of Meteorology websites.

Weather API

Fetches data from the API's at api.weather.bom.gov.au (e.g. Parkville 3-hourly forecast).

This information has been reverse engineered from the beta website with no information about future access arrangements, content or availability.

Example using WeatherApi

import sys
from weather_au import api

w = api.WeatherApi(search='parkville+vic', debug=0)

location = w.location()

# check if the search produced a result (other methods will also return None if the search fails).
if location is None:
    sys.exit('Search failed for location ' + loc)

print(f"\nLocation: {location['name']} {location['state']}, timezone:{location['timezone']}\n")

for warn in w.warnings():
    print(f"Warning short title:  {warn['short_title']}")

    warning = w.warning(id=warn['id'])
    print(f"Warning title:        {warning['title']}")

observations = w.observations()
print(f"\nObservations (temp): {observations['temp']:2}")

forecast_rain = w.forecast_rain()
print(f"Forecast Rain:       amount:{forecast_rain['amount']}, chance:{forecast_rain['chance']}")

print('\n3 Hourly:')
for f in w.forecasts_3hourly():
    print(f"{f['time']} temp:{f['temp']:2}, {f['icon_descriptor']}")

Example using Summary

from weather_au import summary

print(summary.Summary(search='parkville+vic'))

XML and Scraping

Modules:

  • observations - fetch XML formatted data from the BOM FTP server.
  • uv_index - fetch the UV data from the XML encoded state based IDZ00107-IDZ00113 products.
  • place - scrape data from location based pages.

Where possible WeatherApi, should be used as it uses an API rather than scraping the web page.

Sample for Parkville in Melbourne Vic Australia

from weather import place, observations, uv_index

# Parse http://www.bom.gov.au/places/vic/parkville
place_data = place.Place('vic', 'parkville')
print(place_data.acknowedgment)

station_id = place_data.station_id()
print('Station ID',station_id)

air_temperature = place_data.air_temperature()
print('Air Temperature', air_temperature)

forecast = place_data.forecast()
print('Forecast', forecast)


uv_data = uv_index.UvIndex('Vic')
print('\n' + uv_data.acknowedgment)

location_name = 'Melbourne'
uv_message = uv_data.uv_message(uv_data.get_aac(location_name))

print('UV Message for', location_name, uv_message)

Disclaimer

This project is not related to or endorsed by the Australian Bureau of Meteorology (BOM).

From the BOM copyright notice: Where no terms of use are associated with a set of material, then you may download, use and copy that material for personal use, or use within your organisation but you may not supply that material to any other person or use it for any commercial purpose.

Usage

Additional examples are in the examples folder.

URL's

  • Base for anon FTP data ftp://ftp.bom.gov.au/anon/gen/
  • Capital City Observations - VIC - Melbourne (Olympic Park) http://www.bom.gov.au/fwo/IDV60901/IDV60901.95936.json
    • where IDV60901 is the product, and
    • 95936 is the weather station id.
  • Weather Observations - VIC - Melbourne (Olympic Park) http://www.bom.gov.au/fwo/IDV60910/IDV60910.95936.json
  • http://www.bom.gov.au/places/vic/parkville/

Resources

  1. New weather page
  2. FTP public products
  3. Weather Data Services
  4. How to use BOM API for weather, tide and swell
  5. Github has a number of projects using bom.gov.au data
  6. 256 km Melbourne Radar Loop
  7. Catalogue of RSS Feeds

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.