Allow input files to be specified from the command line

etta-drone
Dan Howe 6 years ago
parent 8ca180f93f
commit 74c9351fe7

@ -360,7 +360,6 @@ def main():
# read the parameters file and scroll through it # read the parameters file and scroll through it
input_file = args.input_file input_file = args.input_file
input_file = 'Parameter Files/las-manipulation-survey-2.xlsx'
params_file=pd.read_excel(input_file, sheet_name="PARAMS") params_file=pd.read_excel(input_file, sheet_name="PARAMS")
for i, row in params_file.iterrows(): for i, row in params_file.iterrows():

@ -13,7 +13,9 @@
import os import os
import io import io
import re import re
import sys
import math import math
import argparse
import datetime import datetime
import subprocess import subprocess
import numpy as np import numpy as np
@ -91,7 +93,7 @@ def calculate_volumes(profile_name, survey_date, csv_output_dir, ch_limits, volu
# Get Nielsen erosion volumes # Get Nielsen erosion volumes
chainage = profiles.loc[:, current_date].dropna().index chainage = profiles.loc[:, current_date].dropna().index
elevation = profiles.loc[:, current_date].dropna().values elevation = profiles.loc[:, current_date].dropna().values
volume = neilson_volumes.volume_available(chainage, elevation, ch_min) volume = nielsen_volumes.volume_available(chainage, elevation, ch_min)
# Update spreadsheet # Update spreadsheet
volumes.loc[profile_name, date] = volume volumes.loc[profile_name, date] = volume
@ -101,10 +103,26 @@ def calculate_volumes(profile_name, survey_date, csv_output_dir, ch_limits, volu
volumes.to_csv(csv_vol) volumes.to_csv(csv_vol)
input_file = 'Parameter Files/las-manipulation-survey-2.xlsx' def main():
params_file=pd.read_excel(input_file, sheet_name="PARAMS") parser = argparse.ArgumentParser()
parser.add_argument(
'input_file',
metavar='PARAMS_FILE',
help='name of parameter file',
default=None)
for i, row in params_file.iterrows(): # Print usage if no arguments are provided
if len(sys.argv) == 1:
parser.print_help(sys.stderr)
sys.exit(1)
args = parser.parse_args()
# read the parameters file and scroll through it
input_file = args.input_file
params_file=pd.read_excel(input_file, sheet_name="PARAMS")
for i, row in params_file.iterrows():
print("Starting to process %s" % row['Beach']) print("Starting to process %s" % row['Beach'])
beach=row['Beach'] beach=row['Beach']
survey_date = row['SURVEY DATE'] survey_date = row['SURVEY DATE']
@ -133,23 +151,28 @@ for i, row in params_file.iterrows():
crop_swash_poly = os.path.join(shp_swash_dir, las_basename + '.shp') crop_swash_poly = os.path.join(shp_swash_dir, las_basename + '.shp')
# Crop point cloud to swash boundary # Crop point cloud to swash boundary
print('Cropping swash...')
las_data = call_lastools('lasclip', input=input_las, output='-stdout', las_data = call_lastools('lasclip', input=input_las, output='-stdout',
args=['-poly', crop_swash_poly], verbose=False) args=['-poly', crop_swash_poly], verbose=False)
# Apply sea-side clipping polygon # Apply sea-side clipping polygon
print('Cropping back of beach...')
las_data = call_lastools('lasclip', input=las_data, output='-stdout', las_data = call_lastools('lasclip', input=las_data, output='-stdout',
args=['-poly', crop_heatmap_poly], verbose=False) args=['-poly', crop_heatmap_poly], verbose=False)
# Create clipping polygon for heatmap raster # Create clipping polygon for heatmap raster
print('Creating heat map cropping polygon...')
shp_name = os.path.join(output_poly_dir, las_basename + '.shp') shp_name = os.path.join(output_poly_dir, las_basename + '.shp')
call_lastools('lasboundary', input=las_data, output=shp_name, verbose=False) call_lastools('lasboundary', input=las_data, output=shp_name, verbose=False)
# Make a raster from point cloud # Make a raster from point cloud
print('Creating heat map raster...')
tif_name = os.path.join(output_tif_dir, las_basename + '.tif') tif_name = os.path.join(output_tif_dir, las_basename + '.tif')
call_lastools('blast2dem', input=las_data, output=tif_name, call_lastools('blast2dem', input=las_data, output=tif_name,
args=['-step', 0.2], verbose=False) args=['-step', 0.2], verbose=False)
# Extract elevations along profiles from triangulated surface # Extract elevations along profiles from triangulated surface
print('Extracting profile elevations...')
df = extract_pts( df = extract_pts(
las_data, las_data,
cp_csv, cp_csv,
@ -165,6 +188,7 @@ for i, row in params_file.iterrows():
ch_limits = pd.read_excel(profile_limit_file, index_col='Profile') ch_limits = pd.read_excel(profile_limit_file, index_col='Profile')
# Plot profiles, and save sand volumes for current beach # Plot profiles, and save sand volumes for current beach
print('Updating figures...')
profile_names = df['Profile'].unique() profile_names = df['Profile'].unique()
for profile_name in profile_names: for profile_name in profile_names:
plot_profiles(profile_name, survey_date, csv_output_dir, graph_loc, ch_limits) plot_profiles(profile_name, survey_date, csv_output_dir, graph_loc, ch_limits)
@ -172,3 +196,7 @@ for i, row in params_file.iterrows():
# Remove temprary files # Remove temprary files
remove_temp_files(tmp_dir) remove_temp_files(tmp_dir)
if __name__ == '__main__':
main()

Loading…
Cancel
Save