Convert to CLI commands

develop
Chris Leaman 6 years ago
parent 99e036a4cd
commit 4bba8a3331

@ -7,11 +7,14 @@ import fiona
import pandas as pd import pandas as pd
from fiona.crs import from_epsg from fiona.crs import from_epsg
from shapely.geometry import Point, mapping 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.command()
@click.argument('input_csv') @click.option("--input-csv", required=True, help=".csv file to convert")
@click.argument('output_shp') @click.option("--output-shp", required=True, help="where to store .shp file")
def sites_csv_to_shp(input_csv, output_shp): def sites_csv_to_shp(input_csv, output_shp):
""" """
Converts our dataframe of sites to .shp to load in QGis 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: :param output_shp:
:return: :return:
""" """
logger.info('Converting %s to %s', input_csv, output_shp)
df_sites = pd.read_csv(input_csv, index_col=[0]) df_sites = pd.read_csv(input_csv, index_col=[0])
schema = { schema = {"geometry": "Point", "properties": {"beach": "str", "site_id": "str"}}
'geometry': 'Point', with fiona.open(output_shp, "w", crs=from_epsg(4326), driver="ESRI Shapefile", schema=schema) as output:
'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(): for index, row in df_sites.iterrows():
point = Point(row['lon'], row['lat']) point = Point(row["lon"], row["lat"])
prop = { prop = {"beach": row["beach"], "site_id": index}
'beach': row['beach'], output.write({"geometry": mapping(point), "properties": prop})
'site_id': index, logger.info('Done!')
}
output.write({'geometry': mapping(point), 'properties': prop})
@click.group() @click.group()
def cli(): def cli():
pass pass
if __name__ == '__main__': if __name__ == "__main__":
cli.add_command(sites_csv_to_shp) cli.add_command(sites_csv_to_shp)
cli() cli()

Loading…
Cancel
Save