A talk prepared for PyLadies 20 May 2017
This talk aims to discuss, demystify and crack open various data formats used by meteorological agencies. Formats encountered along the way includes curiously formatted comma separated files, xml (blergh), json as well as n-dimensional data — all using data available online. The talk will be presented in jupyter notebooks which will be made available after the talk. The presenter, Maree Carroll, has been working at the Australian Bureau of Meteorology for the past ten years. Python is the programming language of choice for many of the staff there.
.txt
There are two main python modules you generally use for importing flat files: numpy, pandas
If all the data are numerical we can import the data with numpy
Numpy arrays are the python standard for storing numerical data - efficiency, work well with other packages e.g. sci-kit learn for machine learning
The two main funtions for loading numerical data in numpy from flat files are:
loadtxt()
https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.htmlgenfromtxt()
https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.htmlLets have a look at one file from the Bureau of Meteorology anonymous ftp server that is numerical data -- the rainfall daily grid at ftp://ftp.bom.gov.au/anon/gen/clim_data/IDCKZRDA00.rainfall.daily.grid
!curl ftp://ftp.bom.gov.au/anon/gen/clim_data/IDCKZRDA00.rainfall.daily.grid -O
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 2401k 100 2401k 0 0 789k 0 0:00:03 0:00:03 --:--:-- 789k
import numpy as np
filename = 'IDCKZRDA00.rainfall.daily.grid'
data = np.genfromtxt(filename, delimiter=' ', skip_header=6, skip_footer=18)
#white space delimiter is actually default
data
array([[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], ..., [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.]])
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(data, cmap='Blues', interpolation='nearest')
<matplotlib.image.AxesImage at 0x10e3779b0>
Another useful parameter is usecols which lets you only load certain columns of the data. e.g if you only want the first and third column you could use: usecol=[0,2]
Data with mixed types (not exclusively numerical data) is best loaded into a DataFrame with pandas.
import pandas as pd
A useful function for creating a DataFrame from a flat file in pandas is read_csv http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html. This method can be used for any delimiter flat file.
Lets have a look at a file separated by #
, the capital city precis forecast file at ftp://ftp.bom.gov.au/anon/gen/fwo/IDA00100.dat. Another handy thing with the most recent pandas versions is you can give it a URL as a file-like object. But let's download it with curl anyway so we can have a quick look at this small file.
!curl ftp://ftp.bom.gov.au/anon/gen/fwo/IDA00100.dat -O
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 628 100 628 0 0 949 0 --:--:-- --:--:-- --:--:-- 950
!cat IDA00100.dat
location#state#issue_date#issue_time#product_code#forecast_date#max#forecast# Sydney#NSW#20170515#095409#IDN10064#20170515000000#20#Shower or two. Windy.# Melbourne#VIC#20170515#044005#IDV10450#20170515000000#17#Cloudy.# Brisbane#QLD#20170515#020527#IDQ10095#20170515000000#26#Sunny.# Perth#WA#20170515#035827#IDW12300#20170515000000#21#Showers.# Adelaide#SA#20170515#044847#IDS10034#20170515000000#21#Mostly sunny.# Hobart#TAS#20170515#031707#IDT65061#20170515000000#14#Possible light shower.# Canberra#NSW#20170515#095409#IDN10035#20170515000000#17#Partly cloudy.# Darwin#NT#20170515#043003#IDD10150#20170515000000#33#Sunny.#
We can notice the following about this file:
dateparse = lambda x: pd.datetime.strptime(x, '%Y%m%d%H%M%S')
data = pd.read_csv('ftp://ftp.bom.gov.au/anon/gen/fwo/IDA00100.dat',
sep='#',
usecols=[0,1,5,6,7],
parse_dates=[2],
#date_parser=dateparse ## in this instance we don't need it as intelligent parser figured it out
)
data
location | state | forecast_date | max | forecast | |
---|---|---|---|---|---|
0 | Sydney | NSW | 2017-05-15 | 20 | Shower or two. Windy. |
1 | Melbourne | VIC | 2017-05-15 | 17 | Cloudy. |
2 | Brisbane | QLD | 2017-05-15 | 26 | Sunny. |
3 | Perth | WA | 2017-05-15 | 21 | Showers. |
4 | Adelaide | SA | 2017-05-15 | 21 | Mostly sunny. |
5 | Hobart | TAS | 2017-05-15 | 14 | Possible light shower. |
6 | Canberra | NSW | 2017-05-15 | 17 | Partly cloudy. |
7 | Darwin | NT | 2017-05-15 | 33 | Sunny. |
Here's another example, using fixed width columns, showing the UV forecast for various locations ftp://ftp.bom.gov.au/anon/gen/fwo/IDZ75006.txt
Here we can use pandas read_fwf()
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_fwf.html?highlight=read_fwf#pandas.read_fwf
data = pd.read_fwf('ftp://ftp.bom.gov.au/anon/gen/fwo/IDZ75006.txt',
parse_dates=[4],
dayfirst=True,
header=0, #explicitly replace names
names=['Lat','Lon','Region','Location','Date','Start','End', 'Index','Rating'],
widths=[7,9,8,26,12,32,9,3,9,29,3,11],
usecols=[0,1,2,3,4,6,8,10,11],
nrows=25
)
data
Lat | Lon | Region | Location | Date | Start | End | Index | Rating | |
---|---|---|---|---|---|---|---|---|---|
0 | -34.56 | 150.79 | NSW | Albion Park | 2017-05-15 | 11:00 am | 1:00 pm | 3 | [Moderate] |
1 | -30.53 | 151.67 | NSW | Armidale | 2017-05-15 | 10:00 am | 2:00 pm | 5 | [Moderate] |
2 | -28.84 | 153.56 | NSW | Ballina | 2017-05-15 | 9:40 am | 2:00 pm | 5 | [Moderate] |
3 | -34.64 | 143.56 | NSW | Balranald | 2017-05-15 | 11:50 am | 1:10 pm | 3 | [Moderate] |
4 | -30.38 | 150.61 | NSW | Barraba | 2017-05-15 | 10:00 am | 2:00 pm | 4 | [Moderate] |
5 | -35.72 | 150.19 | NSW | Batemans Bay | 2017-05-15 | 11:20 am | 1:00 pm | 3 | [Moderate] |
6 | -33.43 | 149.56 | NSW | Bathurst | 2017-05-15 | 10:50 am | 1:20 pm | 3 | [Moderate] |
7 | -36.67 | 149.82 | NSW | Bega | 2017-05-15 | 12:00 pm | 12:10 pm | 3 | [Moderate] |
8 | -34.37 | 150.93 | NSW | Wollongong | 2017-05-15 | 11:00 am | 1:00 pm | 3 | [Moderate] |
9 | -30.04 | 145.95 | NSW | Bourke | 2017-05-15 | 10:20 am | 2:20 pm | 4 | [Moderate] |
10 | -34.49 | 150.40 | NSW | Bowral | 2017-05-15 | 10:50 am | 1:10 pm | 3 | [Moderate] |
11 | -35.43 | 149.78 | NSW | Braidwood | 2017-05-15 | 11:10 am | 1:00 pm | 3 | [Moderate] |
12 | -29.96 | 146.87 | NSW | Brewarrina | 2017-05-15 | 10:20 am | 2:10 pm | 4 | [Moderate] |
13 | -31.98 | 141.47 | NSW | Broken Hill | 2017-05-15 | 10:50 am | 2:20 pm | 4 | [Moderate] |
14 | -28.64 | 153.64 | NSW | Byron Bay | 2017-05-15 | 9:40 am | 2:00 pm | 5 | [Moderate] |
15 | -35.94 | 148.38 | NSW | Cabramurra | 2017-05-15 | 11:20 am | 1:00 pm | 3 | [Moderate] |
16 | -34.06 | 150.77 | NSW | Campbelltown | 2017-05-15 | 10:50 am | 1:10 pm | 3 | [Moderate] |
17 | -35.31 | 149.20 | ACT | Canberra | 2017-05-15 | 11:00 am | 1:10 pm | 3 | [Moderate] |
18 | -33.91 | 151.11 | NSW | Canterbury | 2017-05-15 | 10:50 am | 1:10 pm | 3 | [Moderate] |
19 | -32.79 | 151.34 | NSW | Cessnock | 2017-05-15 | 10:40 am | 1:20 pm | 3 | [Moderate] |
20 | -36.43 | 148.33 | NSW | Charlotte Pass | 2017-05-15 | 11:30 am | 1:00 pm | 3 | [Moderate] |
21 | -31.48 | 145.83 | NSW | Cobar | 2017-05-15 | 10:40 am | 2:00 pm | 4 | [Moderate] |
22 | -30.30 | 153.11 | NSW | Coffs Harbour | 2017-05-15 | 10:00 am | 1:40 pm | 4 | [Moderate] |
23 | -36.23 | 149.12 | NSW | Cooma | 2017-05-15 | 11:30 am | 12:50 pm | 3 | [Moderate] |
24 | -31.27 | 149.27 | NSW | Coonabarabran | 2017-05-15 | 10:20 am | 1:50 pm | 4 | [Moderate] |
data = pd.read_csv('ftp://ftp.bom.gov.au/anon/gen/fwo/IDZ75007.csv',
nrows=121,
parse_dates=[0],
usecols=[6,7])
# UV biologically effective dose clear-sky (uvbedcs)
data.index = data.pop('LOCAL date')
data
uvbedcs | |
---|---|
LOCAL date | |
2017-05-14 22:00:00 | 0.000000 |
2017-05-14 23:00:00 | 0.000000 |
2017-05-15 00:00:00 | 0.000000 |
2017-05-15 01:00:00 | 0.000000 |
2017-05-15 02:00:00 | 0.000000 |
2017-05-15 03:00:00 | 0.000000 |
2017-05-15 04:00:00 | 0.000000 |
2017-05-15 05:00:00 | 0.000000 |
2017-05-15 06:00:00 | 0.000000 |
2017-05-15 07:00:00 | 0.015324 |
2017-05-15 08:00:00 | 0.327018 |
2017-05-15 09:00:00 | 1.086187 |
2017-05-15 10:00:00 | 2.176819 |
2017-05-15 11:00:00 | 3.155390 |
2017-05-15 12:00:00 | 3.553925 |
2017-05-15 13:00:00 | 3.160435 |
2017-05-15 14:00:00 | 2.196711 |
2017-05-15 15:00:00 | 1.106842 |
2017-05-15 16:00:00 | 0.340004 |
2017-05-15 17:00:00 | 0.018048 |
2017-05-15 18:00:00 | 0.000000 |
2017-05-15 19:00:00 | 0.000000 |
2017-05-15 20:00:00 | 0.000000 |
2017-05-15 21:00:00 | 0.000000 |
2017-05-15 22:00:00 | 0.000000 |
2017-05-15 23:00:00 | 0.000000 |
2017-05-16 00:00:00 | 0.000000 |
2017-05-16 01:00:00 | 0.000000 |
2017-05-16 02:00:00 | 0.000000 |
2017-05-16 03:00:00 | 0.000000 |
... | ... |
2017-05-18 17:00:00 | 0.012589 |
2017-05-18 18:00:00 | 0.000000 |
2017-05-18 19:00:00 | 0.000000 |
2017-05-18 20:00:00 | 0.000000 |
2017-05-18 21:00:00 | 0.000000 |
2017-05-18 22:00:00 | 0.000000 |
2017-05-18 23:00:00 | 0.000000 |
2017-05-19 00:00:00 | 0.000000 |
2017-05-19 01:00:00 | 0.000000 |
2017-05-19 02:00:00 | 0.000000 |
2017-05-19 03:00:00 | 0.000000 |
2017-05-19 04:00:00 | 0.000000 |
2017-05-19 05:00:00 | 0.000000 |
2017-05-19 06:00:00 | 0.000000 |
2017-05-19 07:00:00 | 0.005472 |
2017-05-19 08:00:00 | 0.303810 |
2017-05-19 09:00:00 | 1.037195 |
2017-05-19 10:00:00 | 2.098964 |
2017-05-19 11:00:00 | 3.056808 |
2017-05-19 12:00:00 | 3.427765 |
2017-05-19 13:00:00 | 3.031539 |
2017-05-19 14:00:00 | 2.091407 |
2017-05-19 15:00:00 | 1.042628 |
2017-05-19 16:00:00 | 0.308480 |
2017-05-19 17:00:00 | 0.011346 |
2017-05-19 18:00:00 | 0.000000 |
2017-05-19 19:00:00 | 0.000000 |
2017-05-19 20:00:00 | 0.000000 |
2017-05-19 21:00:00 | 0.000000 |
2017-05-19 22:00:00 | 0.000000 |
121 rows × 1 columns
data.plot()
<matplotlib.axes._subplots.AxesSubplot at 0x115eade48>
A daily rainfall file from http://www.bom.gov.au/climate/data/
!head -10 IDCJAC0009_086338_1800_Data.csv
pd.read_csv('IDCJAC0009_086338_1800_Data.csv',usecols=[2,3,4,5,6],parse_dates=[[0,1,2]])
Year_Month_Day | Rainfall amount (millimetres) | Period over which rainfall was measured (days) | |
---|---|---|---|
0 | 2013-01-01 | NaN | NaN |
1 | 2013-01-02 | NaN | NaN |
2 | 2013-01-03 | NaN | NaN |
3 | 2013-01-04 | NaN | NaN |
4 | 2013-01-05 | NaN | NaN |
5 | 2013-01-06 | NaN | NaN |
6 | 2013-01-07 | NaN | NaN |
7 | 2013-01-08 | NaN | NaN |
8 | 2013-01-09 | NaN | NaN |
9 | 2013-01-10 | NaN | NaN |
10 | 2013-01-11 | NaN | NaN |
11 | 2013-01-12 | NaN | NaN |
12 | 2013-01-13 | NaN | NaN |
13 | 2013-01-14 | NaN | NaN |
14 | 2013-01-15 | NaN | NaN |
15 | 2013-01-16 | NaN | NaN |
16 | 2013-01-17 | NaN | NaN |
17 | 2013-01-18 | NaN | NaN |
18 | 2013-01-19 | NaN | NaN |
19 | 2013-01-20 | NaN | NaN |
20 | 2013-01-21 | NaN | NaN |
21 | 2013-01-22 | NaN | NaN |
22 | 2013-01-23 | NaN | NaN |
23 | 2013-01-24 | NaN | NaN |
24 | 2013-01-25 | NaN | NaN |
25 | 2013-01-26 | NaN | NaN |
26 | 2013-01-27 | NaN | NaN |
27 | 2013-01-28 | NaN | NaN |
28 | 2013-01-29 | NaN | NaN |
29 | 2013-01-30 | NaN | NaN |
... | ... | ... | ... |
1554 | 2017-04-04 | 0.0 | 1.0 |
1555 | 2017-04-05 | 0.0 | 1.0 |
1556 | 2017-04-06 | 0.0 | 1.0 |
1557 | 2017-04-07 | 0.0 | 1.0 |
1558 | 2017-04-08 | 0.0 | 1.0 |
1559 | 2017-04-09 | 10.6 | 1.0 |
1560 | 2017-04-10 | 25.4 | 1.0 |
1561 | 2017-04-11 | 15.4 | 1.0 |
1562 | 2017-04-12 | 0.0 | 1.0 |
1563 | 2017-04-13 | 0.0 | 1.0 |
1564 | 2017-04-14 | 0.0 | 1.0 |
1565 | 2017-04-15 | 0.0 | 1.0 |
1566 | 2017-04-16 | 0.0 | 1.0 |
1567 | 2017-04-17 | 0.0 | 1.0 |
1568 | 2017-04-18 | 0.0 | 1.0 |
1569 | 2017-04-19 | 0.0 | 1.0 |
1570 | 2017-04-20 | 0.0 | 1.0 |
1571 | 2017-04-21 | 9.4 | 1.0 |
1572 | 2017-04-22 | 4.6 | 1.0 |
1573 | 2017-04-23 | 0.0 | 1.0 |
1574 | 2017-04-24 | 0.0 | 1.0 |
1575 | 2017-04-25 | 21.6 | 1.0 |
1576 | 2017-04-26 | 20.0 | 1.0 |
1577 | 2017-04-27 | 15.4 | 1.0 |
1578 | 2017-04-28 | 0.4 | 1.0 |
1579 | 2017-04-29 | 0.2 | 1.0 |
1580 | 2017-04-30 | 0.0 | 1.0 |
1581 | 2017-05-01 | 0.0 | 1.0 |
1582 | 2017-05-02 | 2.4 | 1.0 |
1583 | 2017-05-03 | 0.8 | 1.0 |
1584 rows × 3 columns
Example, the last 72 hours of observations for Melbourne via http://www.bom.gov.au/products/IDV60901/IDV60901.95936.shtml link to http://www.bom.gov.au/fwo/IDV60901/IDV60901.95936.json
!curl http://www.bom.gov.au/fwo/IDV60901/IDV60901.95936.json -O
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 125k 0 125k 0 0 193k 0 --:--:-- --:--:-- --:--:-- 193k
import json
from pprint import pprint
with open('IDV60901.95936.json') as fp:
data = json.load(fp)
pprint(data['observations']['data'])
[{'aifstime_utc': '20170515053000', 'air_temp': 14.7, 'apparent_t': 13.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 10.9, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/03:30pm', 'local_date_time_full': '20170515153000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1018.9, 'press_msl': 1018.9, 'press_qnh': 1018.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 78, 'sea_state': '-', 'sort_order': 0, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170515050000', 'air_temp': 15.4, 'apparent_t': 14.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 10.8, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/03:00pm', 'local_date_time_full': '20170515150000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1019.0, 'press_msl': 1019.0, 'press_qnh': 1019.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 74, 'sea_state': '-', 'sort_order': 1, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170515043000', 'air_temp': 16.7, 'apparent_t': 16.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.1, 'dewpt': 11.0, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/02:30pm', 'local_date_time_full': '20170515143000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1018.9, 'press_msl': 1018.9, 'press_qnh': 1018.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 69, 'sea_state': '-', 'sort_order': 2, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170515040000', 'air_temp': 15.4, 'apparent_t': 14.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 10.6, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/02:00pm', 'local_date_time_full': '20170515140000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1019.2, 'press_msl': 1019.2, 'press_qnh': 1019.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 73, 'sea_state': '-', 'sort_order': 3, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNW', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170515033000', 'air_temp': 14.5, 'apparent_t': 14.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 10.5, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/01:30pm', 'local_date_time_full': '20170515133000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1019.4, 'press_msl': 1019.4, 'press_qnh': 1019.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 4, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170515030000', 'air_temp': 13.4, 'apparent_t': 12.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.6, 'dewpt': 10.4, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/01:00pm', 'local_date_time_full': '20170515130000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1019.7, 'press_msl': 1019.7, 'press_qnh': 1019.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 82, 'sea_state': '-', 'sort_order': 5, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170515023000', 'air_temp': 13.0, 'apparent_t': 12.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.4, 'dewpt': 10.2, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/12:30pm', 'local_date_time_full': '20170515123000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.1, 'press_msl': 1020.1, 'press_qnh': 1020.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 83, 'sea_state': '-', 'sort_order': 6, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170515020000', 'air_temp': 12.2, 'apparent_t': 11.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.0, 'dewpt': 10.3, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/12:00pm', 'local_date_time_full': '20170515120000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.7, 'press_msl': 1020.7, 'press_qnh': 1020.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 88, 'sea_state': '-', 'sort_order': 7, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170515013000', 'air_temp': 11.3, 'apparent_t': 11.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.5, 'dewpt': 10.4, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/11:30am', 'local_date_time_full': '20170515113000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.1, 'press_msl': 1021.1, 'press_qnh': 1021.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 94, 'sea_state': '-', 'sort_order': 8, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170515010000', 'air_temp': 10.7, 'apparent_t': 10.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 10.7, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/11:00am', 'local_date_time_full': '20170515110000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.3, 'press_msl': 1021.3, 'press_qnh': 1021.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 9, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170515003000', 'air_temp': 10.3, 'apparent_t': 10.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 10.3, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/10:30am', 'local_date_time_full': '20170515103000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.4, 'press_msl': 1021.4, 'press_qnh': 1021.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 10, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'ENE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170515000000', 'air_temp': 9.4, 'apparent_t': 9.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 9.4, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/10:00am', 'local_date_time_full': '20170515100000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.6, 'press_msl': 1021.6, 'press_qnh': 1021.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 11, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '9', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514235800', 'air_temp': 9.5, 'apparent_t': 9.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 9.5, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/09:58am', 'local_date_time_full': '20170515095800', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.6, 'press_msl': 1021.6, 'press_qnh': 1021.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 12, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '9', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514233000', 'air_temp': 8.5, 'apparent_t': 6.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 8.5, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/09:30am', 'local_date_time_full': '20170515093000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.7, 'press_msl': 1021.7, 'press_qnh': 1021.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 13, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '6', 'weather': '-', 'wind_dir': 'NE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514230000', 'air_temp': 7.9, 'apparent_t': 6.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.9, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/09:00am', 'local_date_time_full': '20170515090000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.6, 'press_msl': 1021.6, 'press_qnh': 1021.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 14, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '2', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514223000', 'air_temp': 7.2, 'apparent_t': 5.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.2, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/08:30am', 'local_date_time_full': '20170515083000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.5, 'press_msl': 1021.5, 'press_qnh': 1021.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 15, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '0.7', 'weather': '-', 'wind_dir': 'NE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514220000', 'air_temp': 7.0, 'apparent_t': 5.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.0, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/08:00am', 'local_date_time_full': '20170515080000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.3, 'press_msl': 1021.3, 'press_qnh': 1021.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 16, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '0.5', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514213000', 'air_temp': 6.8, 'apparent_t': 4.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.8, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/07:30am', 'local_date_time_full': '20170515073000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.2, 'press_msl': 1021.2, 'press_qnh': 1021.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 17, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '0.5', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514210000', 'air_temp': 6.9, 'apparent_t': 4.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.9, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/07:00am', 'local_date_time_full': '20170515070000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.3, 'press_msl': 1021.3, 'press_qnh': 1021.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 18, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '0.2', 'weather': '-', 'wind_dir': 'N', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514203000', 'air_temp': 6.9, 'apparent_t': 5.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.8, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/06:30am', 'local_date_time_full': '20170515063000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.2, 'press_msl': 1021.2, 'press_qnh': 1021.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 19, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '1', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514202600', 'air_temp': 6.9, 'apparent_t': 5.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.8, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/06:26am', 'local_date_time_full': '20170515062600', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.2, 'press_msl': 1021.2, 'press_qnh': 1021.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 20, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '6', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514200000', 'air_temp': 6.5, 'apparent_t': 4.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.4, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/06:00am', 'local_date_time_full': '20170515060000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.0, 'press_msl': 1021.0, 'press_qnh': 1021.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 21, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514193000', 'air_temp': 6.8, 'apparent_t': 6.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.8, 'gust_kmh': 6, 'gust_kt': 3, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/05:30am', 'local_date_time_full': '20170515053000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.9, 'press_msl': 1020.9, 'press_qnh': 1020.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 22, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514190100', 'air_temp': 6.7, 'apparent_t': 5.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.7, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/05:01am', 'local_date_time_full': '20170515050100', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.9, 'press_msl': 1020.9, 'press_qnh': 1020.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 23, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514190000', 'air_temp': 6.7, 'apparent_t': 5.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.7, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/05:00am', 'local_date_time_full': '20170515050000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.9, 'press_msl': 1020.9, 'press_qnh': 1020.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 24, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '9', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514183000', 'air_temp': 6.6, 'apparent_t': 5.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.6, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/04:30am', 'local_date_time_full': '20170515043000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.9, 'press_msl': 1020.9, 'press_qnh': 1020.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 25, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '4', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514180000', 'air_temp': 6.9, 'apparent_t': 6.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/04:00am', 'local_date_time_full': '20170515040000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1020.8, 'press_msl': 1020.8, 'press_qnh': 1020.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 26, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '5', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514173000', 'air_temp': 7.2, 'apparent_t': 6.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.2, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/03:30am', 'local_date_time_full': '20170515033000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.0, 'press_msl': 1021.0, 'press_qnh': 1021.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 27, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '5', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514170000', 'air_temp': 7.6, 'apparent_t': 6.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/03:00am', 'local_date_time_full': '20170515030000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.1, 'press_msl': 1021.1, 'press_qnh': 1021.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 28, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '7', 'weather': '-', 'wind_dir': 'E', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514163000', 'air_temp': 7.4, 'apparent_t': 6.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.4, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/02:30am', 'local_date_time_full': '20170515023000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.2, 'press_msl': 1021.2, 'press_qnh': 1021.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 29, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '4', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514160000', 'air_temp': 7.7, 'apparent_t': 7.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.7, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/02:00am', 'local_date_time_full': '20170515020000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.3, 'press_msl': 1021.3, 'press_qnh': 1021.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 30, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '4', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514153000', 'air_temp': 8.0, 'apparent_t': 7.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/01:30am', 'local_date_time_full': '20170515013000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.3, 'press_msl': 1021.3, 'press_qnh': 1021.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 31, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '4', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514150000', 'air_temp': 8.4, 'apparent_t': 8.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.1, 'dewpt': 8.1, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/01:00am', 'local_date_time_full': '20170515010000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.2, 'press_msl': 1021.2, 'press_qnh': 1021.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 98, 'sea_state': '-', 'sort_order': 32, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '5', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514143100', 'air_temp': 8.9, 'apparent_t': 8.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 8.5, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/12:31am', 'local_date_time_full': '20170515003100', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.4, 'press_msl': 1021.4, 'press_qnh': 1021.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 33, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '7', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514143000', 'air_temp': 8.9, 'apparent_t': 8.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 8.5, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/12:30am', 'local_date_time_full': '20170515003000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.4, 'press_msl': 1021.4, 'press_qnh': 1021.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 34, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '8', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514140000', 'air_temp': 9.1, 'apparent_t': 8.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.3, 'dewpt': 8.5, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '15/12:00am', 'local_date_time_full': '20170515000000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.3, 'press_msl': 1021.3, 'press_qnh': 1021.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 96, 'sea_state': '-', 'sort_order': 35, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514133000', 'air_temp': 9.7, 'apparent_t': 9.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.4, 'dewpt': 8.8, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/11:30pm', 'local_date_time_full': '20170514233000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.4, 'press_msl': 1021.4, 'press_qnh': 1021.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 94, 'sea_state': '-', 'sort_order': 36, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514130000', 'air_temp': 10.3, 'apparent_t': 10.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.7, 'dewpt': 8.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/11:00pm', 'local_date_time_full': '20170514230000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.5, 'press_msl': 1021.5, 'press_qnh': 1021.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 91, 'sea_state': '-', 'sort_order': 37, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514123000', 'air_temp': 10.9, 'apparent_t': 10.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.8, 'dewpt': 9.3, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/10:30pm', 'local_date_time_full': '20170514223000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.8, 'press_msl': 1021.8, 'press_qnh': 1021.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 90, 'sea_state': '-', 'sort_order': 38, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514120000', 'air_temp': 11.0, 'apparent_t': 10.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.8, 'dewpt': 9.4, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/10:00pm', 'local_date_time_full': '20170514220000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.9, 'press_msl': 1021.9, 'press_qnh': 1021.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 90, 'sea_state': '-', 'sort_order': 39, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514113000', 'air_temp': 11.3, 'apparent_t': 11.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.1, 'dewpt': 9.0, 'gust_kmh': 2, 'gust_kt': 1, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/09:30pm', 'local_date_time_full': '20170514213000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.1, 'press_msl': 1022.1, 'press_qnh': 1022.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 86, 'sea_state': '-', 'sort_order': 40, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514110000', 'air_temp': 12.3, 'apparent_t': 11.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.4, 'dewpt': 9.5, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/09:00pm', 'local_date_time_full': '20170514210000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.0, 'press_msl': 1022.0, 'press_qnh': 1022.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 83, 'sea_state': '-', 'sort_order': 41, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514103000', 'air_temp': 12.7, 'apparent_t': 11.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.6, 'dewpt': 9.5, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/08:30pm', 'local_date_time_full': '20170514203000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.1, 'press_msl': 1022.1, 'press_qnh': 1022.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 81, 'sea_state': '-', 'sort_order': 42, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514100000', 'air_temp': 13.5, 'apparent_t': 12.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 9.6, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/08:00pm', 'local_date_time_full': '20170514200000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.3, 'press_msl': 1022.3, 'press_qnh': 1022.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 43, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514093000', 'air_temp': 13.8, 'apparent_t': 12.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.2, 'dewpt': 9.6, 'gust_kmh': 15, 'gust_kt': 8, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/07:30pm', 'local_date_time_full': '20170514193000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.2, 'press_msl': 1022.2, 'press_qnh': 1022.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 44, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514090000', 'air_temp': 14.3, 'apparent_t': 12.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 9.5, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/07:00pm', 'local_date_time_full': '20170514190000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.1, 'press_msl': 1022.1, 'press_qnh': 1022.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 73, 'sea_state': '-', 'sort_order': 45, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514083000', 'air_temp': 14.5, 'apparent_t': 13.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 9.9, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/06:30pm', 'local_date_time_full': '20170514183000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.9, 'press_msl': 1021.9, 'press_qnh': 1021.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 74, 'sea_state': '-', 'sort_order': 46, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514080000', 'air_temp': 14.6, 'apparent_t': 13.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 10.0, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/06:00pm', 'local_date_time_full': '20170514180000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.7, 'press_msl': 1021.7, 'press_qnh': 1021.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 74, 'sea_state': '-', 'sort_order': 47, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514073000', 'air_temp': 14.2, 'apparent_t': 13.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 10.4, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/05:30pm', 'local_date_time_full': '20170514173000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.5, 'press_msl': 1021.5, 'press_qnh': 1021.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 78, 'sea_state': '-', 'sort_order': 48, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514070000', 'air_temp': 14.1, 'apparent_t': 14.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 10.1, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/05:00pm', 'local_date_time_full': '20170514170000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.5, 'press_msl': 1021.5, 'press_qnh': 1021.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 49, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170514063000', 'air_temp': 14.3, 'apparent_t': 13.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.3, 'dewpt': 9.9, 'gust_kmh': 6, 'gust_kt': 3, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/04:30pm', 'local_date_time_full': '20170514163000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.5, 'press_msl': 1021.5, 'press_qnh': 1021.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 50, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170514060000', 'air_temp': 14.4, 'apparent_t': 13.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 9.8, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/04:00pm', 'local_date_time_full': '20170514160000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.7, 'press_msl': 1021.7, 'press_qnh': 1021.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 74, 'sea_state': '-', 'sort_order': 51, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514053000', 'air_temp': 14.5, 'apparent_t': 13.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 9.7, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/03:30pm', 'local_date_time_full': '20170514153000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.7, 'press_msl': 1021.7, 'press_qnh': 1021.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 73, 'sea_state': '-', 'sort_order': 52, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514050000', 'air_temp': 14.6, 'apparent_t': 14.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.6, 'dewpt': 9.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/03:00pm', 'local_date_time_full': '20170514150000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.7, 'press_msl': 1021.7, 'press_qnh': 1021.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 72, 'sea_state': '-', 'sort_order': 53, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170514043000', 'air_temp': 14.8, 'apparent_t': 13.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.8, 'dewpt': 9.4, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/02:30pm', 'local_date_time_full': '20170514143000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.8, 'press_msl': 1021.8, 'press_qnh': 1021.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 70, 'sea_state': '-', 'sort_order': 54, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'E', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514040000', 'air_temp': 14.3, 'apparent_t': 12.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.7, 'dewpt': 8.9, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/02:00pm', 'local_date_time_full': '20170514140000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1021.9, 'press_msl': 1021.9, 'press_qnh': 1021.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 70, 'sea_state': '-', 'sort_order': 55, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'E', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170514033000', 'air_temp': 14.2, 'apparent_t': 12.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.6, 'dewpt': 9.0, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/01:30pm', 'local_date_time_full': '20170514133000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.3, 'press_msl': 1022.3, 'press_qnh': 1022.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 71, 'sea_state': '-', 'sort_order': 56, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514030000', 'air_temp': 13.2, 'apparent_t': 11.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 9.1, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/01:00pm', 'local_date_time_full': '20170514130000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.6, 'press_msl': 1022.6, 'press_qnh': 1022.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 57, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NNE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170514023000', 'air_temp': 12.4, 'apparent_t': 10.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 8.3, 'gust_kmh': 15, 'gust_kt': 8, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/12:30pm', 'local_date_time_full': '20170514123000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1022.9, 'press_msl': 1022.9, 'press_qnh': 1022.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 58, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NE', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170514020000', 'air_temp': 13.0, 'apparent_t': 12.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 8.7, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/12:00pm', 'local_date_time_full': '20170514120000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.2, 'press_msl': 1023.2, 'press_qnh': 1023.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 59, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'E', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514013000', 'air_temp': 13.3, 'apparent_t': 11.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.3, 'dewpt': 8.8, 'gust_kmh': 15, 'gust_kt': 8, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/11:30am', 'local_date_time_full': '20170514113000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.3, 'press_msl': 1023.3, 'press_qnh': 1023.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 74, 'sea_state': '-', 'sort_order': 60, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'ESE', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170514010000', 'air_temp': 12.7, 'apparent_t': 11.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 8.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/11:00am', 'local_date_time_full': '20170514110000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.6, 'press_msl': 1023.6, 'press_qnh': 1023.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 61, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'ESE', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170514003000', 'air_temp': 11.5, 'apparent_t': 10.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.8, 'dewpt': 7.8, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/10:30am', 'local_date_time_full': '20170514103000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.8, 'press_msl': 1023.8, 'press_qnh': 1023.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 78, 'sea_state': '-', 'sort_order': 62, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170514000000', 'air_temp': 11.1, 'apparent_t': 10.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 6.8, 'gust_kmh': 4, 'gust_kt': 2, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/10:00am', 'local_date_time_full': '20170514100000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.0, 'press_msl': 1024.0, 'press_qnh': 1024.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 63, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513233000', 'air_temp': 10.8, 'apparent_t': 10.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.4, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/09:30am', 'local_date_time_full': '20170514093000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.1, 'press_msl': 1024.1, 'press_qnh': 1024.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 82, 'sea_state': '-', 'sort_order': 64, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513230000', 'air_temp': 8.3, 'apparent_t': 7.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.6, 'dewpt': 6.9, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/09:00am', 'local_date_time_full': '20170514090000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.1, 'press_msl': 1024.1, 'press_qnh': 1024.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 91, 'sea_state': '-', 'sort_order': 65, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'ENE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170513223000', 'air_temp': 7.0, 'apparent_t': 4.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 6.6, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/08:30am', 'local_date_time_full': '20170514083000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.1, 'press_msl': 1024.1, 'press_qnh': 1024.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 66, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'NE', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170513220000', 'air_temp': 6.6, 'apparent_t': 5.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.5, 'gust_kmh': 6, 'gust_kt': 3, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/08:00am', 'local_date_time_full': '20170514080000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.9, 'press_msl': 1023.9, 'press_qnh': 1023.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 67, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'ENE', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170513213000', 'air_temp': 6.8, 'apparent_t': 5.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 6.7, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/07:30am', 'local_date_time_full': '20170514073000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.7, 'press_msl': 1023.7, 'press_qnh': 1023.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 68, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'E', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170513210000', 'air_temp': 7.5, 'apparent_t': 6.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.5, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/07:00am', 'local_date_time_full': '20170514070000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.7, 'press_msl': 1023.7, 'press_qnh': 1023.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 69, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513203000', 'air_temp': 8.0, 'apparent_t': 7.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/06:30am', 'local_date_time_full': '20170514063000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.6, 'press_msl': 1023.6, 'press_qnh': 1023.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 70, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513200000', 'air_temp': 8.4, 'apparent_t': 8.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 8.3, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/06:00am', 'local_date_time_full': '20170514060000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.5, 'press_msl': 1023.5, 'press_qnh': 1023.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 71, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513193000', 'air_temp': 8.5, 'apparent_t': 8.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.1, 'dewpt': 8.2, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/05:30am', 'local_date_time_full': '20170514053000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.3, 'press_msl': 1023.3, 'press_qnh': 1023.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 98, 'sea_state': '-', 'sort_order': 72, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513190000', 'air_temp': 8.8, 'apparent_t': 8.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 8.4, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/05:00am', 'local_date_time_full': '20170514050000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.1, 'press_msl': 1023.1, 'press_qnh': 1023.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 73, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513183000', 'air_temp': 9.1, 'apparent_t': 8.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 8.6, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/04:30am', 'local_date_time_full': '20170514043000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.1, 'press_msl': 1023.1, 'press_qnh': 1023.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 74, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513180000', 'air_temp': 9.1, 'apparent_t': 7.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 9.1, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/04:00am', 'local_date_time_full': '20170514040000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.2, 'press_msl': 1023.2, 'press_qnh': 1023.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 75, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513173000', 'air_temp': 8.7, 'apparent_t': 8.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 8.7, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/03:30am', 'local_date_time_full': '20170514033000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.3, 'press_msl': 1023.3, 'press_qnh': 1023.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 100, 'sea_state': '-', 'sort_order': 76, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513170000', 'air_temp': 8.0, 'apparent_t': 7.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.0, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/03:00am', 'local_date_time_full': '20170514030000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.2, 'press_msl': 1023.2, 'press_qnh': 1023.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 99, 'sea_state': '-', 'sort_order': 77, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513163000', 'air_temp': 8.0, 'apparent_t': 7.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.1, 'dewpt': 7.7, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/02:30am', 'local_date_time_full': '20170514023000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.4, 'press_msl': 1023.4, 'press_qnh': 1023.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 98, 'sea_state': '-', 'sort_order': 78, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513160000', 'air_temp': 8.2, 'apparent_t': 7.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.1, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/02:00am', 'local_date_time_full': '20170514020000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.4, 'press_msl': 1023.4, 'press_qnh': 1023.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 98, 'sea_state': '-', 'sort_order': 79, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513153000', 'air_temp': 8.3, 'apparent_t': 7.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/01:30am', 'local_date_time_full': '20170514013000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.6, 'press_msl': 1023.6, 'press_qnh': 1023.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 80, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513150000', 'air_temp': 8.5, 'apparent_t': 8.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.3, 'dewpt': 7.9, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/01:00am', 'local_date_time_full': '20170514010000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.7, 'press_msl': 1023.7, 'press_qnh': 1023.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 96, 'sea_state': '-', 'sort_order': 81, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513143000', 'air_temp': 8.6, 'apparent_t': 8.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.4, 'dewpt': 7.8, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/12:30am', 'local_date_time_full': '20170514003000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.0, 'press_msl': 1024.0, 'press_qnh': 1024.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 95, 'sea_state': '-', 'sort_order': 82, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513140000', 'air_temp': 8.9, 'apparent_t': 8.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.4, 'dewpt': 8.0, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '14/12:00am', 'local_date_time_full': '20170514000000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.3, 'press_msl': 1024.3, 'press_qnh': 1024.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 94, 'sea_state': '-', 'sort_order': 83, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513133000', 'air_temp': 9.1, 'apparent_t': 8.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.5, 'dewpt': 8.0, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/11:30pm', 'local_date_time_full': '20170513233000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.4, 'press_msl': 1024.4, 'press_qnh': 1024.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 93, 'sea_state': '-', 'sort_order': 84, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513130000', 'air_temp': 9.3, 'apparent_t': 8.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.6, 'dewpt': 8.1, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/11:00pm', 'local_date_time_full': '20170513230000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.8, 'press_msl': 1024.8, 'press_qnh': 1024.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 92, 'sea_state': '-', 'sort_order': 85, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513123000', 'air_temp': 9.4, 'apparent_t': 8.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.8, 'dewpt': 7.8, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/10:30pm', 'local_date_time_full': '20170513223000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.8, 'press_msl': 1024.8, 'press_qnh': 1024.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 90, 'sea_state': '-', 'sort_order': 86, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513120000', 'air_temp': 9.6, 'apparent_t': 8.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.8, 'dewpt': 7.9, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/10:00pm', 'local_date_time_full': '20170513220000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.0, 'press_msl': 1025.0, 'press_qnh': 1025.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 89, 'sea_state': '-', 'sort_order': 87, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170513113000', 'air_temp': 9.8, 'apparent_t': 9.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.0, 'dewpt': 7.6, 'gust_kmh': 6, 'gust_kt': 3, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/09:30pm', 'local_date_time_full': '20170513213000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.0, 'press_msl': 1025.0, 'press_qnh': 1025.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 86, 'sea_state': '-', 'sort_order': 88, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170513110000', 'air_temp': 10.2, 'apparent_t': 9.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.1, 'dewpt': 7.8, 'gust_kmh': 6, 'gust_kt': 3, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/09:00pm', 'local_date_time_full': '20170513210000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.0, 'press_msl': 1025.0, 'press_qnh': 1025.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 85, 'sea_state': '-', 'sort_order': 89, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170513103000', 'air_temp': 10.7, 'apparent_t': 9.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.5, 'dewpt': 7.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/08:30pm', 'local_date_time_full': '20170513203000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.1, 'press_msl': 1025.1, 'press_qnh': 1025.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 81, 'sea_state': '-', 'sort_order': 90, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170513100000', 'air_temp': 11.4, 'apparent_t': 9.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.8, 'dewpt': 7.7, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/08:00pm', 'local_date_time_full': '20170513200000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.0, 'press_msl': 1025.0, 'press_qnh': 1025.0, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 78, 'sea_state': '-', 'sort_order': 91, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513093000', 'air_temp': 11.7, 'apparent_t': 10.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 7.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/07:30pm', 'local_date_time_full': '20170513193000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.9, 'press_msl': 1024.9, 'press_qnh': 1024.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 92, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513090000', 'air_temp': 12.1, 'apparent_t': 10.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 7.8, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/07:00pm', 'local_date_time_full': '20170513190000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.6, 'press_msl': 1024.6, 'press_qnh': 1024.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 93, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSE', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513083000', 'air_temp': 12.1, 'apparent_t': 10.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 7.8, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/06:30pm', 'local_date_time_full': '20170513183000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.2, 'press_msl': 1024.2, 'press_qnh': 1024.2, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 94, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513080000', 'air_temp': 12.7, 'apparent_t': 11.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 7.6, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/06:00pm', 'local_date_time_full': '20170513180000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.9, 'press_msl': 1023.9, 'press_qnh': 1023.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 71, 'sea_state': '-', 'sort_order': 95, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170513073000', 'air_temp': 13.0, 'apparent_t': 11.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 7.9, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/05:30pm', 'local_date_time_full': '20170513173000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.7, 'press_msl': 1023.7, 'press_qnh': 1023.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 71, 'sea_state': '-', 'sort_order': 96, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513070000', 'air_temp': 13.6, 'apparent_t': 11.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.8, 'dewpt': 8.0, 'gust_kmh': 15, 'gust_kt': 8, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/05:00pm', 'local_date_time_full': '20170513170000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.5, 'press_msl': 1023.5, 'press_qnh': 1023.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 69, 'sea_state': '-', 'sort_order': 97, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'S', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170513063000', 'air_temp': 14.1, 'apparent_t': 12.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.9, 'dewpt': 8.3, 'gust_kmh': 17, 'gust_kt': 9, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/04:30pm', 'local_date_time_full': '20170513163000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.4, 'press_msl': 1023.4, 'press_qnh': 1023.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 68, 'sea_state': '-', 'sort_order': 98, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170513060000', 'air_temp': 14.8, 'apparent_t': 13.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.2, 'dewpt': 8.5, 'gust_kmh': 17, 'gust_kt': 9, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/04:00pm', 'local_date_time_full': '20170513160000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.3, 'press_msl': 1023.3, 'press_qnh': 1023.3, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 66, 'sea_state': '-', 'sort_order': 99, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170513053000', 'air_temp': 14.8, 'apparent_t': 12.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.3, 'dewpt': 8.3, 'gust_kmh': 20, 'gust_kt': 11, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/03:30pm', 'local_date_time_full': '20170513153000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.4, 'press_msl': 1023.4, 'press_qnh': 1023.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 65, 'sea_state': '-', 'sort_order': 100, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170513050000', 'air_temp': 14.6, 'apparent_t': 12.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.9, 'dewpt': 8.8, 'gust_kmh': 15, 'gust_kt': 8, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/03:00pm', 'local_date_time_full': '20170513150000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.4, 'press_msl': 1023.4, 'press_qnh': 1023.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 68, 'sea_state': '-', 'sort_order': 101, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170513043000', 'air_temp': 14.3, 'apparent_t': 11.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.0, 'dewpt': 8.3, 'gust_kmh': 17, 'gust_kt': 9, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/02:30pm', 'local_date_time_full': '20170513143000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.5, 'press_msl': 1023.5, 'press_qnh': 1023.5, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 67, 'sea_state': '-', 'sort_order': 102, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 11, 'wind_spd_kt': 6, 'wmo': 95936}, {'aifstime_utc': '20170513040000', 'air_temp': 14.6, 'apparent_t': 12.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.2, 'dewpt': 8.1, 'gust_kmh': 17, 'gust_kt': 9, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/02:00pm', 'local_date_time_full': '20170513140000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.7, 'press_msl': 1023.7, 'press_qnh': 1023.7, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 65, 'sea_state': '-', 'sort_order': 103, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 11, 'wind_spd_kt': 6, 'wmo': 95936}, {'aifstime_utc': '20170513033000', 'air_temp': 14.8, 'apparent_t': 12.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.3, 'dewpt': 8.3, 'gust_kmh': 17, 'gust_kt': 9, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/01:30pm', 'local_date_time_full': '20170513133000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.9, 'press_msl': 1023.9, 'press_qnh': 1023.9, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 65, 'sea_state': '-', 'sort_order': 104, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170513030000', 'air_temp': 15.1, 'apparent_t': 13.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.5, 'dewpt': 8.1, 'gust_kmh': 15, 'gust_kt': 8, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/01:00pm', 'local_date_time_full': '20170513130000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.1, 'press_msl': 1024.1, 'press_qnh': 1024.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 63, 'sea_state': '-', 'sort_order': 105, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170513023000', 'air_temp': 15.5, 'apparent_t': 14.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 3.1, 'dewpt': 9.4, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/12:30pm', 'local_date_time_full': '20170513123000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.4, 'press_msl': 1024.4, 'press_qnh': 1024.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 67, 'sea_state': '-', 'sort_order': 106, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513020000', 'air_temp': 14.3, 'apparent_t': 11.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.8, 'dewpt': 8.7, 'gust_kmh': 17, 'gust_kt': 9, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/12:00pm', 'local_date_time_full': '20170513120000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.8, 'press_msl': 1024.8, 'press_qnh': 1024.8, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 69, 'sea_state': '-', 'sort_order': 107, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 11, 'wind_spd_kt': 6, 'wmo': 95936}, {'aifstime_utc': '20170513013000', 'air_temp': 14.3, 'apparent_t': 12.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.8, 'dewpt': 8.7, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/11:30am', 'local_date_time_full': '20170513113000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.1, 'press_msl': 1025.1, 'press_qnh': 1025.1, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 69, 'sea_state': '-', 'sort_order': 108, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170513010000', 'air_temp': 14.3, 'apparent_t': 12.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.7, 'dewpt': 8.9, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/11:00am', 'local_date_time_full': '20170513110000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.4, 'press_msl': 1025.4, 'press_qnh': 1025.4, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 70, 'sea_state': '-', 'sort_order': 109, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513003000', 'air_temp': 14.1, 'apparent_t': 12.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 9.3, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/10:30am', 'local_date_time_full': '20170513103000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.6, 'press_msl': 1025.6, 'press_qnh': 1025.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 73, 'sea_state': '-', 'sort_order': 110, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170513000000', 'air_temp': 13.3, 'apparent_t': 11.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 8.4, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/10:00am', 'local_date_time_full': '20170513100000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.6, 'press_msl': 1025.6, 'press_qnh': 1025.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 72, 'sea_state': '-', 'sort_order': 111, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512233000', 'air_temp': 12.8, 'apparent_t': 11.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 8.5, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/09:30am', 'local_date_time_full': '20170513093000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.6, 'press_msl': 1025.6, 'press_qnh': 1025.6, 'press_tend': '-', 'rain_trace': '0.0', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 112, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512230000', 'air_temp': 12.2, 'apparent_t': 11.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.6, 'dewpt': 8.9, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/09:00am', 'local_date_time_full': '20170513090000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.6, 'press_msl': 1025.6, 'press_qnh': 1025.6, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 80, 'sea_state': '-', 'sort_order': 113, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170512223000', 'air_temp': 10.7, 'apparent_t': 10.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.6, 'dewpt': 9.5, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/08:30am', 'local_date_time_full': '20170513083000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.6, 'press_msl': 1025.6, 'press_qnh': 1025.6, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 92, 'sea_state': '-', 'sort_order': 114, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512220000', 'air_temp': 9.1, 'apparent_t': 8.4, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.2, 'dewpt': 8.6, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/08:00am', 'local_date_time_full': '20170513080000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.5, 'press_msl': 1025.5, 'press_qnh': 1025.5, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 97, 'sea_state': '-', 'sort_order': 115, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512213000', 'air_temp': 8.6, 'apparent_t': 8.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.4, 'dewpt': 7.8, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/07:30am', 'local_date_time_full': '20170513073000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.3, 'press_msl': 1025.3, 'press_qnh': 1025.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 95, 'sea_state': '-', 'sort_order': 116, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512210000', 'air_temp': 8.7, 'apparent_t': 8.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.4, 'dewpt': 7.8, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/07:00am', 'local_date_time_full': '20170513070000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.1, 'press_msl': 1025.1, 'press_qnh': 1025.1, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 94, 'sea_state': '-', 'sort_order': 117, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512203000', 'air_temp': 9.2, 'apparent_t': 8.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.5, 'dewpt': 8.1, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/06:30am', 'local_date_time_full': '20170513063000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.9, 'press_msl': 1024.9, 'press_qnh': 1024.9, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 93, 'sea_state': '-', 'sort_order': 118, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512200000', 'air_temp': 9.3, 'apparent_t': 8.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 0.8, 'dewpt': 7.7, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/06:00am', 'local_date_time_full': '20170513060000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.8, 'press_msl': 1024.8, 'press_qnh': 1024.8, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 90, 'sea_state': '-', 'sort_order': 119, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512193000', 'air_temp': 10.0, 'apparent_t': 9.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.1, 'dewpt': 7.8, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/05:30am', 'local_date_time_full': '20170513053000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.7, 'press_msl': 1024.7, 'press_qnh': 1024.7, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 86, 'sea_state': '-', 'sort_order': 120, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512190000', 'air_temp': 10.4, 'apparent_t': 9.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.2, 'dewpt': 7.8, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/05:00am', 'local_date_time_full': '20170513050000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.6, 'press_msl': 1024.6, 'press_qnh': 1024.6, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 84, 'sea_state': '-', 'sort_order': 121, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512183000', 'air_temp': 10.7, 'apparent_t': 10.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.5, 'dewpt': 7.6, 'gust_kmh': 0, 'gust_kt': 0, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/04:30am', 'local_date_time_full': '20170513043000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.4, 'press_msl': 1024.4, 'press_qnh': 1024.4, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 81, 'sea_state': '-', 'sort_order': 122, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512180000', 'air_temp': 11.1, 'apparent_t': 10.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.7, 'dewpt': 7.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/04:00am', 'local_date_time_full': '20170513040000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.3, 'press_msl': 1024.3, 'press_qnh': 1024.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 79, 'sea_state': '-', 'sort_order': 123, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512173000', 'air_temp': 11.4, 'apparent_t': 10.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.7, 'dewpt': 7.9, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/03:30am', 'local_date_time_full': '20170513033000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.3, 'press_msl': 1024.3, 'press_qnh': 1024.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 79, 'sea_state': '-', 'sort_order': 124, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512170000', 'air_temp': 11.7, 'apparent_t': 10.1, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.9, 'dewpt': 7.8, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/03:00am', 'local_date_time_full': '20170513030000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.2, 'press_msl': 1024.2, 'press_qnh': 1024.2, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 125, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512163000', 'air_temp': 11.8, 'apparent_t': 10.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.9, 'dewpt': 7.9, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/02:30am', 'local_date_time_full': '20170513023000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.4, 'press_msl': 1024.4, 'press_qnh': 1024.4, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 126, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512160000', 'air_temp': 11.9, 'apparent_t': 11.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 7.8, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/02:00am', 'local_date_time_full': '20170513020000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.6, 'press_msl': 1024.6, 'press_qnh': 1024.6, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 127, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512153000', 'air_temp': 12.1, 'apparent_t': 10.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 8.0, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/01:30am', 'local_date_time_full': '20170513013000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.7, 'press_msl': 1024.7, 'press_qnh': 1024.7, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 128, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512150000', 'air_temp': 12.3, 'apparent_t': 11.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.9, 'dewpt': 8.4, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/01:00am', 'local_date_time_full': '20170513010000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.9, 'press_msl': 1024.9, 'press_qnh': 1024.9, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 129, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WNW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512143000', 'air_temp': 12.5, 'apparent_t': 11.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 1.9, 'dewpt': 8.6, 'gust_kmh': 6, 'gust_kt': 3, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/12:30am', 'local_date_time_full': '20170513003000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.1, 'press_msl': 1025.1, 'press_qnh': 1025.1, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 130, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WNW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512140000', 'air_temp': 12.7, 'apparent_t': 11.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.0, 'dewpt': 8.6, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '13/12:00am', 'local_date_time_full': '20170513000000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.2, 'press_msl': 1025.2, 'press_qnh': 1025.2, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 131, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170512133000', 'air_temp': 12.8, 'apparent_t': 10.8, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 8.5, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/11:30pm', 'local_date_time_full': '20170512233000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.3, 'press_msl': 1025.3, 'press_qnh': 1025.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 132, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170512130000', 'air_temp': 12.9, 'apparent_t': 11.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 8.6, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/11:00pm', 'local_date_time_full': '20170512230000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.3, 'press_msl': 1025.3, 'press_qnh': 1025.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 133, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 7, 'wind_spd_kt': 4, 'wmo': 95936}, {'aifstime_utc': '20170512123000', 'air_temp': 13.4, 'apparent_t': 12.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 8.7, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/10:30pm', 'local_date_time_full': '20170512223000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.5, 'press_msl': 1025.5, 'press_qnh': 1025.5, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 73, 'sea_state': '-', 'sort_order': 134, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'W', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512120000', 'air_temp': 13.6, 'apparent_t': 12.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.4, 'dewpt': 8.7, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/10:00pm', 'local_date_time_full': '20170512220000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.5, 'press_msl': 1025.5, 'press_qnh': 1025.5, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 72, 'sea_state': '-', 'sort_order': 135, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 2, 'wind_spd_kt': 1, 'wmo': 95936}, {'aifstime_utc': '20170512113000', 'air_temp': 13.7, 'apparent_t': 12.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.5, 'dewpt': 8.7, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/09:30pm', 'local_date_time_full': '20170512213000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.3, 'press_msl': 1025.3, 'press_qnh': 1025.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 72, 'sea_state': '-', 'sort_order': 136, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512110000', 'air_temp': 13.6, 'apparent_t': 13.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 9.5, 'gust_kmh': 7, 'gust_kt': 4, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/09:00pm', 'local_date_time_full': '20170512210000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.2, 'press_msl': 1025.2, 'press_qnh': 1025.2, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 137, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'CALM', 'wind_spd_kmh': 0, 'wind_spd_kt': 0, 'wmo': 95936}, {'aifstime_utc': '20170512103000', 'air_temp': 13.8, 'apparent_t': 12.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 9.8, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/08:30pm', 'local_date_time_full': '20170512203000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1025.0, 'press_msl': 1025.0, 'press_qnh': 1025.0, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 138, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512100000', 'air_temp': 14.3, 'apparent_t': 13.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.2, 'dewpt': 10.1, 'gust_kmh': 9, 'gust_kt': 5, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/08:00pm', 'local_date_time_full': '20170512200000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.9, 'press_msl': 1024.9, 'press_qnh': 1024.9, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 76, 'sea_state': '-', 'sort_order': 139, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'WSW', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170512093000', 'air_temp': 14.7, 'apparent_t': 13.7, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.3, 'dewpt': 10.3, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/07:30pm', 'local_date_time_full': '20170512193000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.7, 'press_msl': 1024.7, 'press_qnh': 1024.7, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 140, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512090000', 'air_temp': 14.8, 'apparent_t': 14.2, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.3, 'dewpt': 10.4, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/07:00pm', 'local_date_time_full': '20170512190000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.4, 'press_msl': 1024.4, 'press_qnh': 1024.4, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 141, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170512083000', 'air_temp': 15.0, 'apparent_t': 14.3, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.6, 'dewpt': 10.0, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/06:30pm', 'local_date_time_full': '20170512183000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1024.1, 'press_msl': 1024.1, 'press_qnh': 1024.1, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 72, 'sea_state': '-', 'sort_order': 142, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 4, 'wind_spd_kt': 2, 'wmo': 95936}, {'aifstime_utc': '20170512080000', 'air_temp': 15.2, 'apparent_t': 13.9, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 11.2, 'gust_kmh': 20, 'gust_kt': 11, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/06:00pm', 'local_date_time_full': '20170512180000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.8, 'press_msl': 1023.8, 'press_qnh': 1023.8, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 143, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SW', 'wind_spd_kmh': 9, 'wind_spd_kt': 5, 'wmo': 95936}, {'aifstime_utc': '20170512073000', 'air_temp': 15.3, 'apparent_t': 14.6, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.1, 'dewpt': 11.3, 'gust_kmh': 11, 'gust_kt': 6, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/05:30pm', 'local_date_time_full': '20170512173000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.5, 'press_msl': 1023.5, 'press_qnh': 1023.5, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 77, 'sea_state': '-', 'sort_order': 144, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512070000', 'air_temp': 15.3, 'apparent_t': 14.5, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.3, 'dewpt': 10.9, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/05:00pm', 'local_date_time_full': '20170512170000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.3, 'press_msl': 1023.3, 'press_qnh': 1023.3, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 75, 'sea_state': '-', 'sort_order': 145, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}, {'aifstime_utc': '20170512063000', 'air_temp': 15.9, 'apparent_t': 15.0, 'cloud': '-', 'cloud_base_m': None, 'cloud_oktas': None, 'cloud_type': '-', 'cloud_type_id': None, 'delta_t': 2.8, 'dewpt': 10.7, 'gust_kmh': 13, 'gust_kt': 7, 'history_product': 'IDV60901', 'lat': -37.8, 'local_date_time': '12/04:30pm', 'local_date_time_full': '20170512163000', 'lon': 145.0, 'name': 'Melbourne (Olympic Park)', 'press': 1023.1, 'press_msl': 1023.1, 'press_qnh': 1023.1, 'press_tend': '-', 'rain_trace': '0.2', 'rel_hum': 71, 'sea_state': '-', 'sort_order': 146, 'swell_dir_worded': '-', 'swell_height': None, 'swell_period': None, 'vis_km': '10', 'weather': '-', 'wind_dir': 'SSW', 'wind_spd_kmh': 6, 'wind_spd_kt': 3, 'wmo': 95936}]
data = pd.DataFrame(data['observations']['data'])
data
aifstime_utc | air_temp | apparent_t | cloud | cloud_base_m | cloud_oktas | cloud_type | cloud_type_id | delta_t | dewpt | ... | sort_order | swell_dir_worded | swell_height | swell_period | vis_km | weather | wind_dir | wind_spd_kmh | wind_spd_kt | wmo | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 20170515053000 | 14.7 | 13.7 | - | None | None | - | None | 2.0 | 10.9 | ... | 0 | - | None | None | 10 | - | S | 7 | 4 | 95936 |
1 | 20170515050000 | 15.4 | 14.0 | - | None | None | - | None | 2.4 | 10.8 | ... | 1 | - | None | None | 10 | - | S | 9 | 5 | 95936 |
2 | 20170515043000 | 16.7 | 16.7 | - | None | None | - | None | 3.1 | 11.0 | ... | 2 | - | None | None | 10 | - | NNW | 2 | 1 | 95936 |
3 | 20170515040000 | 15.4 | 14.9 | - | None | None | - | None | 2.5 | 10.6 | ... | 3 | - | None | None | 10 | - | NNW | 4 | 2 | 95936 |
4 | 20170515033000 | 14.5 | 14.3 | - | None | None | - | None | 2.1 | 10.5 | ... | 4 | - | None | None | 10 | - | NNE | 2 | 1 | 95936 |
5 | 20170515030000 | 13.4 | 12.8 | - | None | None | - | None | 1.6 | 10.4 | ... | 5 | - | None | None | 10 | - | W | 4 | 2 | 95936 |
6 | 20170515023000 | 13.0 | 12.7 | - | None | None | - | None | 1.4 | 10.2 | ... | 6 | - | None | None | 10 | - | NNE | 2 | 1 | 95936 |
7 | 20170515020000 | 12.2 | 11.2 | - | None | None | - | None | 1.0 | 10.3 | ... | 7 | - | None | None | 10 | - | NNE | 6 | 3 | 95936 |
8 | 20170515013000 | 11.3 | 11.1 | - | None | None | - | None | 0.5 | 10.4 | ... | 8 | - | None | None | 10 | - | SE | 2 | 1 | 95936 |
9 | 20170515010000 | 10.7 | 10.6 | - | None | None | - | None | 0.0 | 10.7 | ... | 9 | - | None | None | 10 | - | NE | 2 | 1 | 95936 |
10 | 20170515003000 | 10.3 | 10.1 | - | None | None | - | None | 0.0 | 10.3 | ... | 10 | - | None | None | 10 | - | ENE | 2 | 1 | 95936 |
11 | 20170515000000 | 9.4 | 9.3 | - | None | None | - | None | 0.0 | 9.4 | ... | 11 | - | None | None | 9 | - | CALM | 0 | 0 | 95936 |
12 | 20170514235800 | 9.5 | 9.4 | - | None | None | - | None | 0.0 | 9.5 | ... | 12 | - | None | None | 9 | - | CALM | 0 | 0 | 95936 |
13 | 20170514233000 | 8.5 | 6.8 | - | None | None | - | None | 0.0 | 8.5 | ... | 13 | - | None | None | 6 | - | NE | 7 | 4 | 95936 |
14 | 20170514230000 | 7.9 | 6.3 | - | None | None | - | None | 0.0 | 7.9 | ... | 14 | - | None | None | 2 | - | NNE | 6 | 3 | 95936 |
15 | 20170514223000 | 7.2 | 5.2 | - | None | None | - | None | 0.0 | 7.2 | ... | 15 | - | None | None | 0.7 | - | NE | 7 | 4 | 95936 |
16 | 20170514220000 | 7.0 | 5.0 | - | None | None | - | None | 0.0 | 7.0 | ... | 16 | - | None | None | 0.5 | - | NNE | 7 | 4 | 95936 |
17 | 20170514213000 | 6.8 | 4.7 | - | None | None | - | None | 0.0 | 6.8 | ... | 17 | - | None | None | 0.5 | - | NNE | 7 | 4 | 95936 |
18 | 20170514210000 | 6.9 | 4.9 | - | None | None | - | None | 0.0 | 6.9 | ... | 18 | - | None | None | 0.2 | - | N | 7 | 4 | 95936 |
19 | 20170514203000 | 6.9 | 5.0 | - | None | None | - | None | 0.0 | 6.8 | ... | 19 | - | None | None | 1 | - | NNE | 6 | 3 | 95936 |
20 | 20170514202600 | 6.9 | 5.0 | - | None | None | - | None | 0.0 | 6.8 | ... | 20 | - | None | None | 6 | - | NNE | 6 | 3 | 95936 |
21 | 20170514200000 | 6.5 | 4.5 | - | None | None | - | None | 0.0 | 6.4 | ... | 21 | - | None | None | 10 | - | NNE | 6 | 3 | 95936 |
22 | 20170514193000 | 6.8 | 6.1 | - | None | None | - | None | 0.0 | 6.8 | ... | 22 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
23 | 20170514190100 | 6.7 | 5.2 | - | None | None | - | None | 0.0 | 6.7 | ... | 23 | - | None | None | 10 | - | NNE | 4 | 2 | 95936 |
24 | 20170514190000 | 6.7 | 5.2 | - | None | None | - | None | 0.0 | 6.7 | ... | 24 | - | None | None | 9 | - | NNE | 4 | 2 | 95936 |
25 | 20170514183000 | 6.6 | 5.8 | - | None | None | - | None | 0.0 | 6.6 | ... | 25 | - | None | None | 4 | - | CALM | 0 | 0 | 95936 |
26 | 20170514180000 | 6.9 | 6.2 | - | None | None | - | None | 0.0 | 6.9 | ... | 26 | - | None | None | 5 | - | CALM | 0 | 0 | 95936 |
27 | 20170514173000 | 7.2 | 6.6 | - | None | None | - | None | 0.0 | 7.2 | ... | 27 | - | None | None | 5 | - | CALM | 0 | 0 | 95936 |
28 | 20170514170000 | 7.6 | 6.3 | - | None | None | - | None | 0.0 | 7.6 | ... | 28 | - | None | None | 7 | - | E | 4 | 2 | 95936 |
29 | 20170514163000 | 7.4 | 6.8 | - | None | None | - | None | 0.0 | 7.4 | ... | 29 | - | None | None | 4 | - | CALM | 0 | 0 | 95936 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
117 | 20170512210000 | 8.7 | 8.2 | - | None | None | - | None | 0.4 | 7.8 | ... | 117 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
118 | 20170512203000 | 9.2 | 8.8 | - | None | None | - | None | 0.5 | 8.1 | ... | 118 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
119 | 20170512200000 | 9.3 | 8.8 | - | None | None | - | None | 0.8 | 7.7 | ... | 119 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
120 | 20170512193000 | 10.0 | 9.5 | - | None | None | - | None | 1.1 | 7.8 | ... | 120 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
121 | 20170512190000 | 10.4 | 9.5 | - | None | None | - | None | 1.2 | 7.8 | ... | 121 | - | None | None | 10 | - | SW | 2 | 1 | 95936 |
122 | 20170512183000 | 10.7 | 10.1 | - | None | None | - | None | 1.5 | 7.6 | ... | 122 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
123 | 20170512180000 | 11.1 | 10.2 | - | None | None | - | None | 1.7 | 7.6 | ... | 123 | - | None | None | 10 | - | WSW | 2 | 1 | 95936 |
124 | 20170512173000 | 11.4 | 10.5 | - | None | None | - | None | 1.7 | 7.9 | ... | 124 | - | None | None | 10 | - | W | 2 | 1 | 95936 |
125 | 20170512170000 | 11.7 | 10.1 | - | None | None | - | None | 1.9 | 7.8 | ... | 125 | - | None | None | 10 | - | W | 6 | 3 | 95936 |
126 | 20170512163000 | 11.8 | 10.9 | - | None | None | - | None | 1.9 | 7.9 | ... | 126 | - | None | None | 10 | - | W | 2 | 1 | 95936 |
127 | 20170512160000 | 11.9 | 11.0 | - | None | None | - | None | 2.0 | 7.8 | ... | 127 | - | None | None | 10 | - | WSW | 2 | 1 | 95936 |
128 | 20170512153000 | 12.1 | 10.5 | - | None | None | - | None | 2.0 | 8.0 | ... | 128 | - | None | None | 10 | - | W | 6 | 3 | 95936 |
129 | 20170512150000 | 12.3 | 11.6 | - | None | None | - | None | 1.9 | 8.4 | ... | 129 | - | None | None | 10 | - | WNW | 2 | 1 | 95936 |
130 | 20170512143000 | 12.5 | 11.8 | - | None | None | - | None | 1.9 | 8.6 | ... | 130 | - | None | None | 10 | - | WNW | 2 | 1 | 95936 |
131 | 20170512140000 | 12.7 | 11.6 | - | None | None | - | None | 2.0 | 8.6 | ... | 131 | - | None | None | 10 | - | WSW | 4 | 2 | 95936 |
132 | 20170512133000 | 12.8 | 10.8 | - | None | None | - | None | 2.1 | 8.5 | ... | 132 | - | None | None | 10 | - | W | 9 | 5 | 95936 |
133 | 20170512130000 | 12.9 | 11.3 | - | None | None | - | None | 2.1 | 8.6 | ... | 133 | - | None | None | 10 | - | WSW | 7 | 4 | 95936 |
134 | 20170512123000 | 13.4 | 12.0 | - | None | None | - | None | 2.4 | 8.7 | ... | 134 | - | None | None | 10 | - | W | 6 | 3 | 95936 |
135 | 20170512120000 | 13.6 | 12.9 | - | None | None | - | None | 2.4 | 8.7 | ... | 135 | - | None | None | 10 | - | WSW | 2 | 1 | 95936 |
136 | 20170512113000 | 13.7 | 12.3 | - | None | None | - | None | 2.5 | 8.7 | ... | 136 | - | None | None | 10 | - | SSW | 6 | 3 | 95936 |
137 | 20170512110000 | 13.6 | 13.5 | - | None | None | - | None | 2.1 | 9.5 | ... | 137 | - | None | None | 10 | - | CALM | 0 | 0 | 95936 |
138 | 20170512103000 | 13.8 | 12.7 | - | None | None | - | None | 2.1 | 9.8 | ... | 138 | - | None | None | 10 | - | WSW | 6 | 3 | 95936 |
139 | 20170512100000 | 14.3 | 13.6 | - | None | None | - | None | 2.2 | 10.1 | ... | 139 | - | None | None | 10 | - | WSW | 4 | 2 | 95936 |
140 | 20170512093000 | 14.7 | 13.7 | - | None | None | - | None | 2.3 | 10.3 | ... | 140 | - | None | None | 10 | - | SW | 6 | 3 | 95936 |
141 | 20170512090000 | 14.8 | 14.2 | - | None | None | - | None | 2.3 | 10.4 | ... | 141 | - | None | None | 10 | - | SW | 4 | 2 | 95936 |
142 | 20170512083000 | 15.0 | 14.3 | - | None | None | - | None | 2.6 | 10.0 | ... | 142 | - | None | None | 10 | - | SW | 4 | 2 | 95936 |
143 | 20170512080000 | 15.2 | 13.9 | - | None | None | - | None | 2.1 | 11.2 | ... | 143 | - | None | None | 10 | - | SW | 9 | 5 | 95936 |
144 | 20170512073000 | 15.3 | 14.6 | - | None | None | - | None | 2.1 | 11.3 | ... | 144 | - | None | None | 10 | - | SSW | 6 | 3 | 95936 |
145 | 20170512070000 | 15.3 | 14.5 | - | None | None | - | None | 2.3 | 10.9 | ... | 145 | - | None | None | 10 | - | SSW | 6 | 3 | 95936 |
146 | 20170512063000 | 15.9 | 15.0 | - | None | None | - | None | 2.8 | 10.7 | ... | 146 | - | None | None | 10 | - | SSW | 6 | 3 | 95936 |
147 rows × 35 columns
Example of XML available from BoM: Forecasts for Melbourne area http://www.bom.gov.au/fwo/IDV10450.xml
!curl http://www.bom.gov.au/fwo/IDV10450.xml -O
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 13031 100 13031 0 0 23629 0 --:--:-- --:--:-- --:--:-- 23606
# You may need to install libxml first. If on a mac with homebrew, uncomment and run the following
#!brew install libxml2
#!brew install libxslt
#!brew link libxml2 --force
#!brew link libxslt --force
import xml.etree.ElementTree as ET
from lxml import etree
import pandas as pd
xml_data = 'IDV10450.xml'
tree = ET.parse(xml_data)
root = tree.getroot()
fcs = [] #forecasts data to turn into a dataframe
for forecast in root.iter('forecast'):
for area in forecast.iter('area'):
if area.attrib['type'] == 'region': continue
#print ("Processing", area.attrib['description'])
for period in area.iter('forecast-period'):
fc = {}
fc['type'] = area.attrib['type']
fc['location'] = area.attrib['description']
for attr in period.attrib:
fc[attr] = period.attrib[attr]
for text in period.iter('text'):
fc[text.attrib['type']] = text.text
fcs.append(fc)
data = pd.DataFrame(fcs)
data
end-time-local | end-time-utc | forecast | index | location | precis | probability_of_precipitation | start-time-local | start-time-utc | type | uv_alert | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | Partly cloudy. Areas of morning fog. Slight (2... | 0 | Melbourne | NaN | NaN | 2017-05-15T00:00:00+10:00 | 2017-05-14T14:00:00Z | metropolitan | Sun protection not recommended, UV Index predi... |
1 | 2017-05-17T00:00:00+10:00 | 2017-05-16T14:00:00Z | Partly cloudy. Areas of fog in the morning. Li... | 1 | Melbourne | NaN | NaN | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | metropolitan | NaN |
2 | 2017-05-18T00:00:00+10:00 | 2017-05-17T14:00:00Z | Areas of morning fog. Cloudy. Slight (30%) cha... | 2 | Melbourne | NaN | NaN | 2017-05-17T00:00:00+10:00 | 2017-05-16T14:00:00Z | metropolitan | NaN |
3 | 2017-05-19T00:00:00+10:00 | 2017-05-18T14:00:00Z | Areas of morning fog. Partly cloudy. Light win... | 3 | Melbourne | NaN | NaN | 2017-05-18T00:00:00+10:00 | 2017-05-17T14:00:00Z | metropolitan | NaN |
4 | 2017-05-20T00:00:00+10:00 | 2017-05-19T14:00:00Z | Areas of morning fog. Cloudy. Medium (60%) cha... | 4 | Melbourne | NaN | NaN | 2017-05-19T00:00:00+10:00 | 2017-05-18T14:00:00Z | metropolitan | NaN |
5 | 2017-05-21T00:00:00+10:00 | 2017-05-20T14:00:00Z | Cloudy. High (80%) chance of rain. Winds easte... | 5 | Melbourne | NaN | NaN | 2017-05-20T00:00:00+10:00 | 2017-05-19T14:00:00Z | metropolitan | NaN |
6 | 2017-05-22T00:00:00+10:00 | 2017-05-21T14:00:00Z | Partly cloudy. Slight (30%) chance of a shower... | 6 | Melbourne | NaN | NaN | 2017-05-21T00:00:00+10:00 | 2017-05-20T14:00:00Z | metropolitan | NaN |
7 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Melbourne | Cloudy. | 10% | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
8 | 2017-05-17T00:00:00+10:00 | 2017-05-16T14:00:00Z | NaN | 1 | Melbourne | Partly cloudy. | 5% | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | location | NaN |
9 | 2017-05-18T00:00:00+10:00 | 2017-05-17T14:00:00Z | NaN | 2 | Melbourne | Possible shower. | 30% | 2017-05-17T00:00:00+10:00 | 2017-05-16T14:00:00Z | location | NaN |
10 | 2017-05-19T00:00:00+10:00 | 2017-05-18T14:00:00Z | NaN | 3 | Melbourne | Partly cloudy. | 10% | 2017-05-18T00:00:00+10:00 | 2017-05-17T14:00:00Z | location | NaN |
11 | 2017-05-20T00:00:00+10:00 | 2017-05-19T14:00:00Z | NaN | 4 | Melbourne | Late rain. | 60% | 2017-05-19T00:00:00+10:00 | 2017-05-18T14:00:00Z | location | NaN |
12 | 2017-05-21T00:00:00+10:00 | 2017-05-20T14:00:00Z | NaN | 5 | Melbourne | Rain periods. | 80% | 2017-05-20T00:00:00+10:00 | 2017-05-19T14:00:00Z | location | NaN |
13 | 2017-05-22T00:00:00+10:00 | 2017-05-21T14:00:00Z | NaN | 6 | Melbourne | Possible shower. | 30% | 2017-05-21T00:00:00+10:00 | 2017-05-20T14:00:00Z | location | NaN |
14 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Geelong | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
15 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Laverton | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
16 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Tullamarine | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
17 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Scoresby | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
18 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Watsonia | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
19 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Mount Dandenong | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
20 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Yarra Glen | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
21 | 2017-05-16T00:00:00+10:00 | 2017-05-15T14:00:00Z | NaN | 0 | Frankston | NaN | NaN | 2017-05-15T05:00:00+10:00 | 2017-05-14T19:00:00Z | location | NaN |
There is also data like weather observations for the past 72 hours in XML format e.g. ftp://ftp.bom.gov.au/anon/gen/fwo/IDD65176.xml
e.g ftp://ftp.bom.gov.au/anon/gen/nwp/IDY00044.nc
#!conda install netCDF4 -y
!curl ftp://ftp.bom.gov.au/anon/gen/nwp/IDY00044.nc -O
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 766k 100 766k 0 0 211k 0 0:00:03 0:00:03 --:--:-- 211k
from netCDF4 import Dataset
rootgrp = Dataset("IDY00044.nc", "r", format="NETCDF4")
rootgrp
<class 'netCDF4._netCDF4.Dataset'> root group (NETCDF3_CLASSIC data model, file format NETCDF3): Conventions: CF-1.0 title: Analysed global low resolution blended 1m sea surface temperature DSD_entry_id: ABOM-L4LR1m-GLOB-v01 references: \nhttp://www.bom.gov.au/bmrc/ocean/BLUElink/SST/The_Bureau_of_Meteorology_SST_analysis_system.doc\nhttp://www.bom.gov.au/bmrc/ocean/BLUElink/SST/BLUElink_L4_file_format_v4.pdf GDS_data_centre: ABOM institution: Australian Bureau of Meteorology contact: G.Warren@bom.gov.au GDS_version_id: v1.0-rev1.7 netcdf_version_id: 4.1.3 of Aug 10 2011 04:46:23 $ creation_date: 2017-05-15 product_version: fv01 history: 2017/05/15 00:23:26 -00 : uarch2ghrsst.x /rtop/data/ocean//sstanal//SSTanal.14May2017 spatial_resolution: 1.0 degree start_date: 2017-05-08 start_time: 00:00:00 UTC stop_date: 2017-05-15 stop_time: 00:00:00 UTC southernmost_latitude: -89.5 northernmost_latitude: 89.5 westernmost_longitude: -179.5 easternmost_longitude: 179.5 software_version: L4 Processor v01 file_quality_index: 0 source_data: IN_SITU-GTS_BUOYS,IN_SITU-GTS_BATHY,IN_SITU-GTS_SHIP,IN_SITU-GTS_TESAC,NCEP-ICE comment: \nThis is a legacy research product run operationally at the Bureau.\nWARNING: some applications are unable to properly handle signed byte values.\nIf byte values >127 are encountered, subtract 256 from this reported value. uarch_file_id: SSTanal.14May2017 oi_scales: \nUnivariate Statistical Interpolation Package, SIANAL v13\nbackground correlation length scale = 250 km\nobservation correlation length scale = 80 km\nobservation correlation time scale = 2.0 days obsid_summary: \nIN_SITU-GTS_BUOYS nobs=138429 obsesd: avg=0.601 min=0.600 max= 0.600\nIN_SITU-GTS_BATHY nobs= 7321 obsesd: avg=0.600 min=0.600 max= 0.600\nIN_SITU-GTS_SHIP nobs= 89339 obsesd: avg=1.000 min=1.000 max= 1.000\nIN_SITU-GTS_TESAC nobs= 26775 obsesd: avg=1.000 min=1.000 max= 1.000\nUNKNOWN_SAT-OBS nobs=605603 obsesd: avg=0.750 min=0.750 max= 0.750 dimensions(sizes): lon(360), lat(180), time(1) variables(dimensions): float32 lon(lon), float32 lat(lat), int32 time(time), int16 analysed_sst(time,lat,lon), int16 analysis_error(time,lat,lon), int8 sea_ice_fraction(time,lat,lon), int8 mask(time,lat,lon), int16 sst_bgf(time,lat,lon), int16 bgf_error(time,lat,lon), int16 sst_clim(time,lat,lon) groups:
However, as I prefer a more pandas-like API into netcdf files (as well as other n-dimenional files), I use xarray whenever I can.
import xarray as xr
data = xr.open_dataset('CT2007B.molefrac.nc')
data
<xarray.Dataset> Dimensions: (lat: 45, level: 25, lon: 60, time: 1796) Coordinates: * time (time) datetime64[ns] 2000-01-01T12:00:00 2000-01-02T12:00:00 ... * lat (lat) float64 -88.0 -84.0 -80.0 -76.0 -72.0 -68.0 -64.0 -60.0 ... * level (level) int32 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ... * lon (lon) float64 -177.0 -171.0 -165.0 -159.0 -153.0 -147.0 -141.0 ... Data variables: pressure (time, level, lat, lon) float64 6.923e+04 6.926e+04 6.93e+04 ... co2 (time, level, lat, lon) float64 366.4 366.4 366.4 366.4 366.4 ... Attributes: source: CarbonTracker release CT2007B history: Mon Mar 15 11:53:20 2010: ncatted -O -a units,time,o,c,days since 2000-01-01 00:00:00 CT2007B.molefrac.nc Tue Jun 10 10:08:27 2008: /usr/bin/ncrcat -H -O ./ct07b2i_molefrac_glb6x4_2000_co2.nc Created on Tue Jun 10 2008 10:05:21 PDT by script 'Time-stamp: <mistral.cmdl.noaa.gov:/Users/andy/Projects/model/LAS/make_psd_sample.sh - 10 Jun 2008 (Tue) 10:49:53 MDT>' References: http://www.esrl.noaa.gov/psd/data/gridded/data.carbontracker.html nco_openmp_thread_number: 1 institution: NOAA Earth System Research Laboratory Conventions: CF-1.1 CT-runid: ct07b2i disclaimer: CarbonTracker is an open product of the NOAA Earth System Research Laboratory using data from the Global Monitoring Division greenhouse gas observational network and collaborating institutions. Results, including data, figures and tabular material found on the CarbonTracker website may be used for non-commercial purposes without restriction, but we request that the following acknowledgement text be included in documents or publications made using CarbonTracker results: CarbonTra... email: carbontracker.team@noaa.gov dataset_title: CarbonTracker CT2007B release url: http://carbontracker.noaa.gov
%matplotlib inline
import seaborn
import matplotlib.pyplot as plt
# New york lat lon 40.7128° N, 74.0059° W
co21d = data.isel(lat=0, lon=0,level=0)
## see http://xarray.pydata.org/en/stable/generated/xarray.Dataset.sel.html#xarray.Dataset.sel
co21d = data.sel(lat=-40., lon=-74,level=1, method='nearest')
co21d['co2']
<xarray.DataArray 'co2' (time: 1796)> array([ 364.61859131, 363.92672729, 365.13171387, ..., 376.46270752, 376.28167725, 375.97399902]) Coordinates: * time (time) datetime64[ns] 2000-01-01T12:00:00 2000-01-02T12:00:00 ... lat float64 -40.0 level int32 1 lon float64 -75.0 Attributes: long_name: mole_fraction_of_carbon_dioxide_in_air actual_range: [ 357.24996948 473.51940918] valid_range: [ 357.24996948 473.51940918] statistic: Analyzed Mean var_desc: CarbonTracker CO2 mole fraction parent_stat: Individual Obs dataset: CarbonTracker CT2007B release level_desc: Multiple levels units: micromol mol-1
co21d['co2'].plot()
[<matplotlib.lines.Line2D at 0x184a99cf8>]
Another module worth looking into if you are loading netcdf files is iris from the UK met office.
import iris
GRIB is the World Meteorological Organization (WMO) standard file format for the exchange of weather data. More information about this format can be found at https://en.wikipedia.org/wiki/GRIB
netCDF is easier to deal with, but most operational forecast centers provide data in GRIB format. GRIB is a record format, where every record is a 2D field. In this example we use pygrib to read some ECMWF ensemble forecast data, then use matplotlib and Basemap plot forecast maps. Pygrib uses the ECMWF GRIB_API C library under the hood.
ftp://ftp.cdc.noaa.gov/pub/Datasets/CarbonTracker/
Acknowledgement: CarbonTracker results provided by NOAA/ESRL Boulder, Colorado, USA, http://carbontracker.noaa.gov.
http://www.bom.gov.au/nwp/doc/access/NWPData.shtml
Example grib file ftp://ftp.bom.gov.au/anon/sample/adfd/IDV71000_VIC_T_SFC.grb
!curl ftp://ftp.bom.gov.au/anon/sample/adfd/IDV71000_VIC_T_SFC.grb -O
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 10.2M 100 10.2M 0 0 634k 0 0:00:16 0:00:16 --:--:-- 829k
#!conda install -c anaconda basemap=1.0.7 -y
#!conda update jpeg -y; conda update jasper -y
#!conda install -c conda-forge pygrib=2.0.2 "libgdal<2.0"
from mpl_toolkits.basemap import Basemap # import Basemap matplotlib toolkit
import numpy as np
import matplotlib.pyplot as plt
import pygrib # import pygrib interface to grib_api
grbs = pygrib.open('IDV71000_VIC_T_SFC.grb')
for grb in grbs[:10]:
print(grb)
#print(grbs[1].keys())
1:Temperature:K (instant):regular_ll:surface:level 0:fcst time 0 hrs:from 201203281800 2:Temperature:K (instant):regular_ll:surface:level 0:fcst time 1 hrs:from 201203281800 3:Temperature:K (instant):regular_ll:surface:level 0:fcst time 2 hrs:from 201203281800 4:Temperature:K (instant):regular_ll:surface:level 0:fcst time 3 hrs:from 201203281800 5:Temperature:K (instant):regular_ll:surface:level 0:fcst time 4 hrs:from 201203281800 6:Temperature:K (instant):regular_ll:surface:level 0:fcst time 5 hrs:from 201203281800 7:Temperature:K (instant):regular_ll:surface:level 0:fcst time 6 hrs:from 201203281800 8:Temperature:K (instant):regular_ll:surface:level 0:fcst time 7 hrs:from 201203281800 9:Temperature:K (instant):regular_ll:surface:level 0:fcst time 8 hrs:from 201203281800 10:Temperature:K (instant):regular_ll:surface:level 0:fcst time 9 hrs:from 201203281800
grbs.rewind() # rewind the iterator
t2mens = []
for grb in grbs:
t2mens.append(grb.values)
t2mens = np.array(t2mens)
print (t2mens.shape, t2mens.min(), t2mens.max())
lats, lons = grb.latlons() # get the lats and lons for the grid.
print ('min/max lat and lon',lats.min(), lats.max(), lons.min(), lons.max())
(169, 292, 341) 275.56 9999.0 min/max lat and lon -39.76 -33.94 140.902896 151.039184
## plot centred on Melbourne 37.8136° S, 144.9631° E
fig = plt.figure(figsize=(16,35))
m = Basemap(projection='lcc',lon_0=144,lat_0=-37,width=2.e6,height=2.e6)
x,y = m(lons,lats)
for nens in range(1,51):
ax = plt.subplot(10,5,nens)
m.drawcoastlines()
cs = m.contourf(x,y,t2mens[nens],np.linspace(230,300,41),cmap=plt.cm.jet,extend='both')
t = plt.title('ens member %s' % nens)
A good summary about this data format can be found at https://en.wikipedia.org/wiki/Esri_grid
This data format is available from BoM, for example, from the average rainfall conditions map http://www.bom.gov.au/jsp/awap/rain/index.jsp you can download the grid.
You can load this into numpy with genfromtxt()
import numpy as np
data = np.genfromtxt('latest.grid.txt',skip_header=6, skip_footer=18)
data
array([[ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], ..., [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.]])
It's important to note that the origin (0,0) of this file is actually the bottom left corner, so you can use the numpy flip
methods to allow indexing from the top left if that is where you are basing your indexing.
More references: