def test_parse_gamma_dem_header(self): path = join(GAMMA_TEST_DIR, 'dem16x20raw.dem.par') hdrs = gamma.parse_dem_header(path) self.assertEqual(hdrs[ifc.PYRATE_NCOLS], 16) self.assertEqual(hdrs[ifc.PYRATE_NROWS], 20) self.assertEqual(hdrs[ifc.PYRATE_LAT], -33.3831945) self.assertEqual(hdrs[ifc.PYRATE_LONG], 150.3870833) self.assertEqual(hdrs[ifc.PYRATE_X_STEP], 6.9444445e-05) self.assertEqual(hdrs[ifc.PYRATE_Y_STEP], -6.9444445e-05)
def setUpClass(cls): # create common combined header obj so the headers are only read once # tricker: needs both ifg headers, and DEM one for the extents filenames = ['r20090713_VV.slc.par', 'r20090817_VV.slc.par'] hdr_paths = [join(GAMMA_TEST_DIR, f) for f in filenames] hdrs = [gamma.parse_epoch_header(p) for p in hdr_paths] dem_hdr_path = join(GAMMA_TEST_DIR, 'dem16x20raw.dem.par') cls.DEM_HDR = gamma.parse_dem_header(dem_hdr_path) cls.COMBINED = gamma.combine_headers(*hdrs, dem_hdr=cls.DEM_HDR)
def test_to_geotiff_dem(self): hdr_path = join(GAMMA_TEST_DIR, 'dem16x20raw.dem.par') hdr = gamma.parse_dem_header(hdr_path) data_path = join(GAMMA_TEST_DIR, 'dem16x20raw.dem') self.dest = os.path.join(TEMPDIR, "tmp_gamma_dem.tif") write_geotiff(hdr, data_path, self.dest, nodata=0) exp_path = join(GAMMA_TEST_DIR, 'dem16x20_subset_from_gamma.tif') exp_ds = gdal.Open(exp_path) ds = gdal.Open(self.dest) # compare data and geographic headers # HACK: round expected to nearest integer assert_array_almost_equal(np.rint(exp_ds.ReadAsArray()), ds.ReadAsArray()) self.compare_rasters(exp_ds, ds) md = ds.GetMetadata() self.assertTrue(md['AREA_OR_POINT'] == 'Area')
def read_dem(params): dem_file = params[cf.DEM_FILE] geotif_dem = os.path.join( params[cf.OUT_DIR], os.path.basename(dem_file).split('.')[0] + '.tif') mlooked_dem = prepifg.mlooked_path(geotif_dem, looks=params[cf.IFG_LKSX], crop_out=params[cf.IFG_CROP_OPT]) # make sure mlooked dem exist if not os.path.exists(mlooked_dem): raise prepifg.PreprocessError('mlooked dem was not found.' 'Please run prepifg.') dem_header = gamma.parse_dem_header(params[cf.DEM_HEADER_FILE]) lat, lon, nx, ny = return_pyaps_lat_lon(dem_header) ds = gdal.Open(mlooked_dem, gdalconst.GA_ReadOnly) dem = ds.ReadAsArray() ds = None return lat, lon, nx, ny, dem, mlooked_dem
def geo_correction_original(date_pair, params, incidence_angle_or_map): dem_file = params[cf.DEM_FILE] geotif_dem = os.path.join( params[cf.OUT_DIR], os.path.basename(dem_file).split('.')[0] + '.tif') mlooked_dem = prepifg.mlooked_path(geotif_dem, looks=params[cf.IFG_LKSX], crop_out=params[cf.IFG_CROP_OPT]) # make sure mlooked dem exist if not os.path.exists(mlooked_dem): raise prepifg.PreprocessError('mlooked dem was not found.' 'Please run prepifg.') dem_header = gamma.parse_dem_header(params[cf.DEM_HEADER_FILE]) lat, lon, nx, ny = return_pyaps_lat_lon(dem_header) """ using geo coordinates to remove APS """ aps1 = pa.PyAPS_geo(os.path.join(ECMWF_DIR, ECMWF_PRE + date_pair[0] + ECMWF_EXT), mlooked_dem, grib=ECMWF, verb=True, demfmt=GEOTIFF, demtype=np.float32, dem_header=(lon, lat, nx, ny)) aps2 = pa.PyAPS_geo(os.path.join(ECMWF_DIR, ECMWF_PRE + date_pair[1] + ECMWF_EXT), mlooked_dem, grib=ECMWF, verb=True, demfmt=GEOTIFF, demtype=np.float32, dem_header=(lon, lat, nx, ny)) phs1 = np.zeros((aps1.ny, aps1.nx)) phs2 = np.zeros((aps2.ny, aps2.nx)) print('Without Lat Lon files') aps1.getdelay(phs1, inc=incidence_angle_or_map) aps2.getdelay(phs2, inc=incidence_angle_or_map) aps_delay = phs2 - phs1 # delay in meters as we don't provide wavelength return aps_delay
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.SML_TEST_GAMMA, '20060828_slc.par')) header.update(dem_header) # insert some dummy data so we are the dem in write_geotiff is not # not activated and ifg write_geotiff operation works header[ifc.PYRATE_TIME_SPAN] = 0 header[ifc.SLAVE_DATE] = 0 header[ifc.DATA_UNITS] = 'degrees' header[ifc.DATA_TYPE] = ifc.ORIG header[ifc.SLAVE_TIME] = time(10) # now create aritrary 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_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) os.remove(temp_tif) os.remove(temp_unw)
def setUp(self): self.err = gamma.GammaException dem_hdr_path = join(GAMMA_TEST_DIR, 'dem16x20raw.dem.par') self.dh = gamma.parse_dem_header(dem_hdr_path)