Source code for metloom.cli

"""Console script for metloom."""
import argparse
import sys
import geopandas as gpd

from metloom.pointdata import CDECPointData, SnotelPointData


[docs]def main(): """Console script for metloom.""" datasouce_map = { "cdec": CDECPointData, "snotel": SnotelPointData } parser = argparse.ArgumentParser( description="Find measurement locations within a shapefile" ) parser.add_argument( "--shapefile", "-sf", dest="shapefile", required=True, help="shapefile used to filter measurement locations" ) parser.add_argument( "--datasource", "-ds", dest="datasource", choices=list(datasouce_map.values()), type=datasouce_map.get, required=True, help="datasource used to find measurement ids" ) parser.add_argument( "--variables", "-v", dest="variables", nargs="+", required=True, help="measurement must posses at least one of these variable. " "Variables must be the attribute name of the variables" "corresponding to the datasource. i.e. SWE" ) parser.add_argument( "--snowcourse", "-sc", dest="snowcourse", default=False, action="store_true", required=False, help="Do you want to find only snowcourses" ) parser.add_argument( "--ouput", "-o", dest="output", default="./output.csv", required=False, help="output csv file path" ) args = parser.parse_args() datasource = args.datasource if datasource is None: raise ValueError("Not a valid datasource") geometry = gpd.read_file(args.shapefile) variables = [] for variable_string in args.variables: variable = getattr(datasource.ALLOWED_VARIABLES, variable_string, None) if variable is None: raise ValueError( f"Could not find variable corresponding to {variable_string}" ) variables.append(variable) points = datasource.points_from_geometry( geometry, variables, snow_courses=args.snowcourse ) points.to_dataframe().to_csv(args.output)
if __name__ == "__main__": sys.exit(main()) # pragma: no cover