コード例 #1
0
ファイル: utilities.py プロジェクト: darctur/datarodsexplorer
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]
コード例 #2
0
ファイル: utilities.py プロジェクト: darctur/datarodsexplorer
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