isce3 0.25.0
Loading...
Searching...
No Matches
RSD.icc
1#ifndef ISCE_CONTAINER_RSD_ICC
2#error "RSD.icc is an implementation detail of RSD.h"
3#endif
4
5#include <isce3/core/TimeDelta.h>
6#include <isce3/except/Error.h>
7
8namespace isce3 { namespace container {
9
11 const isce3::core::DateTime & reference_epoch,
12 const std::vector<double> & azimuth_time,
13 double range_window_start,
14 double range_sampling_rate,
15 isce3::core::LookSide look_side)
16:
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),
22 _look_side(look_side)
23{
24 std::size_t lines = signal_data.length();
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);
28 }
29
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");
33 }
34
35 if (range_window_start <= 0.) {
36 throw isce3::except::DomainError(ISCE_SRCINFO(), "range window start time must be > 0");
37 }
38
39 if (range_sampling_rate <= 0.) {
40 throw isce3::except::DomainError(ISCE_SRCINFO(), "range sampling rate must be > 0");
41 }
42
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);
47 }
48 }
49}
50
55
60
65
67{
68 return rangeWindowStartTime() + 0.5 * (samples() - 1) / rangeSamplingRate();
69}
70
72{
73 return rangeWindowStartTime() + (samples() - 1) / rangeSamplingRate();
74}
75
76void RSD::readLine(std::complex<float> * dst, int line) const
77{
78 _signal_data.readLine(dst, line);
79}
80
81void RSD::readLines(std::complex<float> * dst, int first_line, int num_lines) const
82{
83 _signal_data.readLines(dst, first_line, num_lines);
84}
85
86}}
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

Generated for ISCE3.0 by doxygen 1.13.2.