Tidy up observed storm impacts

master^2
Chris Leaman 6 years ago
parent 995b01172f
commit 6c7f17cebe

@ -22,6 +22,13 @@ def return_first_or_nan(l):
def volume_change(df_profiles, df_profile_features, zone):
"""
Calculates how much the volume change there is between prestrom and post storm profiles.
:param df_profiles:
:param df_profile_features:
:param zone: Either 'swash' or 'dune_face'
:return:
"""
logger.info('Calculating change in beach volume in {} zone'.format(zone))
df_vol_changes = pd.DataFrame(index=df_profile_features.index)
@ -96,27 +103,19 @@ def beach_volume(x, z, x_min=np.NINF, x_max=np.inf):
return simps(z_masked, x_masked)
def impacts_from_profiles(df_profiles, df_profile_features):
# Impacts should be per site, so use the profile_features as the base index.
df_observed_impacts = pd.DataFrame(index=df_profile_features.index)
# Swash zone volume change
prestorm_swash_vol, poststorm_swash_vol = volume_change(df_profiles, df_profile_features, zone='swash')
# Dune volume change
# If no dune volume change, then swash zone
#
pass
def storm_regime(df_observed_impacts):
"""
Returns the dataframe with an additional column of storm impacts based on the Storm Impact Scale. Refer to
Sallenger (2000) for details.
:param df_observed_impacts:
:return:
"""
logger.info('Getting observed storm regimes')
df_observed_impacts.loc[df_observed_impacts.swash_vol_change < 3,'storm_regime'] = 'swash'
df_observed_impacts.loc[df_observed_impacts.swash_vol_change < 3, 'storm_regime'] = 'swash'
df_observed_impacts.loc[df_observed_impacts.dune_face_vol_change > 3, 'storm_regime'] = 'collision'
return df_observed_impacts
if __name__ == '__main__':
logger.info('Importing existing data')
data_folder = './data/interim'
@ -129,10 +128,10 @@ if __name__ == '__main__':
logger.info('Getting pre/post storm volumes')
df_swash_vol_changes = volume_change(df_profiles, df_profile_features, zone='swash')
df_dune_face_vol_changes = volume_change(df_profiles, df_profile_features, zone='dune_face')
df_observed_impacts = df_observed_impacts.join([df_swash_vol_changes, df_dune_face_vol_changes ])
df_observed_impacts = df_observed_impacts.join([df_swash_vol_changes, df_dune_face_vol_changes])
# TODO Classify regime based on volume changes
# Classify regime based on volume changes
df_observed_impacts = storm_regime(df_observed_impacts)
# TODO Save dataframe to csv
# Save dataframe to csv
df_observed_impacts.to_csv(os.path.join(data_folder, 'impacts_observed.csv'))

Loading…
Cancel
Save