Exemple #1
0
    def setUp(self):
        # Modify test behavior of celery based on environment settings
        update_celery_configuration(app)

        self.inasafe_work_dir = os.environ['InaSAFEQGIS']
        # generate tempfile
        hazard = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/hazard/continuous_flood_20_20.asc')
        exposure = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/exposure/pop_binary_raster_20_20.asc')
        aggregation = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/boundaries/district_osm_jakarta.shp')
        hazard = archive_layer(hazard)
        exposure = archive_layer(exposure)
        aggregation = archive_layer(aggregation)

        test_deploy_dir = os.path.join(DEPLOY_OUTPUT_DIR, 'test_deploy')
        self.test_deploy_dir = test_deploy_dir

        def convert_dir_to_url(deploy_dir):
            tail_name = deploy_dir.replace(DEPLOY_OUTPUT_DIR, '')
            return urlparse.urljoin(DEPLOY_OUTPUT_URL, tail_name)

        if not os.path.exists(test_deploy_dir):
            os.makedirs(test_deploy_dir)

        hazard_temp = tempfile.mktemp(suffix='.zip', dir=test_deploy_dir)
        exposure_temp = tempfile.mktemp(suffix='.zip', dir=test_deploy_dir)
        aggregation_temp = tempfile.mktemp(suffix='.zip', dir=test_deploy_dir)
        shutil.move(hazard, hazard_temp)
        shutil.move(exposure, exposure_temp)
        shutil.move(aggregation, aggregation_temp)
        self.hazard_temp = convert_dir_to_url(hazard_temp)
        self.exposure_temp = convert_dir_to_url(exposure_temp)
        self.aggregation_temp = convert_dir_to_url(aggregation_temp)

        self.keywords_file = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/hazard/continuous_flood_20_20.xml')
Exemple #2
0
    def setUp(self):
        # Modify test behavior of celery based on environment settings
        update_celery_configuration(app)

        self.inasafe_work_dir = os.environ['InaSAFEQGIS']
        # generate tempfile
        hazard = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/hazard/continuous_flood_20_20.asc')
        exposure = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/exposure/pop_binary_raster_20_20.asc')
        aggregation = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/boundaries/district_osm_jakarta.shp')
        hazard = archive_layer(hazard)
        exposure = archive_layer(exposure)
        aggregation = archive_layer(aggregation)

        test_deploy_dir = os.path.join(DEPLOY_OUTPUT_DIR, 'test_deploy')
        self.test_deploy_dir = test_deploy_dir

        def convert_dir_to_url(deploy_dir):
            tail_name = deploy_dir.replace(DEPLOY_OUTPUT_DIR, '')
            return urlparse.urljoin(DEPLOY_OUTPUT_URL, tail_name)

        if not os.path.exists(test_deploy_dir):
            os.makedirs(test_deploy_dir)

        hazard_temp = tempfile.mktemp(suffix='.zip', dir=test_deploy_dir)
        exposure_temp = tempfile.mktemp(suffix='.zip', dir=test_deploy_dir)
        aggregation_temp = tempfile.mktemp(suffix='.zip', dir=test_deploy_dir)
        shutil.move(hazard, hazard_temp)
        shutil.move(exposure, exposure_temp)
        shutil.move(aggregation, aggregation_temp)
        self.hazard_temp = convert_dir_to_url(hazard_temp)
        self.exposure_temp = convert_dir_to_url(exposure_temp)
        self.aggregation_temp = convert_dir_to_url(aggregation_temp)

        self.keywords_file = os.path.join(
            self.inasafe_work_dir,
            'safe/test/data/hazard/continuous_flood_20_20.xml')
Exemple #3
0
def run_analysis(hazard,
                 exposure,
                 function,
                 aggregation=None,
                 generate_report=False):
    """Run analysis"""
    hazard_file = download_layer(hazard)
    exposure_file = download_layer(exposure)
    aggregation_file = None
    if aggregation:
        aggregation_file = download_layer(aggregation)
    arguments = CommandLineArguments()
    arguments.hazard = hazard_file
    arguments.exposure = exposure_file
    arguments.aggregation = aggregation_file
    arguments.impact_function = function

    # generate names for impact results
    # create date timestamp
    date_folder = datetime.datetime.now().strftime('%Y%m%d')
    deploy_dir = os.path.join(DEPLOY_OUTPUT_DIR, date_folder)
    try:
        os.mkdir(deploy_dir)
    except:
        pass

    # create temporary file name without extension
    tmp = tempfile.mktemp(dir=deploy_dir)
    arguments.output_file = tmp
    impact_layer = run_impact_function(arguments)

    if impact_layer.is_raster:
        new_name = '%s.tif' % tmp
    else:
        new_name = '%s.shp' % tmp

    # generating qml styles file
    qgis_impact_layer = get_layer(new_name)
    generate_styles(impact_layer, qgis_impact_layer)

    # if asked to generate report
    if generate_report:
        arguments.report_template = ''
        arguments.output_file = new_name
        build_report(arguments)

    # archiving the layer
    new_name = archive_layer(new_name)
    # new_name is a file path to archived layer
    # we need to return the url
    new_basename = os.path.basename(new_name)
    output_url = urlparse.urljoin(DEPLOY_OUTPUT_URL,
                                  '%s/%s' % (date_folder, new_basename))
    return output_url
Exemple #4
0
def run_analysis(hazard, exposure, function, aggregation=None,
                 generate_report=False):
    """Run analysis"""
    hazard_file = download_layer(hazard)
    exposure_file = download_layer(exposure)
    aggregation_file = None
    if aggregation:
        aggregation_file = download_layer(aggregation)
    arguments = CommandLineArguments()
    arguments.hazard = hazard_file
    arguments.exposure = exposure_file
    arguments.aggregation = aggregation_file
    arguments.impact_function = function

    # generate names for impact results
    # create date timestamp
    date_folder = datetime.datetime.now().strftime('%Y%m%d')
    deploy_dir = os.path.join(DEPLOY_OUTPUT_DIR, date_folder)
    try:
        os.mkdir(deploy_dir)
    except:
        pass

    # create temporary file name without extension
    tmp = tempfile.mktemp(dir=deploy_dir)
    arguments.output_file = tmp
    impact_layer = run_impact_function(arguments)

    if impact_layer.is_raster:
        new_name = '%s.tif' % tmp
    else:
        new_name = '%s.shp' % tmp

    # generating qml styles file
    qgis_impact_layer = get_layer(new_name)
    generate_styles(impact_layer, qgis_impact_layer)

    # if asked to generate report
    if generate_report:
        arguments.report_template = ''
        arguments.output_file = new_name
        build_report(arguments)

    # archiving the layer
    new_name = archive_layer(new_name)
    # new_name is a file path to archived layer
    # we need to return the url
    new_basename = os.path.basename(new_name)
    output_url = urlparse.urljoin(
        DEPLOY_OUTPUT_URL,
        '%s/%s' % (date_folder, new_basename)
    )
    return output_url