author: Jess Robertson (@jesserobertson)
The BoM, in it's wisdom, have made getting their geospatial data fairly difficult. This package aims to fix that
To see this readme as an ipython notebook, check out https://github.com/jesserobertson/bomber/blob/master/examples/request_bom_data.ipynb
Easiest way is using pip: pip install bomber
. You'll need to have GDAL installed (Linux and Mac fellows can get it through homebrew/apt/yum/their package manager of choice, Windows peeps can find binaries online).
If you want to install by hand (using python setup.py install
) you'll need rasterio, requests and numpy.
Check out the measurement/observation datasets that we have available:
>>> import bomber
>>> print(bomber.measurements.DATASETS)
{'ndvi': ['ndviave'],
'rainfall': ['totals'],
'solar': ['solarave'],
'temperature': ['maxave', 'minave'],
'vprp': ['vprp09', 'vprp15']}
Then we can get the bit that we want as a geotiff:
>>> geotiff = bomber.get_measurements(dataset='rainfall', year=2015, month=1)
Downloaded data to rainfall_totals_month_2015010120150131.geotiff
and then plot it using rasterio
>>> import rasterio, numpy
>>> import matplotlib.pyplot as plt
>>> with rasterio.drivers():
... with rasterio.open(geotiff) as src:
... fig = plt.figure(figsize=(11, 11))
... data = numpy.ma.MaskedArray(
... data=src.read(1),
... mask=src.read_masks(1))
... ax = fig.gca()
... ax.imshow(data, cmap=plt.get_cmap('coolwarm'))
... ax.set_aspect('equal')
... ax.set_axis_off()
... ax.set_title('Rainfall, January 2015')
You can also get the climatic average datasets as well:
>>> print(bomber.climate.DATASETS)
{'decadal-rainfall': ['r'], 'decadal-temperature': ['mx', 'mn']}
There's also a borked version for the climate regions but I'm too lazy to finish that one. Pull requests welcome!