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)
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')
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)
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)
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)