def test_write_read_pfb(self): forcings_data = file_io_tools.read_file(test_files.forcings_pfb) file_io_tools.write_pfb(forcings_data, 'test_pfb_out.pfb') read_data = file_io_tools.read_file('test_pfb_out.pfb') self.assertIsNone(np.testing.assert_array_equal(forcings_data, read_data), 'writing and reading a pfb gives back the same array values') os.remove('test_pfb_out.pfb')
def test_read_write_tif_to_pfb(self): tif_array = file_io_tools.read_file(test_files.conus1_dem) file_io_tools.write_pfb(tif_array, outfile='conus1_dem_tif_to_pfb_test.pfb') pfb_array = file_io_tools.read_file('conus1_dem_tif_to_pfb_test.pfb') self.assertIsNone(np.testing.assert_array_equal(tif_array, pfb_array, 'Converting from tif to pfb gives back same data')) os.remove('conus1_dem_tif_to_pfb_test.pfb')
def write_mask_to_pfb(self, filename): """write the mask to a pfb file on disk Parameters ---------- filename : str path and filename to store pfb output Returns ------- None """ write_pfb(data=self.mask_array, outfile=filename)
def clip_inputs(clipper, input_list, out_dir='.', pfb_outs=1, tif_outs=0, no_data=NO_DATA) -> None: """clip a list of files using a clipper object Parameters ---------- clipper : Clipper clipper object prepared with full_dim_mask and reference dataset input_list : list list of data files (tif, pfb) to clip from out_dir : str, optional output directory (optional) (Default value = '.') pfb_outs : int, optional write pfb files as outputs (optional) (Default value = 1) tif_outs : int, optional write tif files as outputs (optional) (Default value = 0) no_data : int, optional no_data value for tifs (optional) (Default value = NO_DATA) Returns ------- None """ ref_proj = None if tif_outs: # identify projection ref_proj = clipper.subset_mask.mask_tif.GetProjection() # loop over and clip for data_file in input_list: filename = Path(data_file).stem return_arr, new_geom, _, _ = clipper.subset( file_io_tools.read_file(data_file)) if pfb_outs: file_io_tools.write_pfb( return_arr, os.path.join(out_dir, f'{filename}_clip.pfb')) if tif_outs and new_geom is not None and ref_proj is not None: file_io_tools.write_array_to_geotiff(os.path.join( out_dir, f'{filename}_clip.tif'), return_arr, new_geom, ref_proj, no_data=no_data) del return_arr
def test_box_clip_with_padding(self): data_array = file_io_tools.read_file(test_files.conus1_dem.as_posix()) # css-like padding (top,right,bot,left) bbox = test_files.huc10190004.get('conus1_bbox') box_clipper = BoxClipper(ref_array=data_array, x=bbox[0], y=bbox[1], nx=bbox[2], ny=bbox[3], padding=(1, 6, 1, 5)) subset, _, _, _ = box_clipper.subset() self.assertEqual(1, subset.shape[0]) self.assertEqual(32, subset.shape[1]) self.assertEqual(96, subset.shape[2]) file_io_tools.write_pfb(subset, 'WBDHU8_conus1_dem_padded_test.pfb') padded_subset_ref = file_io_tools.read_file( test_files.huc10190004.get('conus1_dem_padded_box').as_posix()) self.assertIsNone( np.testing.assert_array_equal(padded_subset_ref, subset)) os.remove('WBDHU8_conus1_dem_padded_test.pfb')