From 4bba8a3331f823070c05aa65a3eab332789e1cd8 Mon Sep 17 00:00:00 2001 From: Chris Leaman Date: Tue, 20 Nov 2018 15:26:41 +1100 Subject: [PATCH] Convert to CLI commands --- src/data/csv_to_shp.py | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/data/csv_to_shp.py b/src/data/csv_to_shp.py index 6016252..e663a86 100644 --- a/src/data/csv_to_shp.py +++ b/src/data/csv_to_shp.py @@ -7,11 +7,14 @@ import fiona import pandas as pd from fiona.crs import from_epsg from shapely.geometry import Point, mapping +import logging.config +logging.config.fileConfig("./src/logging.conf", disable_existing_loggers=False) +logger = logging.getLogger(__name__) @click.command() -@click.argument('input_csv') -@click.argument('output_shp') +@click.option("--input-csv", required=True, help=".csv file to convert") +@click.option("--output-shp", required=True, help="where to store .shp file") def sites_csv_to_shp(input_csv, output_shp): """ Converts our dataframe of sites to .shp to load in QGis @@ -19,30 +22,22 @@ def sites_csv_to_shp(input_csv, output_shp): :param output_shp: :return: """ + logger.info('Converting %s to %s', input_csv, output_shp) df_sites = pd.read_csv(input_csv, index_col=[0]) - schema = { - 'geometry': 'Point', - 'properties': { - 'beach': 'str', - 'site_id': 'str' - } - } - with fiona.open(output_shp, 'w', crs=from_epsg(4326), driver='ESRI Shapefile', schema=schema) as output: + schema = {"geometry": "Point", "properties": {"beach": "str", "site_id": "str"}} + with fiona.open(output_shp, "w", crs=from_epsg(4326), driver="ESRI Shapefile", schema=schema) as output: for index, row in df_sites.iterrows(): - point = Point(row['lon'], row['lat']) - prop = { - 'beach': row['beach'], - 'site_id': index, - } - output.write({'geometry': mapping(point), 'properties': prop}) - + point = Point(row["lon"], row["lat"]) + prop = {"beach": row["beach"], "site_id": index} + output.write({"geometry": mapping(point), "properties": prop}) + logger.info('Done!') @click.group() def cli(): pass -if __name__ == '__main__': +if __name__ == "__main__": cli.add_command(sites_csv_to_shp) cli()