isce3 0.25.0
Loading...
Searching...
No Matches
GeocodeCov.h
1#pragma once
2
3#include <functional>
4#include <optional>
5
6// pyre
7#include <pyre/journal.h>
8
9// isce3::core
10#include <isce3/core/Constants.h>
11#include <isce3/core/Ellipsoid.h>
12#include <isce3/core/LUT2d.h>
13#include <isce3/core/Orbit.h>
14#include <isce3/product/SubSwaths.h>
15#include <isce3/core/blockProcessing.h>
16
17// isce3::io
18#include <isce3/io/Raster.h>
19
20// isce3::product
21#include <isce3/product/RadarGridProduct.h>
22#include <isce3/product/RadarGridParameters.h>
23
24// isce3::geometry
25#include <isce3/geometry/RTC.h>
26
27namespace isce3 { namespace geocode {
28
30enum geocodeOutputMode {
31 INTERP = 0,
32 AREA_PROJECTION = 1,
33};
34
35
36template<class T>
37class Geocode {
38public:
109 void geocode(const isce3::product::RadarGridParameters& radar_grid,
110 isce3::io::Raster& input_raster, isce3::io::Raster& output_raster,
111 isce3::io::Raster& dem_raster,
112 geocodeOutputMode output_mode = geocodeOutputMode::INTERP,
113 bool flag_az_baseband_doppler = false, bool flatten = false,
114 double geogrid_upsampling = 1,
115 bool flag_upsample_radar_grid = false, bool flag_apply_rtc = false,
117 input_terrain_radiometry = isce3::geometry::
118 rtcInputTerrainRadiometry::BETA_NAUGHT,
120 output_terrain_radiometry = isce3::geometry::
121 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
122 int exponent = 0,
123 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
124 double rtc_geogrid_upsampling =
125 std::numeric_limits<double>::quiet_NaN(),
126 isce3::geometry::rtcAlgorithm rtc_algorithm =
127 isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION,
128 isce3::geometry::rtcAreaBetaMode rtc_area_beta_mode =
130 double abs_cal_factor = 1,
131 float clip_min = std::numeric_limits<float>::quiet_NaN(),
132 float clip_max = std::numeric_limits<float>::quiet_NaN(),
133 float min_nlooks = std::numeric_limits<float>::quiet_NaN(),
134 float radar_grid_nlooks = 1,
135 isce3::io::Raster* out_off_diag_terms = nullptr,
136 isce3::io::Raster* out_geo_rdr = nullptr,
137 isce3::io::Raster* out_geo_dem = nullptr,
138 isce3::io::Raster* out_geo_nlooks = nullptr,
139 isce3::io::Raster* out_geo_rtc = nullptr,
140 isce3::io::Raster* out_geo_rtc_gamma0_to_sigma0 = nullptr,
141 isce3::io::Raster* phase_screen_raster = nullptr,
142 const isce3::core::LUT2d<double>& az_time_correction = {},
143 const isce3::core::LUT2d<double>& slant_range_correction = {},
144 isce3::io::Raster* input_rtc = nullptr,
145 isce3::io::Raster* output_rtc = nullptr,
146 isce3::io::Raster* input_layover_shadow_mask_raster = nullptr,
147 isce3::product::SubSwaths* sub_swaths = nullptr,
148 std::optional<bool> apply_valid_samples_sub_swath_masking = std::nullopt,
149 isce3::io::Raster* out_mask = nullptr,
150 isce3::core::GeocodeMemoryMode geocode_memory_mode =
151 isce3::core::GeocodeMemoryMode::Auto,
152 const long long min_block_size =
153 isce3::core::DEFAULT_MIN_BLOCK_SIZE,
154 const long long max_block_size =
155 isce3::core::DEFAULT_MAX_BLOCK_SIZE,
156 isce3::core::dataInterpMethod dem_interp_method =
157 isce3::core::dataInterpMethod::BIQUINTIC_METHOD);
158
210 template<class T_out>
212 isce3::io::Raster& input_raster, isce3::io::Raster& output_raster,
213 isce3::io::Raster& dem_raster, bool flag_apply_rtc = false,
214 bool flag_az_baseband_doppler = false, bool flatten = false,
216 input_terrain_radiometry = isce3::geometry::
217 rtcInputTerrainRadiometry::BETA_NAUGHT,
219 output_terrain_radiometry = isce3::geometry::
220 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
221 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
222 double rtc_geogrid_upsampling =
223 std::numeric_limits<double>::quiet_NaN(),
224 isce3::geometry::rtcAlgorithm rtc_algorithm =
225 isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION,
226 isce3::geometry::rtcAreaBetaMode rtc_area_beta_mode =
228 double abs_cal_factor = 1,
229 float clip_min = std::numeric_limits<float>::quiet_NaN(),
230 float clip_max = std::numeric_limits<float>::quiet_NaN(),
231 isce3::io::Raster* out_geo_rdr = nullptr,
232 isce3::io::Raster* out_geo_dem = nullptr,
233 isce3::io::Raster* out_geo_rtc = nullptr,
234 isce3::io::Raster* out_geo_rtc_gamma0_to_sigma0 = nullptr,
235 isce3::io::Raster* phase_screen_raster = nullptr,
236 const isce3::core::LUT2d<double>& az_time_correction = {},
237 const isce3::core::LUT2d<double>& slant_range_correction = {},
238 isce3::io::Raster* input_rtc = nullptr,
239 isce3::io::Raster* output_rtc = nullptr,
240 isce3::io::Raster* input_layover_shadow_mask_raster = nullptr,
241 isce3::product::SubSwaths* sub_swaths = nullptr,
242 std::optional<bool> apply_valid_samples_sub_swath_masking = {},
243 isce3::io::Raster* out_mask = nullptr,
244 isce3::core::GeocodeMemoryMode geocode_memory_mode =
245 isce3::core::GeocodeMemoryMode::Auto,
246 const long long min_block_size =
247 isce3::core::DEFAULT_MIN_BLOCK_SIZE,
248 const long long max_block_size =
249 isce3::core::DEFAULT_MAX_BLOCK_SIZE,
250 isce3::core::dataInterpMethod dem_interp_method =
251 isce3::core::dataInterpMethod::BIQUINTIC_METHOD);
252
313 template<class T_out>
314 void geocodeAreaProj(
315 const isce3::product::RadarGridParameters& radar_grid,
316 isce3::io::Raster& input_raster, isce3::io::Raster& output_raster,
317 isce3::io::Raster& dem_raster,
318 double geogrid_upsampling = 1,
319 bool flag_upsample_radar_grid = false,
320 bool flag_apply_rtc = false,
321 isce3::geometry::rtcInputTerrainRadiometry input_terrain_radiometry =
322 isce3::geometry::rtcInputTerrainRadiometry::BETA_NAUGHT,
324 output_terrain_radiometry = isce3::geometry::
325 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
326 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
327 double rtc_geogrid_upsampling =
328 std::numeric_limits<double>::quiet_NaN(),
329 isce3::geometry::rtcAlgorithm rtc_algorithm =
330 isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION,
331 isce3::geometry::rtcAreaBetaMode rtc_area_beta_mode =
333 double abs_cal_factor = 1,
334 float clip_min = std::numeric_limits<float>::quiet_NaN(),
335 float clip_max = std::numeric_limits<float>::quiet_NaN(),
336 float min_nlooks = std::numeric_limits<float>::quiet_NaN(),
337 float radar_grid_nlooks = 1,
338 isce3::io::Raster* out_off_diag_terms = nullptr,
339 isce3::io::Raster* out_geo_rdr = nullptr,
340 isce3::io::Raster* out_geo_dem = nullptr,
341 isce3::io::Raster* out_geo_nlooks = nullptr,
342 isce3::io::Raster* out_geo_rtc = nullptr,
343 isce3::io::Raster* out_geo_rtc_gamma0_to_sigma0 = nullptr,
344 const isce3::core::LUT2d<double>& az_time_correction = {},
345 const isce3::core::LUT2d<double>& slant_range_correction = {},
346 isce3::io::Raster* input_rtc = nullptr,
347 isce3::io::Raster* output_rtc = nullptr,
348 isce3::io::Raster* input_layover_shadow_mask_raster = nullptr,
349 isce3::product::SubSwaths* sub_swaths = nullptr,
350 std::optional<bool> apply_valid_samples_sub_swath_masking = std::nullopt,
351 isce3::io::Raster* out_mask = nullptr,
352 isce3::core::GeocodeMemoryMode geocode_memory_mode =
353 isce3::core::GeocodeMemoryMode::Auto,
354 const long long min_block_size =
355 isce3::core::DEFAULT_MIN_BLOCK_SIZE,
356 const long long max_block_size =
357 isce3::core::DEFAULT_MAX_BLOCK_SIZE,
358 isce3::core::dataInterpMethod dem_interp_method =
359 isce3::core::dataInterpMethod::BIQUINTIC_METHOD);
360
372 void geoGrid(double geoGridStartX, double geoGridStartY,
373 double geoGridSpacingX, double geoGridSpacingY, int width,
374 int length, int epsgcode);
375
381 isce3::io::Raster& dem_raster);
382
383 // Get/set data interpolator
384 isce3::core::dataInterpMethod dataInterpolator() const
385 {
386 return _data_interp_method;
387 }
388
389 void dataInterpolator(isce3::core::dataInterpMethod method)
390 {
391 _data_interp_method = method;
392 }
393
394 void doppler(isce3::core::LUT2d<double> doppler) { _doppler = doppler; }
395
396 void nativeDoppler(isce3::core::LUT2d<double> nativeDoppler)
397 {
398 _nativeDoppler = nativeDoppler;
399 }
400
401 void orbit(isce3::core::Orbit& orbit) { _orbit = orbit; }
402
403 void ellipsoid(isce3::core::Ellipsoid& ellipsoid)
404 {
405 _ellipsoid = ellipsoid;
406 }
407
408 void thresholdGeo2rdr(double threshold) { _threshold = threshold; }
409
410 void numiterGeo2rdr(int numiter) { _numiter = numiter; }
411
412 void radarBlockMargin(int radarBlockMargin)
413 {
414 _radarBlockMargin = radarBlockMargin;
415 }
416
417 // start X position for the output geogrid
418 double geoGridStartX() const { return _geoGridStartX; }
419
420 // start Y position for the output geogrid
421 double geoGridStartY() const { return _geoGridStartY; }
422
423 // X spacing for the output geogrid
424 double geoGridSpacingX() const { return _geoGridSpacingX; }
425
426 // Y spacing for the output geogrid
427 double geoGridSpacingY() const { return _geoGridSpacingY; }
428
429 // number of pixels in east-west direction (X direction)
430 int geoGridWidth() const { return _geoGridWidth; }
431
432 // number of lines in north-south direction (Y direction)
433 int geoGridLength() const { return _geoGridLength; }
434
435private:
436 /*
437 Get radar grid boundaries (offsets and window size) based on
438 the Geocode object geogrid attributes.
439 */
440 void _getRadarGridBoundaries(
441 const isce3::product::RadarGridParameters& radar_grid,
442 isce3::io::Raster& input_raster, isce3::io::Raster& dem_raster,
443 isce3::core::ProjectionBase* proj, double geogrid_upsampling,
444 bool flag_upsample_radar_grid,
445 isce3::core::dataInterpMethod dem_interp_method, int* offset_y,
446 int* offset_x, int* grid_size_y, int* grid_size_x);
447
448 /*
449 Compute radar positions (az, rg, DEM vect.) for a geogrid vector
450 (e.g. geogrid border) in X or Y direction (defined by flag_direction_line).
451 If flag_compute_min_max is True, the function also return the min/max
452 az. and rg. positions
453 */
454 void _getRadarPositionVect(double dem_y1, const int k_start,
455 const int k_end, double geogrid_upsampling, double* a11,
456 double* r11, double* y_min, double* x_min, double* y_max,
457 double* x_max,
458 const isce3::product::RadarGridParameters& radar_grid,
460 isce3::geometry::DEMInterpolator& dem_interp_block,
461 const std::function<Vec3(double, double,
463 isce3::core::ProjectionBase*)>& getDemCoords,
464 bool flag_direction_line, bool flag_save_vectors,
465 bool flag_compute_min_max,
466 const isce3::core::LUT2d<double>& az_time_correction,
467 const isce3::core::LUT2d<double>& slant_range_correction,
468 std::vector<double>* a_last = nullptr,
469 std::vector<double>* r_last = nullptr,
470 std::vector<Vec3>* dem_last = nullptr);
471 /*
472 Check if a geogrid bounding box (y0, x0, yf, xf) fully
473 covers the RSLC (represented by the radar_grid).
474 */
475 bool _checkLoadEntireRslcCorners(const double y0, const double x0,
476 const double yf, const double xf,
477 const isce3::product::RadarGridParameters& radar_grid,
479 const std::function<Vec3(double, double,
481 isce3::core::ProjectionBase*)>& getDemCoords,
482 isce3::geometry::DEMInterpolator& dem_interp, int margin_pixels);
483
484 /*
485 Get radar grid boundaries, i.e. min and max rg. and az. indexes, using
486 the border of a geogrid bounding box.
487 */
488 void _getRadarPositionBorder(double geogrid_upsampling, const double dem_y1,
489 const double dem_x1, const double dem_yf, const double dem_xf,
490 double* a_min, double* r_min, double* a_max, double* r_max,
491 const isce3::product::RadarGridParameters& radar_grid,
493 const std::function<Vec3(double, double,
495 isce3::core::ProjectionBase*)>& getDemCoords,
497 const isce3::core::LUT2d<double>& az_time_correction = {},
498 const isce3::core::LUT2d<double>& slant_range_correction = {});
499
500 template<class T2, class T_out>
501 void _runBlock(const isce3::product::RadarGridParameters& radar_grid,
502 bool is_radar_grid_single_block,
503 std::vector<std::unique_ptr<isce3::core::Matrix<T2>>>& rdrData,
504 int block_size_y, int block_size_with_upsampling_y, int block_y,
505 int block_size_x, int block_size_with_upsampling_x, int block_x,
506 long long& numdone, const long long& progress_block,
507 double geogrid_upsampling, int nbands, int nbands_off_diag_terms,
508 isce3::core::dataInterpMethod dem_interp_method,
509 isce3::io::Raster& dem_raster,
510 isce3::io::Raster* out_off_diag_terms,
511 isce3::io::Raster* out_geo_rdr, isce3::io::Raster* out_geo_dem,
512 isce3::io::Raster* out_geo_nlooks, isce3::io::Raster* out_geo_rtc,
513 isce3::io::Raster* out_geo_rtc_gamma0_to_sigma0,
514 isce3::core::ProjectionBase* proj, bool flag_apply_rtc,
515 bool flag_rtc_raster_is_in_memory, isce3::io::Raster* rtc_raster,
516 const isce3::core::LUT2d<double>& az_time_correction,
517 const isce3::core::LUT2d<double>& slant_range_correction,
518 isce3::io::Raster& input_raster,
519 int raster_offset_y, int raster_offset_x,
520 isce3::io::Raster& output_raster,
522 isce3::core::Matrix<float>& rtc_area_sigma,
523 float rtc_min_value, double abs_cal_factor,
524 float clip_min, float clip_max,
525 float min_nlooks, float radar_grid_nlooks,
526 bool flag_upsample_radar_grid,
527 isce3::io::Raster* input_layover_shadow_mask_raster,
528 isce3::core::Matrix<uint8_t>& input_layover_shadow_mask,
529 isce3::product::SubSwaths * sub_swaths,
530 bool apply_valid_samples_sub_swath_masking,
531 isce3::io::Raster* out_mask,
532 isce3::core::GeocodeMemoryMode geocode_memory_mode,
533 const long long min_block_size, const long long max_block_size,
534 pyre::journal::info_t& info);
535
536 std::string _get_nbytes_str(long nbytes);
537
538 int _geo2rdr(const isce3::product::RadarGridParameters& radar_grid,
539 double x, double y, double& azimuthTime, double& slantRange,
541 isce3::core::ProjectionBase* proj, float& dem_value);
542
590 template<class T_out>
591 inline void _interpolate(const isce3::core::Matrix<T_out>& rdrDataBlock,
592 isce3::core::Matrix<T_out>& geoDataBlock,
593 const std::valarray<double>& radarX,
594 const std::valarray<double>& radarY, const int radarBlockWidth,
595 const int radarBlockLength, const int azimuthFirstLine,
596 const int rangeFirstPixel,
599 const bool flag_az_baseband_doppler, const bool flatten,
600 isce3::io::Raster* phase_screen_raster,
601 isce3::core::Matrix<float>& phase_screen_array,
602 double abs_cal_factor, float clip_min, float clip_max,
603 bool flag_run_rtc, const isce3::core::Matrix<float>& rtc_area,
604 const isce3::core::Matrix<float>& rtc_area_sigma,
605 isce3::io::Raster* out_geo_rtc,
606 isce3::core::Matrix<float>& out_geo_rtc_array,
607 isce3::io::Raster* out_geo_rtc_gamma0_to_sigma0,
608 isce3::core::Matrix<float>& out_geo_rtc_gamma0_to_sigma0_array,
609 isce3::io::Raster* input_layover_shadow_mask_raster,
610 isce3::core::Matrix<uint8_t>& input_layover_shadow_mask,
611 isce3::product::SubSwaths * sub_swaths,
612 bool apply_valid_samples_sub_swath_masking,
613 isce3::io::Raster* out_mask,
614 isce3::core::Matrix<uint8_t>& out_mask_array,
615 const int interp_margin);
616
625 template<class T2>
626 inline void _baseband(isce3::core::Matrix<T2>& data,
627 const double starting_range, const double sensing_start,
628 const double range_pixel_spacing, const double prf,
629 const isce3::core::LUT2d<double>& doppler_lut);
630
639 template<class T2>
640 inline void _baseband(isce3::core::Matrix<std::complex<T2>>& data,
641 const double starting_range, const double sensing_start,
642 const double range_pixel_spacing, const double prf,
643 const isce3::core::LUT2d<double>& doppler_lut);
644
645 void _print_parameters(pyre::journal::info_t& channel,
646 isce3::core::GeocodeMemoryMode& geocode_memory_mode,
647 const long long min_block_size,
648 const long long max_block_size);
649
650 // isce3::core objects
651 isce3::core::Orbit _orbit;
652 isce3::core::Ellipsoid _ellipsoid;
653
654 // Optimization options
655
656 double _threshold = 1e-8;
657 int _numiter = 100;
658
659 // radar grids parameters
661
662 // native Doppler
663 isce3::core::LUT2d<double> _nativeDoppler;
664
665 // start X position for the output geogrid
666 double _geoGridStartX = std::numeric_limits<double>::quiet_NaN();
667
668 // start Y position for the output geogrid
669 double _geoGridStartY = std::numeric_limits<double>::quiet_NaN();
670
671 // X spacing for the output geogrid
672 double _geoGridSpacingX = std::numeric_limits<double>::quiet_NaN();
673
674 // Y spacing for the output geogrid
675 double _geoGridSpacingY = std::numeric_limits<double>::quiet_NaN();
676
677 // number of pixels in east-west direction (X direction)
678 int _geoGridWidth = -32768;
679
680 // number of lines in north-south direction (Y direction)
681 int _geoGridLength = -32768;
682
683 // epsg code for the output geogrid
684 int _epsgOut = 0;
685
686 // margin around the computed bounding box for radar dara (integer number of
687 // lines/pixels)
688 int _radarBlockMargin;
689
690 // interpolator
691 isce3::core::dataInterpMethod _data_interp_method =
692 isce3::core::dataInterpMethod::BIQUINTIC_METHOD;
693};
694
695}} // namespace isce3::geocode
696
697
698// Get inline implementations for Geocode
699#define ISCE_GEOMETRY_GEOCODE_ICC
700#include "GeocodeCov.icc"
701#undef ISCE_GEOMETRY_GEOCODE_ICC
Data structure to store Ellipsoid information.
Definition Ellipsoid.h:20
Definition of parent Interpolator.
Definition Interpolator.h:18
Data structure to store 2D Lookup table.
Definition LUT2d.h:20
Data structure for a 2D row-major matrix.
Definition Matrix.h:23
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing,...
Definition Orbit.h:44
Abstract base class for individual projections.
Definition Projections.h:21
Definition GeocodeCov.h:37
void geoGrid(double geoGridStartX, double geoGridStartY, double geoGridSpacingX, double geoGridSpacingY, int width, int length, int epsgcode)
Set the output geogrid.
Definition GeocodeCov.cpp:69
void geocodeInterp(const isce3::product::RadarGridParameters &radar_grid, isce3::io::Raster &input_raster, isce3::io::Raster &output_raster, isce3::io::Raster &dem_raster, bool flag_apply_rtc=false, bool flag_az_baseband_doppler=false, bool flatten=false, isce3::geometry::rtcInputTerrainRadiometry input_terrain_radiometry=isce3::geometry::rtcInputTerrainRadiometry::BETA_NAUGHT, isce3::geometry::rtcOutputTerrainRadiometry output_terrain_radiometry=isce3::geometry::rtcOutputTerrainRadiometry::GAMMA_NAUGHT, float rtc_min_value_db=std::numeric_limits< float >::quiet_NaN(), double rtc_geogrid_upsampling=std::numeric_limits< double >::quiet_NaN(), isce3::geometry::rtcAlgorithm rtc_algorithm=isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION, isce3::geometry::rtcAreaBetaMode rtc_area_beta_mode=isce3::geometry::rtcAreaBetaMode::AUTO, double abs_cal_factor=1, float clip_min=std::numeric_limits< float >::quiet_NaN(), float clip_max=std::numeric_limits< float >::quiet_NaN(), isce3::io::Raster *out_geo_rdr=nullptr, isce3::io::Raster *out_geo_dem=nullptr, isce3::io::Raster *out_geo_rtc=nullptr, isce3::io::Raster *out_geo_rtc_gamma0_to_sigma0=nullptr, isce3::io::Raster *phase_screen_raster=nullptr, const isce3::core::LUT2d< double > &az_time_correction={}, const isce3::core::LUT2d< double > &slant_range_correction={}, isce3::io::Raster *input_rtc=nullptr, isce3::io::Raster *output_rtc=nullptr, isce3::io::Raster *input_layover_shadow_mask_raster=nullptr, isce3::product::SubSwaths *sub_swaths=nullptr, std::optional< bool > apply_valid_samples_sub_swath_masking={}, isce3::io::Raster *out_mask=nullptr, isce3::core::GeocodeMemoryMode geocode_memory_mode=isce3::core::GeocodeMemoryMode::Auto, const long long min_block_size=isce3::core::DEFAULT_MIN_BLOCK_SIZE, const long long max_block_size=isce3::core::DEFAULT_MAX_BLOCK_SIZE, isce3::core::dataInterpMethod dem_interp_method=isce3::core::dataInterpMethod::BIQUINTIC_METHOD)
Geocode using the interpolation algorithm.
Definition GeocodeCov.cpp:253
void geocode(const isce3::product::RadarGridParameters &radar_grid, isce3::io::Raster &input_raster, isce3::io::Raster &output_raster, isce3::io::Raster &dem_raster, geocodeOutputMode output_mode=geocodeOutputMode::INTERP, bool flag_az_baseband_doppler=false, bool flatten=false, double geogrid_upsampling=1, bool flag_upsample_radar_grid=false, bool flag_apply_rtc=false, isce3::geometry::rtcInputTerrainRadiometry input_terrain_radiometry=isce3::geometry::rtcInputTerrainRadiometry::BETA_NAUGHT, isce3::geometry::rtcOutputTerrainRadiometry output_terrain_radiometry=isce3::geometry::rtcOutputTerrainRadiometry::GAMMA_NAUGHT, int exponent=0, float rtc_min_value_db=std::numeric_limits< float >::quiet_NaN(), double rtc_geogrid_upsampling=std::numeric_limits< double >::quiet_NaN(), isce3::geometry::rtcAlgorithm rtc_algorithm=isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION, isce3::geometry::rtcAreaBetaMode rtc_area_beta_mode=isce3::geometry::rtcAreaBetaMode::AUTO, double abs_cal_factor=1, float clip_min=std::numeric_limits< float >::quiet_NaN(), float clip_max=std::numeric_limits< float >::quiet_NaN(), float min_nlooks=std::numeric_limits< float >::quiet_NaN(), float radar_grid_nlooks=1, isce3::io::Raster *out_off_diag_terms=nullptr, isce3::io::Raster *out_geo_rdr=nullptr, isce3::io::Raster *out_geo_dem=nullptr, isce3::io::Raster *out_geo_nlooks=nullptr, isce3::io::Raster *out_geo_rtc=nullptr, isce3::io::Raster *out_geo_rtc_gamma0_to_sigma0=nullptr, isce3::io::Raster *phase_screen_raster=nullptr, const isce3::core::LUT2d< double > &az_time_correction={}, const isce3::core::LUT2d< double > &slant_range_correction={}, isce3::io::Raster *input_rtc=nullptr, isce3::io::Raster *output_rtc=nullptr, isce3::io::Raster *input_layover_shadow_mask_raster=nullptr, isce3::product::SubSwaths *sub_swaths=nullptr, std::optional< bool > apply_valid_samples_sub_swath_masking=std::nullopt, isce3::io::Raster *out_mask=nullptr, isce3::core::GeocodeMemoryMode geocode_memory_mode=isce3::core::GeocodeMemoryMode::Auto, const long long min_block_size=isce3::core::DEFAULT_MIN_BLOCK_SIZE, const long long max_block_size=isce3::core::DEFAULT_MAX_BLOCK_SIZE, isce3::core::dataInterpMethod dem_interp_method=isce3::core::dataInterpMethod::BIQUINTIC_METHOD)
Geocode data from slant-range to map coordinates.
Definition GeocodeCov.cpp:127
void geocodeAreaProj(const isce3::product::RadarGridParameters &radar_grid, isce3::io::Raster &input_raster, isce3::io::Raster &output_raster, isce3::io::Raster &dem_raster, double geogrid_upsampling=1, bool flag_upsample_radar_grid=false, bool flag_apply_rtc=false, isce3::geometry::rtcInputTerrainRadiometry input_terrain_radiometry=isce3::geometry::rtcInputTerrainRadiometry::BETA_NAUGHT, isce3::geometry::rtcOutputTerrainRadiometry output_terrain_radiometry=isce3::geometry::rtcOutputTerrainRadiometry::GAMMA_NAUGHT, float rtc_min_value_db=std::numeric_limits< float >::quiet_NaN(), double rtc_geogrid_upsampling=std::numeric_limits< double >::quiet_NaN(), isce3::geometry::rtcAlgorithm rtc_algorithm=isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION, isce3::geometry::rtcAreaBetaMode rtc_area_beta_mode=isce3::geometry::rtcAreaBetaMode::AUTO, double abs_cal_factor=1, float clip_min=std::numeric_limits< float >::quiet_NaN(), float clip_max=std::numeric_limits< float >::quiet_NaN(), float min_nlooks=std::numeric_limits< float >::quiet_NaN(), float radar_grid_nlooks=1, isce3::io::Raster *out_off_diag_terms=nullptr, isce3::io::Raster *out_geo_rdr=nullptr, isce3::io::Raster *out_geo_dem=nullptr, isce3::io::Raster *out_geo_nlooks=nullptr, isce3::io::Raster *out_geo_rtc=nullptr, isce3::io::Raster *out_geo_rtc_gamma0_to_sigma0=nullptr, const isce3::core::LUT2d< double > &az_time_correction={}, const isce3::core::LUT2d< double > &slant_range_correction={}, isce3::io::Raster *input_rtc=nullptr, isce3::io::Raster *output_rtc=nullptr, isce3::io::Raster *input_layover_shadow_mask_raster=nullptr, isce3::product::SubSwaths *sub_swaths=nullptr, std::optional< bool > apply_valid_samples_sub_swath_masking=std::nullopt, isce3::io::Raster *out_mask=nullptr, isce3::core::GeocodeMemoryMode geocode_memory_mode=isce3::core::GeocodeMemoryMode::Auto, const long long min_block_size=isce3::core::DEFAULT_MIN_BLOCK_SIZE, const long long max_block_size=isce3::core::DEFAULT_MAX_BLOCK_SIZE, isce3::core::dataInterpMethod dem_interp_method=isce3::core::dataInterpMethod::BIQUINTIC_METHOD)
Geocode using the area projection algorithm (adaptive multilooking)
Definition GeocodeCov.cpp:1814
void updateGeoGrid(const isce3::product::RadarGridParameters &radar_grid, isce3::io::Raster &dem_raster)
Update the output geogrid with radar grid and DEM attributes.
Definition GeocodeCov.cpp:34
Definition DEMInterpolator.h:25
Data structure meant to handle Raster I/O operations.
Definition Raster.h:32
Definition RadarGridParameters.h:16
Sub-swaths metadata of a SAR dataset.
Definition SubSwaths.h:23
The isce3::geometry namespace.
Definition boundingbox.h:15
rtcAreaBetaMode
Enumeration type to indicate RTC area beta mode (option only available for rtcAlgorithm....
Definition RTC.h:45
@ AUTO
auto mode.
Definition RTC.h:46
rtcInputTerrainRadiometry
Enumeration type to indicate input terrain radiometry (for RTC)
Definition RTC.h:22
rtcAlgorithm
Enumeration type to select RTC algorithm (RTC_BILINEAR_DISTRIBUTION or RTC_AREA_PROJECTION)
Definition RTC.h:40
rtcOutputTerrainRadiometry
Enumeration type to indicate output terrain radiometry (for RTC)
Definition RTC.h:30
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5

Generated for ISCE3.0 by doxygen 1.13.2.