Exemplo n.º 1
0
 def test_make_directories_on_existing(self):
     """utils: test that no error if directory already exists."""
     from natcap.invest import utils
     path = os.path.join(self.workspace_dir, 'foo', 'bar', 'baz')
     os.makedirs(path)
     utils.make_directories([path])
     self.assertTrue(os.path.isdir(path))
Exemplo n.º 2
0
 def test_make_directories(self):
     """utils: test that make directories works as expected."""
     from natcap.invest import utils
     directory_list = [
         os.path.join(self.workspace_dir, x) for x in [
             'apple', 'apple/pie', 'foo/bar/baz']]
     utils.make_directories(directory_list)
     for path in directory_list:
         self.assertTrue(os.path.isdir(path))
Exemplo n.º 3
0
 def test_make_directories_on_file(self):
     """utils: test that value error raised if file exists on directory."""
     from natcap.invest import utils
     dir_path = os.path.join(self.workspace_dir, 'foo', 'bar')
     os.makedirs(dir_path)
     file_path = os.path.join(dir_path, 'baz')
     file = open(file_path, 'w')
     file.close()
     with self.assertRaises(OSError):
         utils.make_directories([file_path])
Exemplo n.º 4
0
def _get_args(workspace, num_transitions=2, valuation=True):
    """Create and return arguments for CBC main model.

    Parameters:
        workspace(string): A path to a folder on disk.  Generated inputs will
            be saved to this directory.
        num_transitions=2 (int): The number of transitions to synthesize.
        valuation=True (bool): Whether to include parameters related to
            valuation in the args dict.

    Returns:
        args (dict): main model arguments.
    """
    band_matrices = [numpy.ones((2, 2))]
    band_matrices_two = [numpy.ones((2, 2)) * 2]
    band_matrices_with_nodata = [numpy.ones((2, 2))]
    band_matrices_with_nodata[0][0][0] = NODATA_INT
    srs = pygeotest.sampledata.SRS_WILLAMETTE

    lulc_lookup_uri = _create_table(
        os.path.join(workspace, 'lulc_lookup.csv'), lulc_lookup_list)
    lulc_transition_matrix_uri = _create_table(
        os.path.join(workspace, 'lulc_transition_matrix.csv'),
        lulc_transition_matrix_list)
    carbon_pool_initial_uri = _create_table(
        os.path.join(workspace, 'carbon_pool_initial.csv'),
        carbon_pool_initial_list)
    carbon_pool_transient_uri = _create_table(
        os.path.join(workspace, 'carbon_pool_transient.csv'),
        carbon_pool_transient_list)
    raster_0_uri = pygeotest.create_raster_on_disk(
        band_matrices,
        srs.origin,
        srs.projection,
        NODATA_INT,
        srs.pixel_size(100),
        datatype=gdal.GDT_Int32,
        filename=os.path.join(workspace, 'raster_0.tif'))
    raster_1_uri = pygeotest.create_raster_on_disk(
        band_matrices_with_nodata,
        srs.origin,
        srs.projection,
        NODATA_INT,
        srs.pixel_size(100),
        datatype=gdal.GDT_Int32,
        filename=os.path.join(workspace, 'raster_1.tif'))
    raster_2_uri = pygeotest.create_raster_on_disk(
        band_matrices_two,
        srs.origin,
        srs.projection,
        NODATA_INT,
        srs.pixel_size(100),
        datatype=gdal.GDT_Int32,
        filename=os.path.join(workspace, 'raster_2.tif'))

    possible_transitions = [raster_1_uri, raster_2_uri]
    possible_transition_years = [2000, 2005]

    args = {
        'workspace_dir': os.path.join(workspace, 'workspace'),
        'results_suffix': 'test',
        'lulc_lookup_uri': lulc_lookup_uri,
        'lulc_transition_matrix_uri': lulc_transition_matrix_uri,
        'lulc_baseline_map_uri': raster_0_uri,
        'lulc_baseline_year': 1995,
        'lulc_transition_maps_list': possible_transitions[:num_transitions+1],
        'lulc_transition_years_list': possible_transition_years[:num_transitions+1],
        'analysis_year': 2010,
        'carbon_pool_initial_uri': carbon_pool_initial_uri,
        'carbon_pool_transient_uri': carbon_pool_transient_uri,
        'do_economic_analysis': False,
    }

    utils.make_directories([args['workspace_dir']])

    if valuation:
        args.update({
            'do_economic_analysis': True,
            'do_price_table': False,
            'price': 2.,
            'inflation_rate': 5.,
            'price_table_uri': None,
            'discount_rate': 2.
        })

    return args
Exemplo n.º 5
0
 def test_make_directories_wrong_type(self):
     """utils: test that ValueError raised if value not a list."""
     from natcap.invest import utils
     with self.assertRaises(ValueError):
         utils.make_directories(self.workspace_dir)