Skip to content

Commit 3277861

Browse files
gshiromaGitHub Enterprise
authored andcommitted
Separate DEM interp method from data interp method in GeocodeCov (#718)
* separate DEM interp method from data interp method * add getter for _data_interpolator attribute
1 parent 9598004 commit 3277861

File tree

7 files changed

+41
-34
lines changed

7 files changed

+41
-34
lines changed

cxx/isce3/geocode/GeocodeCov.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ void Geocode<T>::geocode(
145145
isce3::io::Raster* out_geo_rtc, isce3::io::Raster* input_rtc,
146146
isce3::io::Raster* output_rtc, geocodeMemoryMode geocode_memory_mode,
147147
const int min_block_size, const int max_block_size,
148-
isce3::core::dataInterpMethod interp_method)
148+
isce3::core::dataInterpMethod dem_interp_method)
149149
{
150150
bool flag_complex_to_real = isce3::signal::verifyComplexToRealCasting(
151151
input_raster, output_raster, exponent);
@@ -171,7 +171,7 @@ void Geocode<T>::geocode(
171171
radar_grid_nlooks, out_off_diag_terms, out_geo_rdr,
172172
out_geo_dem, out_geo_nlooks, out_geo_rtc, input_rtc,
173173
output_rtc, geocode_memory_mode, min_block_size,
174-
max_block_size, interp_method);
174+
max_block_size, dem_interp_method);
175175
else if (std::is_same<T, double>::value ||
176176
std::is_same<T, std::complex<double>>::value)
177177
geocodeAreaProj<double>(
@@ -184,7 +184,7 @@ void Geocode<T>::geocode(
184184
radar_grid_nlooks, out_off_diag_terms, out_geo_rdr,
185185
out_geo_dem, out_geo_nlooks, out_geo_rtc, input_rtc,
186186
output_rtc, geocode_memory_mode, min_block_size,
187-
max_block_size, interp_method);
187+
max_block_size, dem_interp_method);
188188
else
189189
geocodeAreaProj<float>(
190190
radar_grid, input_raster, output_raster, dem_raster,
@@ -196,7 +196,7 @@ void Geocode<T>::geocode(
196196
radar_grid_nlooks, out_off_diag_terms, out_geo_rdr,
197197
out_geo_dem, out_geo_nlooks, out_geo_rtc, input_rtc,
198198
output_rtc, geocode_memory_mode, min_block_size,
199-
max_block_size, interp_method);
199+
max_block_size, dem_interp_method);
200200
}
201201

202202
template<class T>
@@ -211,7 +211,7 @@ void Geocode<T>::geocodeInterp(
211211
auto start_time = std::chrono::high_resolution_clock::now();
212212

213213
std::unique_ptr<isce3::core::Interpolator<T_out>> interp {
214-
isce3::core::createInterpolator<T_out>(_interp_method)};
214+
isce3::core::createInterpolator<T_out>(_data_interp_method)};
215215

216216
// number of bands in the input raster
217217
int nbands = inputRaster.numBands();
@@ -723,7 +723,7 @@ void Geocode<T>::geocodeAreaProj(
723723
isce3::io::Raster* out_geo_rtc, isce3::io::Raster* input_rtc,
724724
isce3::io::Raster* output_rtc, geocodeMemoryMode geocode_memory_mode,
725725
const int min_block_size, const int max_block_size,
726-
isce3::core::dataInterpMethod interp_method)
726+
isce3::core::dataInterpMethod dem_interp_method)
727727
{
728728

729729
if (std::isnan(geogrid_upsampling))
@@ -752,7 +752,7 @@ void Geocode<T>::geocodeAreaProj(
752752
upsampled_radar_grid_nlooks, out_off_diag_terms, out_geo_rdr,
753753
out_geo_dem, out_geo_nlooks, out_geo_rtc, input_rtc, output_rtc,
754754
geocode_memory_mode, min_block_size, max_block_size,
755-
interp_method);
755+
dem_interp_method);
756756
return;
757757
}
758758
pyre::journal::info_t info("isce.geometry.Geocode.geocodeAreaProj");
@@ -841,7 +841,7 @@ void Geocode<T>::geocodeAreaProj(
841841
input_terrain_radiometry, output_terrain_radiometry,
842842
rtc_area_mode, rtc_algorithm, rtc_geogrid_upsampling,
843843
rtc_min_value_db, radar_grid_nlooks, nullptr, nullptr,
844-
nullptr, rtc_memory_mode, interp_method, _threshold,
844+
nullptr, rtc_memory_mode, dem_interp_method, _threshold,
845845
_numiter, 1.0e-8);
846846
} else {
847847
info << "reading pre-computed RTC..." << pyre::journal::newline;
@@ -961,7 +961,7 @@ void Geocode<T>::geocodeAreaProj(
961961
block_size_y, block_size_with_upsampling_y, block_y,
962962
block_size_x, block_size_with_upsampling_x, block_x,
963963
numdone, progress_block, geogrid_upsampling, nbands,
964-
nbands_off_diag_terms, interp_method, dem_raster,
964+
nbands_off_diag_terms, dem_interp_method, dem_raster,
965965
out_off_diag_terms, out_geo_rdr, out_geo_dem,
966966
out_geo_nlooks, out_geo_rtc, start, pixazm, dr, r0,
967967
proj.get(), flag_apply_rtc,
@@ -980,7 +980,7 @@ void Geocode<T>::geocodeAreaProj(
980980
block_size_y, block_size_with_upsampling_y, block_y,
981981
block_size_x, block_size_with_upsampling_x, block_x,
982982
numdone, progress_block, geogrid_upsampling, nbands,
983-
nbands_off_diag_terms, interp_method, dem_raster,
983+
nbands_off_diag_terms, dem_interp_method, dem_raster,
984984
out_off_diag_terms, out_geo_rdr, out_geo_dem,
985985
out_geo_nlooks, out_geo_rtc, start, pixazm, dr, r0,
986986
proj.get(), flag_apply_rtc,
@@ -1117,7 +1117,7 @@ void Geocode<T>::_runBlock(
11171117
int block_size_x, int block_size_with_upsampling_x, int block_x,
11181118
long long& numdone, const long long& progress_block,
11191119
double geogrid_upsampling, int nbands,
1120-
int nbands_off_diag_terms, isce3::core::dataInterpMethod interp_method,
1120+
int nbands_off_diag_terms, isce3::core::dataInterpMethod dem_interp_method,
11211121
isce3::io::Raster& dem_raster, isce3::io::Raster* out_off_diag_terms,
11221122
isce3::io::Raster* out_geo_rdr,
11231123
isce3::io::Raster* out_geo_dem, isce3::io::Raster* out_geo_nlooks,
@@ -1192,7 +1192,7 @@ void Geocode<T>::_runBlock(
11921192
int ii_0 = block_y * block_size_with_upsampling_y;
11931193
int jj_0 = block_x * block_size_with_upsampling_x;
11941194

1195-
isce3::geometry::DEMInterpolator dem_interp_block(0, interp_method);
1195+
isce3::geometry::DEMInterpolator dem_interp_block(0, dem_interp_method);
11961196

11971197
double minX = _geoGridStartX +
11981198
(((double) jj_0) / geogrid_upsampling * _geoGridSpacingX);
@@ -1915,7 +1915,7 @@ std::vector<float> getGeoAreaElementMean(
19151915
isce3::geometry::rtcOutputTerrainRadiometry output_terrain_radiometry,
19161916
int exponent, geocodeOutputMode output_mode, double geogrid_upsampling,
19171917
float rtc_min_value_db, double abs_cal_factor, float radar_grid_nlooks,
1918-
float* out_nlooks, isce3::core::dataInterpMethod interp_method,
1918+
float* out_nlooks, isce3::core::dataInterpMethod dem_interp_method,
19191919
double threshold, int num_iter, double delta_range)
19201920
{
19211921

@@ -2065,7 +2065,7 @@ std::vector<float> getGeoAreaElementMean(
20652065
*rtc_raster_unique_ptr.get(), input_terrain_radiometry,
20662066
output_terrain_radiometry, rtc_area_mode, rtc_algorithm,
20672067
geogrid_upsampling * 2, rtc_min_value_db, radar_grid_nlooks,
2068-
nullptr, rtc_memory_mode, interp_method, threshold, num_iter,
2068+
nullptr, rtc_memory_mode, dem_interp_method, threshold, num_iter,
20692069
delta_range);
20702070

20712071
rtc_area.resize(radar_grid_cropped.length(),

cxx/isce3/geocode/GeocodeCov.h

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class Geocode {
8383
* @param[in] geocode_memory_mode Select memory mode
8484
* @param[in] min_block_size Minimum block size (per thread)
8585
* @param[in] max_block_size Maximum block size (per thread)
86-
* @param[in] interp_method Data interpolation method
86+
* @param[in] dem_interp_method DEM interpolation method
8787
*/
8888
void
8989
geocode(const isce3::product::RadarGridParameters& radar_grid,
@@ -121,7 +121,7 @@ class Geocode {
121121
isce3::geometry::AP_DEFAULT_MIN_BLOCK_SIZE,
122122
const int max_block_size =
123123
isce3::geometry::AP_DEFAULT_MAX_BLOCK_SIZE,
124-
isce3::core::dataInterpMethod interp_method =
124+
isce3::core::dataInterpMethod dem_interp_method =
125125
isce3::core::dataInterpMethod::BIQUINTIC_METHOD);
126126

127127
/** Geocode using the interpolation algorithm.
@@ -175,7 +175,7 @@ class Geocode {
175175
* geo-coordinates).
176176
* @param[in] in_rtc Input RTC area factor (in slant-range).
177177
* @param[out] out_rtc Output RTC area factor (in slant-range).
178-
* @param[in] interp_method Data interpolation method
178+
* @param[in] dem_interp_method DEM interpolation method
179179
* @param[in] min_block_size Minimum block size (per thread)
180180
* @param[in] max_block_size Maximum block size (per thread)
181181
* @param[in] geocode_memory_mode Select memory mode
@@ -216,7 +216,7 @@ class Geocode {
216216
isce3::geometry::AP_DEFAULT_MIN_BLOCK_SIZE,
217217
const int max_block_size =
218218
isce3::geometry::AP_DEFAULT_MAX_BLOCK_SIZE,
219-
isce3::core::dataInterpMethod interp_method =
219+
isce3::core::dataInterpMethod dem_interp_method =
220220
isce3::core::dataInterpMethod::BIQUINTIC_METHOD);
221221

222222
/** Set the output geogrid
@@ -241,10 +241,15 @@ class Geocode {
241241
void updateGeoGrid(const isce3::product::RadarGridParameters& radar_grid,
242242
isce3::io::Raster& dem_raster);
243243

244-
// Set interpolator
245-
void interpolator(isce3::core::dataInterpMethod method)
244+
// Get/set data interpolator
245+
isce3::core::dataInterpMethod dataInterpolator() const
246+
{
247+
return _data_interp_method;
248+
}
249+
250+
void dataInterpolator(isce3::core::dataInterpMethod method)
246251
{
247-
_interp_method = method;
252+
_data_interp_method = method;
248253
}
249254

250255
void doppler(isce3::core::LUT2d<double> doppler) { _doppler = doppler; }
@@ -313,7 +318,7 @@ class Geocode {
313318
long long& numdone, const long long& progress_block,
314319
double geogrid_upsampling,
315320
int nbands, int nbands_off_diag_terms,
316-
isce3::core::dataInterpMethod interp_method,
321+
isce3::core::dataInterpMethod dem_interp_method,
317322
isce3::io::Raster& dem_raster,
318323
isce3::io::Raster* out_off_diag_terms,
319324
isce3::io::Raster* out_geo_rdr,
@@ -390,7 +395,7 @@ class Geocode {
390395
int _radarBlockMargin;
391396

392397
// interpolator
393-
isce3::core::dataInterpMethod _interp_method =
398+
isce3::core::dataInterpMethod _data_interp_method =
394399
isce3::core::dataInterpMethod::BIQUINTIC_METHOD;
395400
};
396401
std::vector<float> getGeoAreaElementMean(
@@ -410,7 +415,7 @@ std::vector<float> getGeoAreaElementMean(
410415
float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
411416
double abs_cal_factor = 1, float radar_grid_nlooks = 1,
412417
float* out_nlooks = nullptr,
413-
isce3::core::dataInterpMethod interp_method =
418+
isce3::core::dataInterpMethod dem_interp_method =
414419
isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
415420
double threshold = 1e-8, int num_iter = 100, double delta_range = 1e-8);
416421

python/extensions/pybind_isce3/geocode/GeocodeCov.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,16 @@ void addbinding(py::class_<Geocode<T>>& pyGeocode)
3535
&Geocode<T>::demBlockMargin)
3636
.def_property("radar_block_margin", nullptr,
3737
&Geocode<T>::radarBlockMargin)
38-
.def_property("interpolator", nullptr,
39-
[](Geocode<T>& self, std::string& method) {
38+
.def_property("data_interpolator",
39+
py::overload_cast<>(&Geocode<T>::dataInterpolator,
40+
py::const_),
41+
[](Geocode<T>& self, std::string& method) {
4042
// get interp method
41-
auto interp_method =
43+
auto data_interpolator =
4244
parseDataInterpMethod(method);
4345

4446
// set interp method
45-
self.interpolator(interp_method);
47+
self.dataInterpolator(data_interpolator);
4648
})
4749
.def_property_readonly("geogrid_start_x",
4850
&Geocode<T>::geoGridStartX)
@@ -98,7 +100,7 @@ void addbinding(py::class_<Geocode<T>>& pyGeocode)
98100
isce3::geometry::AP_DEFAULT_MIN_BLOCK_SIZE,
99101
py::arg("max_block_size") =
100102
isce3::geometry::AP_DEFAULT_MAX_BLOCK_SIZE,
101-
py::arg("interp_mode") = isce3::core::BIQUINTIC_METHOD);
103+
py::arg("dem_interp_method") = isce3::core::BIQUINTIC_METHOD);
102104
}
103105

104106
void addbinding(pybind11::enum_<geocodeOutputMode>& pyGeocodeMode)

python/packages/pybind_nisar/workflows/geocode_insar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def run(cfg, runw_hdf5, output_hdf5):
6060
geo.numiter_geo2rdr = iteration_geo2rdr
6161
geo.dem_block_margin = dem_block_margin
6262
geo.lines_per_block = lines_per_block
63-
geo.interpolator = interp_method
63+
geo.data_interpolator = interp_method
6464

6565
t_all = time.time()
6666
with h5py.File(output_hdf5, "a") as dst_h5:

tests/cxx/isce3/geocode/geocode.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ TEST(GeocodeTest, TestGeocodeCov) {
9494
geoObj.linesPerBlock(linesPerBlock);
9595
geoObj.demBlockMargin(demBlockMargin);
9696
geoObj.radarBlockMargin(radarBlockMargin);
97-
geoObj.interpolator(method);
97+
geoObj.dataInterpolator(method);
9898

9999
isce3::product::RadarGridParameters radar_grid(swath, lookSide);
100100

@@ -188,7 +188,7 @@ TEST(GeocodeTest, TestGeocodeCov) {
188188
geoComplexObj.linesPerBlock(linesPerBlock);
189189
geoComplexObj.demBlockMargin(demBlockMargin);
190190
geoComplexObj.radarBlockMargin(radarBlockMargin);
191-
geoComplexObj.interpolator(method);
191+
geoComplexObj.dataInterpolator(method);
192192

193193
geoComplexObj.geoGrid(geoGridStartX, geoGridStartY, geoGridSpacingX,
194194
geoGridSpacingY, geoGridWidth, geoGridLength,

tests/cxx/isce3/geometry/metadata_cubes/metadata_cubes.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ TEST(radarGridCubeTest, testRadarGridCube)
539539
geo_obj.linesPerBlock(1000);
540540
geo_obj.demBlockMargin(0.1);
541541
geo_obj.radarBlockMargin(100);
542-
geo_obj.interpolator(method);
542+
geo_obj.dataInterpolator(method);
543543

544544
geo_obj.geoGrid(x0, y0, dx, dy, width, length, epsg);
545545

tests/python/extensions/pybind/geocode/geocodeCov.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_run():
2525
geo_obj.lines_per_block = 1000
2626
geo_obj.dem_block_margin = 1e-1
2727
geo_obj.radar_block_margin = 10
28-
geo_obj.interpolator = 'biquintic'
28+
geo_obj.data_interpolator = 'biquintic'
2929

3030
# prepare geogrid
3131
geogrid_start_x = -115.6

0 commit comments

Comments
 (0)