Source code for geoips.plugins.modules.filename_formatters.text_winds_tc_fname

# # # Distribution Statement A. Approved for public release. Distribution unlimited.
# # #
# # # Author:
# # # Naval Research Laboratory, Marine Meteorology Division
# # #
# # # This program is free software: you can redistribute it and/or modify it under
# # # the terms of the NRLMMD License included with this program. This program is
# # # distributed WITHOUT ANY WARRANTY; without even the implied warranty of
# # # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the included license
# # # for more details. If you did not receive the license, for more information see:
# # # https://github.com/U-S-NRL-Marine-Meteorology-Division/

"""Filename formatter for TC-specific text windspeed outputs."""

import logging

from os.path import join as pathjoin

from geoips.filenames.base_paths import PATHS as gpaths

interface = "filename_formatters"
family = "xarray_metadata_to_filename"
name = "text_winds_tc_fname"

LOG = logging.getLogger(__name__)


[docs]def call(xarray_obj, extension=".txt", basedir=gpaths["TCWWW"], output_dict=None): """Create TC-specific text windspeed filename. See Also -------- geoips.plugins.modules.filename_formatters.text_winds_tc_fname. assemble_windspeeds_text_tc_fname Shared utility to facilitate creating multiple similar filenames from the same code. """ area_def = xarray_obj.area_definition return assemble_windspeeds_text_tc_fname( basedir=basedir, tc_area_id=area_def.area_id, tc_year=int(area_def.sector_info["storm_year"]), tc_basin=area_def.sector_info["storm_basin"], tc_stormnum=int(area_def.sector_info["storm_num"]), source_name=xarray_obj.source_name, platform_name=xarray_obj.platform_name, product_datetime=xarray_obj.start_datetime, data_provider=xarray_obj.data_provider, extension=extension, output_dict=output_dict, sector_info=area_def.sector_info, )
[docs]def assemble_windspeeds_text_tc_fname( basedir, tc_area_id, tc_year, tc_basin, tc_stormnum, source_name, platform_name, product_datetime, data_provider, extension=".txt", output_dict=None, sector_info=None, ): """Produce full output product path from product / sensor specifications. Parameters ---------- basedir : str base directory tc_year : int Full 4 digit storm year tc_basin : str 2 character basin designation SH Southern Hemisphere WP West Pacific EP East Pacific CP Central Pacific IO Indian Ocean AL Atlantic tc_stormnum : int 2 digit storm number 90 through 99 for invests 01 through 69 for named storms platform_name : str Name of platform (satellite) product_datetime : datetime Start time of data used to generate product Returns ------- str: full path of output filename of the format: <basedir>/tc<tc_year>/<tc_basin>/<tc_basin><tc_stormnum><tc_year>/ txt/<source_name>_<platform_name>_surface_winds_<data_provider>_ <YYYYMMDDHHMN> Examples -------- >>> startdt = datetime.strptime('20200216T001412', '%Y%m%dT%H%M%S') >>> assemble_windspeeds_text_tc_fname('/outdir', ... 2020, ... 'SH', ... 16, ... 'smap-spd', ... 'smap', ... startdt, ... 'remss') '/outdir/tc2020/SH/SH162020/txt/ """ from geoips.plugins.modules.filename_formatters.utils.tc_file_naming import ( tc_storm_basedir, ) path = pathjoin( tc_storm_basedir( basedir, tc_year, tc_basin, tc_stormnum, output_dict=output_dict, sector_info=sector_info, ), "txt", ) fname = "_".join( [ source_name, "surface_winds", data_provider, platform_name, tc_area_id, product_datetime.strftime("%Y%m%d%H%M"), ] ) if extension is not None: fname = f"{fname}{extension}" return pathjoin(path, fname)