コード例 #1
0
    def testStdRun(self):
        with TempDir() as d:
            in_raster = os.path.join(d, 'test_bpi.tif')
            std_raster = os.path.join(d, 'test_std_bpi.tif')

            # was encountering this: ERROR 000875: Output raster:
            # c:\Users\shau7031\AppData\Local\Temp\tmp8co8nk\FocalSt_bath1's
            # workspace is an invalid workspace. Force workspace to temp:
            arcpy.env.scratchWorkspace = d
            bpi.main(bathy=config.bathy_raster,
                     inner_radius=10,
                     outer_radius=30,
                     out_raster=in_raster,
                     bpi_type='broad')

            self.assertTrue(os.path.exists(in_raster))

            standardize_bpi_grids.main(bpi_raster=in_raster,
                                       out_raster=std_raster)
            self.assertTrue(os.path.exists(std_raster))

            self.assertAlmostEqual(su.raster_properties(std_raster, "MEAN"),
                                   0.671608391608)
            self.assertAlmostEqual(su.raster_properties(std_raster, "STD"),
                                   99.655593923183)
コード例 #2
0
ファイル: btm_model.py プロジェクト: hadijarahi/btm
def main(out_workspace, input_bathymetry, broad_bpi_inner_radius,
         broad_bpi_outer_radius, fine_bpi_inner_radius,
         fine_bpi_outer_radius, classification_dict, output_zones):
    """
    Compute complete model. The crux of this computation maps ranges
    of values provided in the classification dictionary (a CSV or Excel
    spreadsheet) to bathymetry derivatives: standardized
    fine- and broad- scale BPI and slope.
    """

    # local variables:
    broad_bpi = os.path.join(out_workspace, "broad_bpi")
    fine_bpi = os.path.join(out_workspace, "fine_bpi")
    slope_rast = os.path.join(out_workspace, "slope")
    broad_std = os.path.join(out_workspace, "broad_std")
    fine_std = os.path.join(out_workspace, "fine_std")

    utils.workspace_exists(out_workspace)
    # set geoprocessing environments
    arcpy.env.scratchWorkspace = out_workspace
    arcpy.env.workspace = out_workspace

    # TODO: currently set to automatically overwrite, expose this as option
    arcpy.env.overwriteOutput = True

    try:
        # Process: Build Broad Scale BPI
        utils.msg("Calculating broad-scale BPI...")
        bpi.main(input_bathymetry, broad_bpi_inner_radius,
                 broad_bpi_outer_radius, broad_bpi, bpi_type='broad')

        # Process: Build Fine Scale BPI
        utils.msg("Calculating fine-scale BPI...")
        bpi.main(input_bathymetry, fine_bpi_inner_radius,
                 fine_bpi_outer_radius, fine_bpi, bpi_type='fine')

        # Process: Standardize BPIs
        utils.msg("Standardizing BPI rasters...")
        standardize_bpi.main(broad_bpi, broad_std)
        standardize_bpi.main(fine_bpi, fine_std)

        # Process: Calculate Slope
        slope.main(input_bathymetry, slope_rast)

        # Process: Zone Classification Builder
        outputs_base = arcpy.env.addOutputsToMap
        arcpy.env.addOutputsToMap = True
        utils.msg("Classifying Zones...")
        classify.main(classification_dict, broad_std, fine_std,
                      slope_rast, input_bathymetry, output_zones)
        arcpy.env.addOutputsToMap = outputs_base

    except Exception as e:
        # Print error message if an error occurs
        utils.msg(e, mtype='error')
コード例 #3
0
ファイル: testMain.py プロジェクト: EsriOceans/btm
    def testBpiRun(self):
        with TempDir() as d:
            raster_fn = 'test_run_bpi.tif'
            bpi_raster = os.path.join(d, raster_fn)
            bpi.main(bathy=config.bathy_raster, inner_radius=10,
                     outer_radius=30, out_raster=bpi_raster, bpi_type='broad')

            self.assertTrue(raster_fn in os.listdir(d))

            self.assertAlmostEqual(
                su.raster_properties(bpi_raster, "MEAN"), 0.295664335664)
            self.assertAlmostEqual(
                su.raster_properties(bpi_raster, "STD"), 1.65611606614)
コード例 #4
0
    def testBpiRun(self):
        with TempDir() as d:
            raster_fn = 'test_run_bpi.tif'
            bpi_raster = os.path.join(d, raster_fn)
            bpi.main(bathy=config.bathy_raster,
                     inner_radius=10,
                     outer_radius=30,
                     out_raster=bpi_raster,
                     bpi_type='broad')

            self.assertTrue(raster_fn in os.listdir(d))

            self.assertAlmostEqual(su.raster_properties(bpi_raster, "MEAN"),
                                   0.295664335664)
            self.assertAlmostEqual(su.raster_properties(bpi_raster, "STD"),
                                   1.65611606614)
コード例 #5
0
ファイル: testMain.py プロジェクト: chinasio/btm
    def testStdRun(self):
        with TempDir() as d:
            in_raster = os.path.join(d, 'test_bpi.tif')
            std_raster = os.path.join(d, 'test_std_bpi.tif')

            # was encountering this: ERROR 000875: Output raster:
            # c:\Users\shau7031\AppData\Local\Temp\tmp8co8nk\FocalSt_bath1's
            # workspace is an invalid output workspace. Force the workspace to temp:
            arcpy.env.scratchWorkspace = d
            bpi.main(bathy=config.bathy_raster, inner_radius=10,
                outer_radius=30, out_raster=in_raster, bpi_type='broad')

            self.assertTrue(os.path.exists(in_raster))

            standardize_bpi_grids.main(bpi_raster=in_raster, out_raster=std_raster)
            self.assertTrue(os.path.exists(std_raster))

            self.assertAlmostEqual(
                    su.raster_properties(std_raster, "MEAN"), 0.671608391608)
            self.assertAlmostEqual(
                    su.raster_properties(std_raster, "STD"), 99.655593923183)
コード例 #6
0
def main(out_workspace, input_bathymetry, broad_bpi_inner_radius,
         broad_bpi_outer_radius, fine_bpi_inner_radius, fine_bpi_outer_radius,
         classification_dict, output_zones):
    """
    Compute complete model. The crux of this computation maps ranges
    of values provided in the classification dictionary (a CSV or Excel
    spreadsheet) to bathymetry derivatives: standardized
    fine- and broad- scale BPI and slope.
    """

    # local variables:
    broad_bpi = os.path.join(out_workspace, "broad_bpi")
    fine_bpi = os.path.join(out_workspace, "fine_bpi")
    slope_rast = os.path.join(out_workspace, "slope")
    broad_std = os.path.join(out_workspace, "broad_std")
    fine_std = os.path.join(out_workspace, "fine_std")

    utils.workspace_exists(out_workspace)
    # set geoprocessing environments
    arcpy.env.scratchWorkspace = out_workspace
    arcpy.env.workspace = out_workspace

    # TODO: currently set to automatically overwrite, expose this as option
    arcpy.env.overwriteOutput = True

    try:
        # Process: Build Broad Scale BPI
        utils.msg("Calculating broad-scale BPI...")
        bpi.main(input_bathymetry,
                 broad_bpi_inner_radius,
                 broad_bpi_outer_radius,
                 broad_bpi,
                 bpi_type='broad')

        # Process: Build Fine Scale BPI
        utils.msg("Calculating fine-scale BPI...")
        bpi.main(input_bathymetry,
                 fine_bpi_inner_radius,
                 fine_bpi_outer_radius,
                 fine_bpi,
                 bpi_type='fine')

        # Process: Standardize BPIs
        utils.msg("Standardizing BPI rasters...")
        standardize_bpi.main(broad_bpi, broad_std)
        standardize_bpi.main(fine_bpi, fine_std)

        # Process: Calculate Slope
        slope.main(input_bathymetry, slope_rast)

        # Process: Zone Classification Builder
        outputs_base = arcpy.env.addOutputsToMap
        arcpy.env.addOutputsToMap = True
        utils.msg("Classifying Zones...")
        classify.main(classification_dict, broad_std, fine_std, slope_rast,
                      input_bathymetry, output_zones)
        arcpy.env.addOutputsToMap = outputs_base

    except Exception as e:
        # Print error message if an error occurs
        utils.msg(e, mtype='error')