Add usage examples to readme

master
Dan Howe 7 years ago
parent 9b36d4178d
commit 89c60a9e8d

@ -4,7 +4,141 @@ Scientific Information for Land Owners (SILO) is a database of Australian climat
https://silo.longpaddock.qld.gov.au
The climate variables are:
There are two different data types:
#### Point data:
Get multiple climate variables at a single point (accessible with this python module).
#### Gridded data:
Get a single climate variable for the entire Australian continent (accessible on the SILO website).
## Point data ##
### Installation ###
```
git clone http://git.wrl.unsw.edu.au:3000/danh/silo.git
pip install -e silo
```
## Usage ##
```python
import silo
variables = ['daily_rain', 'max_temp', 'min_temp']
api_key = 'BcfJnotlnVgX9gyLmZh2dURqNH8xAD3m8Am7V9OY'
start = '18990101'
finish = '20180101'
lat = -33
lon = 151
silo.pointdata(variables, api_key, start, finish, lat=lat, lon=lon,
output='silo-data.csv')
```
**silo-data.csv**
| date | latitude | longitude | daily_rain_mm | daily_rain_source | max_temp_Celsius | max_temp_source | min_temp_Celsius | min_temp_source |
|------------------------|----------|-----------|---------------|-------------------|------------------|-----------------|------------------|-----------------|
| 1899-01-01 | -33 | 151 | 0.9 | 24 | 31.4 | 35 | 14.8 | 35 |
| 1899-01-02 | -33 | 151 | 0 | 24 | 30.1 | 35 | 18.3 | 35 |
| 1899-01-03 | -33 | 151 | 0 | 24 | 33.3 | 35 | 14.3 | 35 |
| ... | | | | | | | | |
## Gridded data ##
Gridded datasets are available here:
https://silo.longpaddock.qld.gov.au/gridded-data
### Example: generate timeseries at specific location ###
```python
import xarray as xr
import pandas as pd
import calendar
import matplotlib.pyplot as plt
# Open netcdf dataset
fname = '2000.monthly_rain.nc'
ds = xr.open_dataset(fname)
# Convert to pandas dataframe
df = ds.to_dataframe().drop(columns=['crs'])
# Set coordinates
lat = -33.75
lon = 151.25
# Create temporary dataframe at specific location
df1 = df.loc[lat, lon]
# Plot time series
fig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.plot(df1.index, df1.values)
# Tidy up figure
ax.set_xticks(df1.index)
ax.set_xticklabels([calendar.month_abbr[i] for i in df1.index.month])
ax.set_ylabel('Rainfall (mm)', labelpad=10)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.show()
```
<img src="doc/gridded-timeseries-demo.png" width=500px>
### Example: generate maps at specific dates ###
```python
import xarray as xr
import pandas as pd
import calendar
import matplotlib.pyplot as plt
# Open netcdf dataset
fname = '2000.monthly_rain.nc'
ds = xr.open_dataset(fname)
# Convert to pandas dataframe
df = ds.to_dataframe().drop(columns=['crs'])
# Get index values
lats = df.index.get_level_values('lat').unique()
lons = df.index.get_level_values('lon').unique()
dates = df.index.get_level_values('time').unique()
fig, ax = plt.subplots(3, 4)
for i, date in enumerate(dates):
# Get temporary dataframe with only one date
df1 = df[df.index.get_level_values('time') == date]
# Remove date from multi-index
df1.index = df1.index.droplevel(-1)
# Split multi-index so that rows=latitude and columns=longitude
grid = df1.unstack()
# Plot colour map for current month
a = ax.ravel()[i]
im = a.imshow(grid, cmap='Blues', vmin=-100, vmax=800)
a.set_title(calendar.month_abbr[i + 1])
a.invert_yaxis()
a.axis('off')
# Add colour bar
cbax = fig.add_axes([0.95, 0.3, 0.02, 0.4])
cb = fig.colorbar(im, cax=cbax)
cb.set_ticks([0, 200, 400, 600, 800])
cbax.set_ylabel('Monthly rainfall (mm)', labelpad=10)
plt.show()
```
<img src="doc/gridded-map-demo.png" width=600px>
## Available climate variables ##
| code | name | units |
|---------------------|-----------------------------------------------------------------------------------------|---------|
@ -27,23 +161,3 @@ The climate variables are:
| et_morton_potential | Evapotranspiration - Morton's potential evapotranspiration | mm |
| et_morton_wet | Evapotranspiration - Morton's wet-environment areal evapotranspiration over land | mm |
| mslp | Mean sea level pressure | hPa |
There are two different data types:
1. Point data (accessible with this python module)
2. Gridded data (accessible on the SILO website)
## Point data ##
### Installation ###
```
git clone http://git.wrl.unsw.edu.au:3000/danh/silo.git
pip install -e silo
```
## Usage ##
## Gridded data ##

Binary file not shown.

After

Width:  |  Height:  |  Size: 436 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Loading…
Cancel
Save