def test_multilooked_tiffs_converted_to_unw_are_same(self): # Get multilooked geotiffs geotiffs = self.dest_paths # Convert back to .unw dest_unws = [] for g in geotiffs: dest_unw = os.path.join(self.params[cf.OUT_DIR], os.path.splitext(g)[0] + '.unw') shared.write_unw_from_data_or_geotiff(geotif_or_data=g, dest_unw=dest_unw, ifg_proc=1) dest_unws.append(dest_unw) dest_unws_ = [ MultiplePaths(self.params[cf.OUT_DIR], b, self.params[cf.IFG_LKSX], self.params[cf.IFG_CROP_OPT]) for b in dest_unws ] # Convert back to tiff new_geotiffs_ = conv2tif.do_geotiff(dest_unws_, self.params) new_geotiffs = [gt for gt, b in new_geotiffs_] # Ensure original multilooked geotiffs and # unw back to geotiff are the same for g, u in zip(geotiffs, new_geotiffs): g_ds = gdal.Open(g) u_gs = gdal.Open(u) np.testing.assert_array_almost_equal(u_gs.ReadAsArray(), g_ds.ReadAsArray()) u_gs = None g_ds = None
def test_multilooked_tiffs_converted_to_unw_are_same(self): # Get multilooked geotiffs geotiffs = list(set(self.dest_paths)) geotiffs = [g for g in geotiffs if 'dem' not in g] # Convert back to .unw dest_unws = [] for g in set(geotiffs): dest_unw = os.path.join(self.params[cf.OUT_DIR], Path(g).stem + '.unw') shared.write_unw_from_data_or_geotiff(geotif_or_data=g, dest_unw=dest_unw, ifg_proc=1) dest_unws.append(dest_unw) dest_unws_ = [] for d in dest_unws: dest_unws_.append(MultiplePaths(d, self.params)) # Convert back to tiff new_geotiffs_ = conv2tif.do_geotiff(dest_unws_, self.params) new_geotiffs = [gt for gt, b in new_geotiffs_] # Ensure original multilooked geotiffs and # unw back to geotiff are the same geotiffs.sort() new_geotiffs.sort() for g, u in zip(geotiffs, new_geotiffs): g_ds = gdal.Open(g) u_gs = gdal.Open(u) np.testing.assert_array_almost_equal(u_gs.ReadAsArray(), g_ds.ReadAsArray()) u_gs = None g_ds = None
def test_unw_contains_same_data_as_numpy_array(self): from datetime import time temp_unw = tempfile.mktemp(suffix='.unw') temp_tif = tempfile.mktemp(suffix='.tif') # setup some header files for use in write_geotif dem_header_file = common.SML_TEST_DEM_HDR_GAMMA dem_header = gamma.parse_dem_header(dem_header_file) header = gamma.parse_epoch_header( os.path.join(common.GAMMA_SML_TEST_DIR, '20060828_slc.par')) header.update(dem_header) base_header = gamma.parse_baseline_header( os.path.join(common.GAMMA_SML_TEST_DIR, '20060828-20061211_base.par')) header.update(base_header) # insert some dummy data so we are the dem in write_fullres_geotiff is not # not activated and ifg write_fullres_geotiff operation works header[ifc.PYRATE_TIME_SPAN] = 0 header[ifc.SECOND_DATE] = 0 header[ifc.DATA_UNITS] = 'degrees' header[ifc.DATA_TYPE] = ifc.ORIG header[ifc.SECOND_TIME] = time(10) # now create arbitrary data data = np.random.rand(dem_header[ifc.PYRATE_NROWS], dem_header[ifc.PYRATE_NCOLS]) # convert numpy array to .unw shared.write_unw_from_data_or_geotiff(geotif_or_data=data, dest_unw=temp_unw, ifg_proc=1) # convert the .unw to geotif shared.write_fullres_geotiff(header=header, data_path=temp_unw, dest=temp_tif, nodata=np.nan) # now compare geotiff with original numpy array ds = gdal.Open(temp_tif, gdal.GA_ReadOnly) data_lv_theta = ds.ReadAsArray() ds = None np.testing.assert_array_almost_equal(data, data_lv_theta) try: os.remove(temp_tif) except PermissionError: print("File opened by another process.") try: os.remove(temp_unw) except PermissionError: print("File opened by another process.")
def test_roipac_raises(self): geotiffs = [ os.path.join( self.params[cf.OUT_DIR], os.path.basename(b).split('.')[0] + '_' + os.path.basename(b).split('.')[1] + '.tif') for b in self.base_unw_paths ] for g in geotiffs[:1]: dest_unw = os.path.join(self.params[cf.OUT_DIR], os.path.splitext(g)[0] + '.unw') with self.assertRaises(NotImplementedError): shared.write_unw_from_data_or_geotiff(geotif_or_data=g, dest_unw=dest_unw, ifg_proc=0)
dem_header = gamma.parse_dem_header(dem_header_file) header = gamma.parse_epoch_header( os.path.join(common.SML_TEST_GAMMA, '20060828_slc.par')) incidence_angle = header[ifc.PYRATE_INCIDENCE_DEGREES] incidence_data = np.ones( shape=(dem_header[ifc.PYRATE_NROWS], dem_header[ifc.PYRATE_NCOLS])) * incidence_angle elevation_data = np.ones( shape=(dem_header[ifc.PYRATE_NROWS], dem_header[ifc.PYRATE_NCOLS])) * (90.0 - incidence_angle) shared.write_unw_from_data_or_geotiff(geotif_or_data=incidence_data, dest_unw=inc_file, ifg_proc=1) shared.write_unw_from_data_or_geotiff(geotif_or_data=elevation_data, dest_unw=elevation_file, ifg_proc=1) header.update(dem_header) header[ifc.PYRATE_TIME_SPAN] = 0 header[ifc.SLAVE_DATE] = 0 header[ifc.DATA_UNITS] = 'degrees' header[ifc.DATA_TYPE] = ifc.INCIDENCE header[ifc.SLAVE_TIME] = 0 shared.write_geotiff(header=header, data_path=elevation_file, dest=dest_lv_theta,