Пример #1
0
 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')
Пример #2
0
 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')
Пример #3
0
    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)
Пример #4
0
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
Пример #5
0
 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')