def upload(dataset_id): ''' Upload a zip of one shapefile to datastore ''' datastore = make_datastore(app.config['DATASTORE']) # Check that they uploaded a .zip file if not request.files['file'] or not allowed_file(request.files['file'].filename): return make_response("Only .zip files allowed", 403) # Upload original file to S3 zip_buff = StringIO(request.files['file'].read()) zip_base = '{0}/uploads/trail-segments'.format(dataset_id) datastore.write(zip_base + '.zip', zip_buff) # Get geojson data from shapefile shapefile_path = unzip(zip_buff) geojson_obj = shapefile2geojson(shapefile_path) # Compress geojson file geojson_zip = StringIO() geojson_raw = json.dumps(geojson_obj) zip_file(geojson_zip, geojson_raw, 'trail-segments.geojson') # Upload .geojson.zip file to datastore datastore.write(zip_base + '.geojson.zip', geojson_zip) # Show sample data from original file return redirect('/datasets/' + dataset_id + "/sample-segment")
def upload(dataset_id): ''' Upload a zip of one shapefile to datastore ''' datastore = make_datastore(app.config['DATASTORE']) # Check that they uploaded a .zip file if not request.files['file'] or not allowed_file( request.files['file'].filename): return make_response("Only .zip files allowed", 403) # Upload original file to S3 zip_buff = StringIO(request.files['file'].read()) zip_base = '{0}/uploads/trail-segments'.format(dataset_id) datastore.write(zip_base + '.zip', zip_buff) # Get geojson data from shapefile shapefile_path = unzip(zip_buff) geojson_obj = shapefile2geojson(shapefile_path) # Compress geojson file geojson_zip = StringIO() geojson_raw = json.dumps(geojson_obj) zip_file(geojson_zip, geojson_raw, 'trail-segments.geojson') # Upload .geojson.zip file to datastore datastore.write(zip_base + '.geojson.zip', geojson_zip) # Show sample data from original file return redirect('/datasets/' + dataset_id + "/sample-segment")
def transform_trailheads(dataset_id): ''' Grab a zip file off of datastore Unzip it Transform into opentrails Upload ''' datastore = make_datastore(app.config['DATASTORE']) dataset = get_dataset(datastore, dataset_id) if not dataset: return make_response("No Dataset Found", 404) # Download the original trailheads file up_trailheads_name = '{0}/uploads/trail-trailheads.geojson.zip'.format(dataset.id) up_trailheads_zip = datastore.read(up_trailheads_name) # Unzip it up_trailheads_path = unzip(up_trailheads_zip, '.geojson', []) up_trailheads = json.load(open(up_trailheads_path)) messages, ot_trailheads = trailheads_transform(up_trailheads, dataset) # Save messages for output transform_messages_path = dataset.id + "/opentrails/trailheads-messages.json" datastore.write(transform_messages_path, StringIO(json.dumps(messages))) # Make a zip from transformed trailheads ot_trailheads_zip = StringIO() ot_trailheads_raw = json.dumps(ot_trailheads, sort_keys=True) zip_file(ot_trailheads_zip, ot_trailheads_raw, 'trailheads.geojson') # Upload transformed trailheads and messages zip_path = '{0}/opentrails/trailheads.geojson.zip'.format(dataset.id) datastore.write(zip_path, ot_trailheads_zip) return redirect('/datasets/' + dataset.id + '/transformed-trailheads', code=303)
def transform_trailheads(dataset_id): ''' Grab a zip file off of datastore Unzip it Transform into opentrails Upload ''' datastore = make_datastore(app.config['DATASTORE']) dataset = get_dataset(datastore, dataset_id) if not dataset: return make_response("No Dataset Found", 404) # Download the original trailheads file up_trailheads_name = '{0}/uploads/trail-trailheads.geojson.zip'.format( dataset.id) up_trailheads_zip = datastore.read(up_trailheads_name) # Unzip it up_trailheads_path = unzip(up_trailheads_zip, '.geojson', []) up_trailheads = json.load(open(up_trailheads_path)) messages, ot_trailheads = trailheads_transform(up_trailheads, dataset) # Save messages for output transform_messages_path = dataset.id + "/opentrails/trailheads-messages.json" datastore.write(transform_messages_path, StringIO(json.dumps(messages))) # Make a zip from transformed trailheads ot_trailheads_zip = StringIO() ot_trailheads_raw = json.dumps(ot_trailheads, sort_keys=True) zip_file(ot_trailheads_zip, ot_trailheads_raw, 'trailheads.geojson') # Upload transformed trailheads and messages zip_path = '{0}/opentrails/trailheads.geojson.zip'.format(dataset.id) datastore.write(zip_path, ot_trailheads_zip) return redirect('/datasets/' + dataset.id + '/transformed-trailheads', code=303)