def write_ecoflow_file_stationid(file_list, dir_name, file_name, parameter_name = "Discharge + Water Use"): """ Write a csv file containing a timeseries for a particular parameter contained in a WATER.txt file Parameters ---------- file_list : list List of WATER.txt files to process dir_name : string String name for output directory file_name : string String name for output file parameter_name : string String name for a parameter contained in a WATER.txt file """ for f in file_list: filedir, filename = helpers.get_file_info(f) ecoflow_dir = helpers.make_directory(path = filedir, directory_name = dir_name) helpers.print_input_output_info(input_dict = {"input_file": f}, output_dict = {"output_directory": ecoflow_dir}) waterapputils_logging.initialize_loggers(output_dir = ecoflow_dir) watertxt_data = watertxt.read_file(f) # write timeseries of discharge + water use for ecoflow program watertxt.write_timeseries_file_stationid(watertxt_data, name = parameter_name, save_path = ecoflow_dir, filename = file_name, stationid = watertxt_data["stationid"]) waterapputils_logging.remove_loggers()
def write_ecoflow_file_stationid(file_list, dir_name, file_name, parameter_name="Discharge + Water Use"): """ Write a csv file containing a timeseries for a particular parameter contained in a WATER.txt file Parameters ---------- file_list : list List of WATER.txt files to process dir_name : string String name for output directory file_name : string String name for output file parameter_name : string String name for a parameter contained in a WATER.txt file """ for f in file_list: filedir, filename = helpers.get_file_info(f) ecoflow_dir = helpers.make_directory(path=filedir, directory_name=dir_name) helpers.print_input_output_info( input_dict={"input_file": f}, output_dict={"output_directory": ecoflow_dir}) waterapputils_logging.initialize_loggers(output_dir=ecoflow_dir) watertxt_data = watertxt.read_file(f) # write timeseries of discharge + water use for ecoflow program watertxt.write_timeseries_file_stationid( watertxt_data, name=parameter_name, save_path=ecoflow_dir, filename=file_name, stationid=watertxt_data["stationid"]) waterapputils_logging.remove_loggers()
def process_intersecting_centroids(intersecting_centroids, settings, ecoflow_dir, oasis_dir): """ Apply water use data to a WATER \*.txt file. The new file created is saved to the same directory as the \*.xml file. Parameters ---------- intersecting_centroids : dictionary Dictionary containing lists of values for a particular field that were intersected by another shapefile. settings : dictionary Dictionary of user settings ecoflow_dir : string String path to directory that will contain output specific for ecoflow program oasis_dir : string String path to directory that will contain output specific for oasis Notes ----- Uses settings set in user_settings.py """ # create a file for the output for featureid, centroids in intersecting_centroids.iteritems(): # get sum of the water use data if settings["wateruse_factor_file"]: total_wateruse_dict = wateruse.get_all_total_wateruse( wateruse_files=settings["wateruse_files"], id_list=centroids, wateruse_factor_file=settings["wateruse_factor_file"], in_cfs=True) else: total_wateruse_dict = wateruse.get_all_total_wateruse( wateruse_files=settings["wateruse_files"], id_list=centroids, wateruse_factor_file=None, in_cfs=True) # print monthly output in nice format to info file print( "FeatureId: {}\n Centroids: {}\n Total Water Use:\n".format( featureid, centroids)) helpers.print_monthly_dict(monthly_dict=total_wateruse_dict) # get the txt data file that has a parent directory matching the current featureid if settings["is_batch_simulation"]: path = os.path.join(settings["simulation_directory"], featureid) else: path = settings["simulation_directory"] # find the WATER.txt file watertxt_file = helpers.find_file( name=settings["water_text_file_name"], path=path) # get file info watertxt_dir, watertxt_filename = helpers.get_file_info(watertxt_file) # create an output directory output_dir = helpers.make_directory( path=watertxt_dir, directory_name=settings["wateruse_directory_name"]) # initialize error logging waterapputils_logging.initialize_loggers(output_dir=output_dir) # read the txt watertxt_data = watertxt.read_file(watertxt_file) # apply water use watertxt_data = watertxt.apply_wateruse( watertxt_data, wateruse_totals=total_wateruse_dict) # write updated txt watertxt_with_wateruse_file = settings[ "wateruse_prepend_name"] + watertxt_filename watertxt.write_file(watertxt_data=watertxt_data, save_path=output_dir, filename=watertxt_with_wateruse_file) # plot updated_watertxt_file = os.path.join(output_dir, watertxt_with_wateruse_file) water_files_processing.process_water_files( file_list=[updated_watertxt_file], settings=settings, print_data=True) # write timeseries of discharge + water use for OASIS watertxt.write_timeseries_file(watertxt_data=watertxt_data, name=settings["ecoflow_parameter_name"], save_path=oasis_dir, filename="-".join([ watertxt_data["stationid"], settings["oasis_file_name"] ])) # write timeseries of dishcarge + water use for ecoflow program watertxt.write_timeseries_file_stationid( watertxt_data, name=settings["ecoflow_parameter_name"], save_path=ecoflow_dir, filename="", stationid=watertxt_data["stationid"])
def process_intersecting_centroids(intersecting_centroids, settings, ecoflow_dir, oasis_dir): """ Apply water use data to a WATER \*.txt file. The new file created is saved to the same directory as the \*.xml file. Parameters ---------- intersecting_centroids : dictionary Dictionary containing lists of values for a particular field that were intersected by another shapefile. settings : dictionary Dictionary of user settings ecoflow_dir : string String path to directory that will contain output specific for ecoflow program oasis_dir : string String path to directory that will contain output specific for oasis Notes ----- Uses settings set in user_settings.py """ # create a file for the output for featureid, centroids in intersecting_centroids.iteritems(): # get sum of the water use data if settings["wateruse_factor_file"]: total_wateruse_dict = wateruse.get_all_total_wateruse(wateruse_files = settings["wateruse_files"], id_list = centroids, wateruse_factor_file = settings["wateruse_factor_file"], in_cfs = True) else: total_wateruse_dict = wateruse.get_all_total_wateruse(wateruse_files = settings["wateruse_files"], id_list = centroids, wateruse_factor_file = None, in_cfs = True) # print monthly output in nice format to info file print("FeatureId: {}\n Centroids: {}\n Total Water Use:\n".format(featureid, centroids)) helpers.print_monthly_dict(monthly_dict = total_wateruse_dict) # get the txt data file that has a parent directory matching the current featureid if settings["is_batch_simulation"]: path = os.path.join(settings["simulation_directory"], featureid) else: path = settings["simulation_directory"] # find the WATER.txt file watertxt_file = helpers.find_file(name = settings["water_text_file_name"], path = path) # get file info watertxt_dir, watertxt_filename = helpers.get_file_info(watertxt_file) # create an output directory output_dir = helpers.make_directory(path = watertxt_dir, directory_name = settings["wateruse_directory_name"]) # initialize error logging waterapputils_logging.initialize_loggers(output_dir = output_dir) # read the txt watertxt_data = watertxt.read_file(watertxt_file) # apply water use watertxt_data = watertxt.apply_wateruse(watertxt_data, wateruse_totals = total_wateruse_dict) # write updated txt watertxt_with_wateruse_file = settings["wateruse_prepend_name"] + watertxt_filename watertxt.write_file(watertxt_data = watertxt_data, save_path = output_dir, filename = watertxt_with_wateruse_file) # plot updated_watertxt_file = os.path.join(output_dir, watertxt_with_wateruse_file) water_files_processing.process_water_files(file_list = [updated_watertxt_file], settings = settings, print_data = True) # write timeseries of discharge + water use for OASIS watertxt.write_timeseries_file(watertxt_data = watertxt_data, name = settings["ecoflow_parameter_name"], save_path = oasis_dir, filename = "-".join([watertxt_data["stationid"], settings["oasis_file_name"]])) # write timeseries of dishcarge + water use for ecoflow program watertxt.write_timeseries_file_stationid(watertxt_data, name = settings["ecoflow_parameter_name"], save_path = ecoflow_dir, filename = "", stationid = watertxt_data["stationid"])