1#ifndef ISCE_CONTAINER_RSD_ICC
2#error "RSD.icc is an implementation detail of RSD.h"
5#include <isce3/core/TimeDelta.h>
6#include <isce3/except/Error.h>
8namespace isce3 {
namespace container {
12 const std::vector<double> & azimuth_time,
13 double range_window_start,
14 double range_sampling_rate,
15 isce3::core::LookSide look_side)
17 _signal_data(signal_data),
18 _reference_epoch(reference_epoch),
19 _azimuth_time(azimuth_time),
20 _range_window_start(range_window_start),
21 _range_sampling_rate(range_sampling_rate),
25 if (azimuth_time.size() !=
lines) {
26 std::string errmsg =
"number of signal data lines must equal number of azimuth timepoints";
27 throw isce3::except::LengthError(ISCE_SRCINFO(), errmsg);
30 GDALDataType dtype = signal_data.
datatype();
31 if (dtype != GDT_CFloat32 && dtype != GDT_CFloat64) {
32 throw isce3::except::InvalidArgument(ISCE_SRCINFO(),
"signal data must be complex-valued");
35 if (range_window_start <= 0.) {
36 throw isce3::except::DomainError(ISCE_SRCINFO(),
"range window start time must be > 0");
39 if (range_sampling_rate <= 0.) {
40 throw isce3::except::DomainError(ISCE_SRCINFO(),
"range sampling rate must be > 0");
43 for (
int l = 1; l <
lines; ++l) {
44 if (azimuth_time[l - 1] > azimuth_time[l]) {
45 std::string errmsg =
"azimuth time must be monotonically increasing";
46 throw isce3::except::InvalidArgument(ISCE_SRCINFO(), errmsg);
78 _signal_data.readLine(dst, line);
81void RSD::readLines(std::complex<float> * dst,
int first_line,
int num_lines)
const
83 _signal_data.readLines(dst, first_line, num_lines);
const isce3::core::DateTime & referenceEpoch() const
Reference epoch (UTC)
Definition RSD.h:41
double rangeWindowEndTime() const
Time of last range sample relative to Tx pulse start (s)
Definition RSD.icc:71
void readLine(std::complex< float > *dst, int line) const
Read a single line of signal data.
Definition RSD.icc:76
double rangeSamplingRate() const
Range sampling rate (Hz)
Definition RSD.h:71
double rangeWindowMidTime() const
Time of center of range sampling window relative to Tx pulse start (s)
Definition RSD.icc:66
isce3::core::DateTime startDateTime() const
DateTime of first azimuth line (UTC)
Definition RSD.icc:51
RSD(const isce3::io::gdal::Raster &signal_data, const isce3::core::DateTime &reference_epoch, const std::vector< double > &azimuth_time, double range_window_start, double range_sampling_rate, isce3::core::LookSide look_side)
Constructor.
Definition RSD.icc:10
int samples() const
Number of range samples.
Definition RSD.h:38
isce3::core::DateTime midDateTime() const
DateTime of center of data (UTC)
Definition RSD.icc:56
double azimuthStartTime() const
Time of first azimuth line relative to reference epoch (s)
Definition RSD.h:44
int lines() const
Number of azimuth lines.
Definition RSD.h:35
double azimuthMidTime() const
Time of center of data relative to reference epoch (s)
Definition RSD.h:47
double rangeWindowStartTime() const
Time of first range sample relative to Tx pulse start (s)
Definition RSD.h:62
isce3::core::DateTime endDateTime() const
DateTime of last azimuth line (UTC)
Definition RSD.icc:61
void readLines(std::complex< float > *dst, int first_line, int num_lines) const
Read one or more lines of signal data.
Definition RSD.icc:81
double azimuthEndTime() const
Time of last azimuth line relative to reference epoch (s)
Definition RSD.h:50
Data structure to store date time to nano-sec precision.
Definition DateTime.h:18
Data structure to store TimeDelta to double precision seconds.
Definition TimeDelta.h:16
Wrapper for GDALRasterBand representing a single raster.
Definition Raster.h:14
GDALDataType datatype() const
Datatype identifier.
Definition Raster.icc:120
int length() const
Number of rows.
Definition Raster.h:152
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5