10#include <isce3/core/Metadata.h>
11#include <isce3/core/DateTime.h>
12#include <isce3/core/LookSide.h>
13#include <isce3/core/TimeDelta.h>
14#include <isce3/except/Error.h>
28 char frequency =
'A');
67 inline void lookSide(
const std::string &);
90 inline double prf()
const {
return _prf; }
93 inline void prf(
const double & t){
_prf = t; }
189 if ((ysize <= 1) || (xsize <= 1))
191 std::string errstr =
"Number of samples must be greater than 1. " +
192 std::to_string(ysize) +
" azimuth and " +
193 std::to_string(xsize) +
" range samples requested.";
194 throw isce3::except::OutOfRange(ISCE_SRCINFO(), errstr);
203 dr = (
width() - 1.0) / (xsize - 1.0) * dr;
219 std::string side =
"both")
const
224 if (side ==
"start") {
225 ysize =
length() + ymargin;
226 xsize =
width() + xmargin;
229 }
else if (side ==
"stop") {
230 ysize =
length() + ymargin;
231 xsize =
width() + xmargin;
234 }
else if (side ==
"both") {
237 ysize =
length() + 2 * ymargin;
238 xsize =
width() + 2 * xmargin;
240 std::string errstr =
"No recognized side '" + side +
241 "', please choose the side from 'start', 'stop', and 'both'";
242 throw isce3::except::InvalidArgument(ISCE_SRCINFO(), errstr);
254 if ((azlooks == 0) || (rglooks == 0))
256 std::string errstr =
"Number of looks must be positive. " +
257 std::to_string(azlooks) +
"Az x" +
258 std::to_string(rglooks) +
"Rg looks requested.";
259 throw isce3::except::OutOfRange(ISCE_SRCINFO(), errstr);
265 prf() / (1.0 * azlooks),
276 upsample(
size_t az_upsampling_factor,
size_t rg_upsampling_factor)
const
279 if ((az_upsampling_factor == 0) || (rg_upsampling_factor == 0)) {
280 std::string errstr =
"Upsampling factor must be positive. " +
281 std::to_string(az_upsampling_factor ) +
"Az x" +
282 std::to_string(rg_upsampling_factor ) +
283 "Rg upsampling requested.";
284 throw isce3::except::OutOfRange(ISCE_SRCINFO(), errstr);
300 bool contains(
const double az_time,
const double srange)
const;
415 std::string errstr =
"";
419 errstr +=
"Radar wavelength must be positive. \n";
424 errstr +=
"Pulse Repetition Frequency must be positive. \n";
429 errstr +=
"Starting Range must be positive. \n";
434 errstr +=
"Slant range pixel spacing must be positive. \n";
439 errstr +=
"Radar Grid should have length of at least 1. \n";
444 errstr +=
"Radar Grid should have width of at least 1. \n";
447 if (! errstr.empty())
449 throw isce3::except::InvalidArgument(ISCE_SRCINFO(), errstr);
457lookSide(
const std::string & inputLook) {
458 _lookSide = isce3::core::parseLookSide(inputLook);
Data structure to store date time to nano-sec precision.
Definition DateTime.h:18
Definition RadarGridParameters.h:16
double _wavelength
Imaging wavelength.
Definition RadarGridParameters.h:311
RadarGridParameters multilook(size_t azlooks, size_t rglooks) const
Multilook.
Definition RadarGridParameters.h:251
void width(const size_t &t)
Set radar grid width.
Definition RadarGridParameters.h:120
double sensingStart() const
Get sensing start time in seconds since reference epoch.
Definition RadarGridParameters.h:78
double sensingMid() const
Get sensing mid time in seconds.
Definition RadarGridParameters.h:129
RadarGridParameters()
Default constructor.
Definition RadarGridParameters.h:335
const isce3::core::DateTime & refEpoch() const
Get reference epoch DateTime.
Definition RadarGridParameters.h:70
void prf(const double &t)
Set pulse repetition frequency in Hz - inverse of azimuth time interval.
Definition RadarGridParameters.h:93
size_t length() const
Get radar grid length.
Definition RadarGridParameters.h:111
RadarGridParameters addMargin(size_t ymargin, size_t xmargin, std::string side="both") const
Add margins to start, stop or both sides to the radar grid.
Definition RadarGridParameters.h:217
void sensingStart(const double &t)
Set sensing start time in seconds since reference epoch.
Definition RadarGridParameters.h:81
double startingRange() const
Get starting slant range in meters.
Definition RadarGridParameters.h:99
isce3::core::DateTime sensingDateTime(double line) const
Get a sensing DateTime for a given line (zero-index row)
Definition RadarGridParameters.h:143
RadarGridParameters upsample(size_t az_upsampling_factor, size_t rg_upsampling_factor) const
Upsample.
Definition RadarGridParameters.h:276
RadarGridParameters resizeKeepStartStop(size_t ysize, size_t xsize) const
Return a new resized radar grid with the same start and stop points.
Definition RadarGridParameters.h:185
double midRange() const
Get middle slant range.
Definition RadarGridParameters.h:153
size_t _rwidth
Number of samples in the image.
Definition RadarGridParameters.h:326
RadarGridParameters & operator=(const RadarGridParameters &rgparam)
Assignment operator.
Definition RadarGridParameters.h:374
isce3::core::LookSide _lookSide
Left or right looking geometry indicator.
Definition RadarGridParameters.h:305
isce3::core::DateTime _refEpoch
Reference epoch for time tags.
Definition RadarGridParameters.h:329
double wavelength() const
Get radar wavelength in meters.
Definition RadarGridParameters.h:84
double _sensingStart
Sensing start time.
Definition RadarGridParameters.h:308
size_t width() const
Get radar grid width.
Definition RadarGridParameters.h:117
void length(const size_t &t)
Set radar grid length.
Definition RadarGridParameters.h:114
double slantRangeIndex(double slant_range) const
Get slant range fractional index at a given slant range distance.
Definition RadarGridParameters.h:163
double rangePixelSpacing() const
Get slant range pixel spacing in meters.
Definition RadarGridParameters.h:105
void startingRange(const double &r)
Set starting slant range in meters.
Definition RadarGridParameters.h:102
double _prf
PRF.
Definition RadarGridParameters.h:314
void refEpoch(const isce3::core::DateTime &epoch)
Set reference epoch DateTime.
Definition RadarGridParameters.h:75
double _rangePixelSpacing
Slant range pixel spacing.
Definition RadarGridParameters.h:320
double endingRange() const
Get ending slant range.
Definition RadarGridParameters.h:148
double azimuthTimeInterval() const
Get azimuth time interval in seconds.
Definition RadarGridParameters.h:96
double _startingRange
Slant range to center of first pixel.
Definition RadarGridParameters.h:317
void lookSide(isce3::core::LookSide side)
Set look direction.
Definition RadarGridParameters.h:64
void validate() const
Validate parameters of data structure.
Definition RadarGridParameters.h:412
size_t size() const
Get total number of radar grid elements.
Definition RadarGridParameters.h:123
double azimuthIndex(double az_time) const
Get azimuth fractional index (line) at a given sensing time.
Definition RadarGridParameters.h:138
double prf() const
Get pulse repetition frequency in Hz - inverse of azimuth time interval.
Definition RadarGridParameters.h:90
size_t _rlength
Number of lines in the image.
Definition RadarGridParameters.h:323
void rangePixelSpacing(const double &t)
Set slant range pixel spacing in meters.
Definition RadarGridParameters.h:108
void wavelength(const double &t)
Set radar wavelength in meters.
Definition RadarGridParameters.h:87
RadarGridParameters offsetAndResize(double yoff, double xoff, size_t ysize, size_t xsize) const
Crop/ Expand while keeping the spacing the same with top left offset and size.
Definition RadarGridParameters.h:168
isce3::core::LookSide lookSide() const
Get the look direction.
Definition RadarGridParameters.h:61
double sensingTime(double line) const
Get sensing time for a given line (zero-index row)
Definition RadarGridParameters.h:134
double sensingStop() const
Get sensing stop time in seconds since reference epoch.
Definition RadarGridParameters.h:126
double slantRange(double sample) const
Get slant range for a given sample (zero-index column)
Definition RadarGridParameters.h:158
RadarGridProduct class declaration.
Definition RadarGridProduct.h:71
The isce3::product namespace.
Definition forward.h:3
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5