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,
118 rtcInputTerrainRadiometry::BETA_NAUGHT,
121 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
123 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
124 double rtc_geogrid_upsampling =
125 std::numeric_limits<double>::quiet_NaN(),
127 isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION,
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,
148 std::optional<bool> apply_valid_samples_sub_swath_masking = std::nullopt,
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);
210 template<
class T_out>
214 bool flag_az_baseband_doppler =
false,
bool flatten =
false,
217 rtcInputTerrainRadiometry::BETA_NAUGHT,
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(),
225 isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION,
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(),
242 std::optional<bool> apply_valid_samples_sub_swath_masking = {},
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);
313 template<
class T_out>
318 double geogrid_upsampling = 1,
319 bool flag_upsample_radar_grid =
false,
320 bool flag_apply_rtc =
false,
322 isce3::geometry::rtcInputTerrainRadiometry::BETA_NAUGHT,
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(),
330 isce3::geometry::rtcAlgorithm::RTC_AREA_PROJECTION,
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,
350 std::optional<bool> apply_valid_samples_sub_swath_masking = std::nullopt,
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);
372 void geoGrid(
double geoGridStartX,
double geoGridStartY,
373 double geoGridSpacingX,
double geoGridSpacingY,
int width,
374 int length,
int epsgcode);
384 isce3::core::dataInterpMethod dataInterpolator()
const
386 return _data_interp_method;
389 void dataInterpolator(isce3::core::dataInterpMethod method)
391 _data_interp_method = method;
398 _nativeDoppler = nativeDoppler;
405 _ellipsoid = ellipsoid;
408 void thresholdGeo2rdr(
double threshold) { _threshold = threshold; }
410 void numiterGeo2rdr(
int numiter) { _numiter = numiter; }
412 void radarBlockMargin(
int radarBlockMargin)
414 _radarBlockMargin = radarBlockMargin;
418 double geoGridStartX()
const {
return _geoGridStartX; }
421 double geoGridStartY()
const {
return _geoGridStartY; }
424 double geoGridSpacingX()
const {
return _geoGridSpacingX; }
427 double geoGridSpacingY()
const {
return _geoGridSpacingY; }
430 int geoGridWidth()
const {
return _geoGridWidth; }
433 int geoGridLength()
const {
return _geoGridLength; }
440 void _getRadarGridBoundaries(
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);
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,
461 const std::function<Vec3(
double,
double,
464 bool flag_direction_line,
bool flag_save_vectors,
465 bool flag_compute_min_max,
468 std::vector<double>* a_last =
nullptr,
469 std::vector<double>* r_last =
nullptr,
470 std::vector<Vec3>* dem_last =
nullptr);
475 bool _checkLoadEntireRslcCorners(
const double y0,
const double x0,
476 const double yf,
const double xf,
479 const std::function<Vec3(
double,
double,
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,
493 const std::function<Vec3(
double,
double,
500 template<
class T2,
class T_out>
502 bool is_radar_grid_single_block,
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,
519 int raster_offset_y,
int raster_offset_x,
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,
530 bool apply_valid_samples_sub_swath_masking,
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);
536 std::string _get_nbytes_str(
long nbytes);
539 double x,
double y,
double& azimuthTime,
double& slantRange,
590 template<
class T_out>
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,
602 double abs_cal_factor,
float clip_min,
float clip_max,
612 bool apply_valid_samples_sub_swath_masking,
615 const int interp_margin);
627 const double starting_range,
const double sensing_start,
628 const double range_pixel_spacing,
const double prf,
641 const double starting_range,
const double sensing_start,
642 const double range_pixel_spacing,
const double prf,
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);
656 double _threshold = 1e-8;
666 double _geoGridStartX = std::numeric_limits<double>::quiet_NaN();
669 double _geoGridStartY = std::numeric_limits<double>::quiet_NaN();
672 double _geoGridSpacingX = std::numeric_limits<double>::quiet_NaN();
675 double _geoGridSpacingY = std::numeric_limits<double>::quiet_NaN();
678 int _geoGridWidth = -32768;
681 int _geoGridLength = -32768;
688 int _radarBlockMargin;
691 isce3::core::dataInterpMethod _data_interp_method =
692 isce3::core::dataInterpMethod::BIQUINTIC_METHOD;
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