Loading meteorological data formats

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.

Where to find meteorological data

  • www.bom.gov.au
  • ftp://ftp.bom.gov.au/
  • AWS Public datasets
  • NZ met office
  • NOAA data
  • UK met office
  • Europe met offices
  • data.gov.au

Data formats used for meteorological data

  • Flat files
  • Excel files
  • JSON
  • XML
  • NetCDF
  • grib
  • Arc Ascii grid

Flat files

  • each row is a unique observation or record, containing one item of information
  • each column is a feature or attribute
  • text files containing records
  • table data without structured relationships (unlike relational database tables)
  • can have a header
  • file extension can be csv ("comma separated values"), but not always. e.g. .txt
  • the field separator might not be a comma e.g. it could be a tab (tab-delimited file)

Importing flat files examples

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:

Lets 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

In [7]:
!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
In [15]:
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
Out[15]:
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.]])
In [13]:
%matplotlib inline
import matplotlib.pyplot as plt
plt.imshow(data, cmap='Blues', interpolation='nearest')
Out[13]:
<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.

In [16]:
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.

In [21]:
!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
In [22]:
!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:

  • it has a header row
  • it has a mix of string an numerical data. There is also date and time in there
  • We are probably not interested in all of these columns. We don't care about the product code, for example.
  • the datetime is not ISO, just to be annoying, and sometimes this means you'll have to specify a date parser
In [43]:
dateparse = lambda x: pd.datetime.strptime(x, '%Y%m%d%H%M%S')
In [72]:
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
Out[72]:
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

In [80]:
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
Out[80]:
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]
In [89]:
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
Out[89]:
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

In [90]:
data.plot()
Out[90]:
<matplotlib.axes._subplots.AxesSubplot at 0x115eade48>

A daily rainfall file from http://www.bom.gov.au/climate/data/

In [117]:
!head -10 IDCJAC0009_086338_1800_Data.csv








In [125]:
pd.read_csv('IDCJAC0009_086338_1800_Data.csv',usecols=[2,3,4,5,6],parse_dates=[[0,1,2]])
Out[125]:
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

In [101]:
!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
In [112]:
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}]
In [111]:
data = pd.DataFrame(data['observations']['data'])
data
Out[111]:
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

XML

Example of XML available from BoM: Forecasts for Melbourne area http://www.bom.gov.au/fwo/IDV10450.xml

In [58]:
!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
In [ ]:
# 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
In [62]:
import xml.etree.ElementTree as ET
from lxml import etree
import pandas as pd
In [92]:
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
 
Out[92]:
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

NetCDF

e.g ftp://ftp.bom.gov.au/anon/gen/nwp/IDY00044.nc

In [93]:
#!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
In [94]:
from netCDF4 import Dataset
rootgrp = Dataset("IDY00044.nc", "r", format="NETCDF4")
In [97]:
rootgrp
Out[97]:
<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: [email protected]
    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.

In [98]:
import xarray as xr
In [9]:
data = xr.open_dataset('CT2007B.molefrac.nc')
data
Out[9]:
<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: [email protected]
    dataset_title: CarbonTracker CT2007B release
    url: http://carbontracker.noaa.gov
In [22]:
%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']
Out[22]:
<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
In [25]:
co21d['co2'].plot()
Out[25]:
[<matplotlib.lines.Line2D at 0x184a99cf8>]

Another module worth looking into if you are loading netcdf files is iris from the UK met office.

In [95]:
import iris

grib

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

In [28]:
!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
In [104]:
#!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"
In [27]:
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
In [29]:
grbs = pygrib.open('IDV71000_VIC_T_SFC.grb')
In [57]:
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
In [53]:
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
In [56]:
## 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)

Arc Ascii grid

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()

In [115]:
import numpy as np
data = np.genfromtxt('latest.grid.txt',skip_header=6, skip_footer=18)
data
Out[115]:
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.