def get_raster_zip(latlonbox, time_st, model, variable): # Parameter minx, miny, maxx, maxy = latlonbox # Files, paths, and store name & store id tiff_file = NamedTemporaryFile(suffix=".tif", delete=False) tiff_path = tiff_file.name file_name = tiff_file.name[:-4] store_name = os.path.basename(file_name) store_id = get_workspace() + ':' + store_name tfw_path = file_name + '.tfw' prj_path = file_name + '.prj' zip_path = file_name + '.zip' # Create tiff file url_image = urllib2.urlopen(get_datarods_png().format(minx, miny, maxx, maxy, time_st, get_wms_vars()[model][variable][0])) tiff_file.write(url_image.read()) tiff_file.close() # Create prj file create_prj_file(prj_path) # Create tfw file create_tfw_file(tfw_path, float(minx), float(miny), float(maxx), float(maxy)) create_zip_file(zip_path, tiff_path, tfw_path, prj_path) # Return return [zip_path, store_name, store_id]
def load_tiff_ly(post_params): """ This function returns the previously loaded map or the new map layer if the button on the page was clicked """ map_layers = None if post_params.get('plotTime'): plot_time = post_params['plotTime'] else: plot_time = None if post_params.get('model'): model = post_params['model'] else: model = None if post_params.get('variable'): variable = post_params['variable'] else: variable = None if model and variable and plot_time: # Geoserver parameters geo_eng = get_spatial_dataset_engine(name='default') # Data rods parameters latlonbox = [post_params['lonW'], post_params['latS'], post_params['lonE'], post_params['latN']] time_st = plot_time + ':00:00Z/' + plot_time + ':00:30Z' zip_file, store_name, store_id = get_raster_zip(latlonbox, time_st, model, variable) # Create raster in geoserver flag_add_layer = False response = geo_eng.create_coverage_resource(store_id=store_id, coverage_file=zip_file, coverage_type='worldimage', overwrite=True, ) if not response['success']: result = geo_eng.create_workspace(workspace_id=get_workspace(), uri='tethys_app-%s' % get_workspace()) if result['success']: response = geo_eng.create_coverage_resource(store_id=store_id, coverage_file=zip_file, coverage_type='worldimage', overwrite=True, ) if response['success']: flag_add_layer = True else: flag_add_layer = True if flag_add_layer: # Add raster to map title = '{0} {1}'.format(variable, plot_time) geoserver_layer = MVLayer(source='ImageWMS', options={'url': get_geoserver_url(), 'params': {'LAYERS': store_id}, 'serverType': 'geoserver'}, legend_title=title, ) map_layers = [geoserver_layer] return map_layers