Example #1
0
 def to_gdal(self,
             target_path,
             target_proj4=None,
             driver_name='ESRI Shapefile'):
     gdal_driver = gdal.GetDriverByName(driver_name)
     if not gdal_driver:
         raise GeoTableError('gdal driver missing (%s)' % driver_name)
     try:
         geometry_columns = _get_geometry_columns(self)
     except GeoTableError as e:
         table = self
     else:
         table = self.drop(columns=geometry_columns)
     as_archive = has_archive_extension(target_path)
     as_kmz = target_path.endswith('.kmz')
     with TemporaryStorage() as storage:
         if as_archive:
             gdal_dataset_path = storage.folder
         elif as_kmz:
             gdal_dataset_path = join(storage.folder,
                                      get_file_stem(target_path) + '.kml')
         else:
             gdal_dataset_path = target_path
         gdal_dataset = gdal_driver.Create(gdal_dataset_path, 0, 0)
         for layer_name, layer_t in table.groupby('geometry_layer'):
             _prepare_gdal_layer(layer_t, gdal_dataset, target_proj4,
                                 layer_name)
         gdal_dataset.FlushCache()
         if as_archive:
             compress(storage.folder, target_path)
         elif as_kmz:
             compress_zip(storage.folder, target_path)
Example #2
0
def run_tool_json(request):
    settings = request.registry.settings
    data_folder = request.data_folder
    tool_definition = settings['tool_definition']
    result_request = ResultRequest(request)
    result = result_request.prepare_arguments(tool_definition, request.params)
    target_folder = result.get_target_folder(data_folder)
    run_script(tool_definition, result.arguments, result.folder, target_folder)
    compress_zip(target_folder)
    return {
        'result_id': result.id,
        'result_url': request.route_path(
            'result', result_id=result.id, _anchor='properties'),
    }
Example #3
0
def run_tool(request):
    settings = request.registry.settings
    tool_definition = settings['tool_definition']
    data_type_by_suffix = settings['data_type_by_suffix']
    data_folder = settings['data.folder']
    try:
        result_arguments = get_result_arguments(
            tool_definition, request.params, data_type_by_suffix, data_folder,
            request.authenticated_userid)
    except DataTypeError as e:
        raise HTTPBadRequest(dict(e.args))
    result_id, target_folder = prepare_result_response_folder(data_folder)
    run_script(
        target_folder, tool_definition, result_arguments, data_type_by_suffix)
    compress_zip(target_folder, excludes=EXCLUDED_FILE_NAMES)
    return HTTPSeeOther(request.route_path(
        'result', id=result_id, _anchor='properties'))
Example #4
0
def run_tool_json(request):
    settings = request.registry.settings
    data_folder = request.data_folder
    tool_definition = settings['tool_definition']
    result_request = ResultRequest(request)
    result = result_request.prepare_arguments(tool_definition, request.params)
    target_folder = result.get_target_folder(data_folder)
    run_script(tool_definition,
               result.arguments,
               result.folder,
               target_folder,
               quietly=settings['quietly'])
    compress_zip(target_folder)
    return {
        'result_id': result.id,
        'result_url': request.route_path('result', result_id=result.id),
    }
Example #5
0
def send_result_response(endpoint_url, result_folder):
    result_token = open(join(result_folder, 'y.token')).read()
    result_properties = load_settings(join(
        result_folder, 'y.cfg'), 'result_properties')  # Assume relative paths
    response = requests.post(endpoint_url, headers={
        'Authorization': 'Bearer ' + result_token,
    }, data={
        'result_progress': 100,
        'result_properties': json.dumps(result_properties),
    }, files={
        'target_folder': open(compress_zip(join(result_folder, 'y')), 'rb'),
    })
    if response.status_code == 400:
        raise HTTPBadRequest
Example #6
0
def send_result_response(endpoint_url, result_folder):
    result_token = open(join(result_folder, 'y.token')).read()
    result_properties = load_settings(join(
        result_folder, 'y.cfg'), 'result_properties')  # Assume relative paths
    response = requests.post(endpoint_url,
                             headers={
                                 'Authorization': 'Bearer ' + result_token,
                             },
                             data={
                                 'result_progress':
                                 100,
                                 'result_properties':
                                 json.dumps(result_properties),
                             },
                             files={
                                 'target_folder':
                                 open(compress_zip(join(result_folder, 'y')),
                                      'rb'),
                             })
    if response.status_code == 400:
        raise HTTPBadRequest