You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.2 KiB
Python

5 years ago
"""get_ww3.py
Download records from WaveWatch III (WW3) global wave model.
D. Howe
2019-07-31
"""
import netCDF4
import pandas as pd
import xarray as xr
from tqdm import tqdm
# Set coordinates
lon = 136.62
lat = -36.07
# Set product code
product_code = 'ww3.aus_4m'
# Select output variables
var_names = ['hs', 'dp', 'fp']
# Set time period
start_date = '1980-01-01'
end_date = '2019-01-01'
url = ('http://data-cbr.csiro.au/thredds/dodsC/catch_all/'
'CMAR_CAWCR-Wave_archive/CAWCR_Wave_Hindcast_aggregate/gridded/')
# Generate list of dates
dates = pd.date_range(start_date, end_date, freq='M')
# Create output dataframe
master = pd.DataFrame()
for date in tqdm(dates):
# Get date string for current month
date_str = date.strftime('%Y%m')
# Open dataset
ds = xr.open_dataset(url + f'{product_code}.{date_str}.nc')
# Extract variables from dataset
ds = ds.sel(longitude=lon, latitude=lat, method='nearest')
df = ds[var_names].to_dataframe()
# Add to output dataframe
master = master.append(df)
# Get lat and lon bearings
ew = 'E' if lon > 0 else 'W'
ns = 'N' if lat > 0 else 'S'
# Export to csv
csv_name = f'{product_code}_{abs(lon)}{ew}_{abs(lat)}{ns}.csv'
master.to_csv(csv_name)