|
|
|
@ -28,6 +28,25 @@ import nielsen_volumes
|
|
|
|
|
from survey_tools import call_lastools, extract_pts, update_survey_output
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_datestring(x):
|
|
|
|
|
"""Format a date integer into an ISO-8601 date string
|
|
|
|
|
|
|
|
|
|
Args:
|
|
|
|
|
x: integer representation of date string
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
formatted date string
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
|
|
|
|
|
>> get_datestring(19700101)
|
|
|
|
|
'1970-01-01'
|
|
|
|
|
"""
|
|
|
|
|
datestr = pd.datetime.strptime(str(x), '%Y%m%d').strftime('%Y-%m-%d')
|
|
|
|
|
|
|
|
|
|
return datestr
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remove_temp_files(directory):
|
|
|
|
|
for f in os.listdir(directory):
|
|
|
|
|
os.unlink(os.path.join(directory, f))
|
|
|
|
@ -45,20 +64,28 @@ def plot_profiles(profile_name, csv_output_dir, graph_loc, ch_limits, delta_vol)
|
|
|
|
|
# Find landward limit of profile (behind beach)
|
|
|
|
|
ch_min = ch_limits.loc[profile_name, 'Landward Limit']
|
|
|
|
|
|
|
|
|
|
ax = plt.axes()
|
|
|
|
|
# Set figure dimensions based on beach size
|
|
|
|
|
vertical_exag = 8
|
|
|
|
|
m_per_inch = 8
|
|
|
|
|
fig_h = profiles.dropna().values.max() / m_per_inch * vertical_exag
|
|
|
|
|
fig_w = (profiles.index.max() - ch_min) / m_per_inch
|
|
|
|
|
|
|
|
|
|
fig, ax = plt.subplots(figsize=(fig_w, fig_h))
|
|
|
|
|
for col in profiles.columns:
|
|
|
|
|
profile = profiles.loc[ch_min:, col]
|
|
|
|
|
date_str = col.split('_')[-1]
|
|
|
|
|
date = '{}-{}-{}'.format(date_str[:4], date_str[4:6], date_str[6:])
|
|
|
|
|
date = get_datestring(date_str)
|
|
|
|
|
|
|
|
|
|
ax.plot(profile.index, profile, label=date)
|
|
|
|
|
|
|
|
|
|
ax.set_aspect(vertical_exag)
|
|
|
|
|
|
|
|
|
|
ax.set_xlabel('Chainage (m)', labelpad=10)
|
|
|
|
|
ax.set_ylabel('Elevation (m AHD)', labelpad=10)
|
|
|
|
|
|
|
|
|
|
# Show most recent volume change
|
|
|
|
|
ax.annotate('Most recent\nvolume change:\n{:0.1f} m$^3$/m'.format(delta_vol),
|
|
|
|
|
(0.1, 0.15), xycoords='axes fraction', fontsize=8,
|
|
|
|
|
(0.05, 0.15), xycoords='axes fraction', fontsize=9,
|
|
|
|
|
backgroundcolor='#ffffff', linespacing=1.5)
|
|
|
|
|
ax.legend(edgecolor='none', facecolor='#ffffff', fontsize=9)
|
|
|
|
|
|
|
|
|
@ -91,8 +118,7 @@ def calculate_volumes(profile_name, survey_date, csv_output_dir, ch_limits, volu
|
|
|
|
|
volumes = pd.DataFrame()
|
|
|
|
|
|
|
|
|
|
# Format dates
|
|
|
|
|
date_str = str(survey_date)
|
|
|
|
|
date = '{}-{}-{}'.format(date_str[:4], date_str[4:6], date_str[6:])
|
|
|
|
|
date = get_datestring(survey_date)
|
|
|
|
|
|
|
|
|
|
for current_date in profiles.columns:
|
|
|
|
|
# Get Nielsen erosion volumes
|
|
|
|
@ -216,7 +242,3 @@ def main():
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
|
main()
|
|
|
|
|
|
|
|
|
|
if True:
|
|
|
|
|
plt.plot([], label='label')
|
|
|
|
|
plt.legend(facecolor='r')
|
|
|
|
|