15 #include <isce3/core/Ellipsoid.h>
16 #include <isce3/core/LUT2d.h>
17 #include <isce3/core/Orbit.h>
20 #include <isce3/product/RadarGridParameters.h>
23 #include <isce3/io/Raster.h>
45 void covariance(std::map<std::string, isce3::io::Raster> & slc,
46 std::map<std::pair<std::string, std::string>,
48 size_t rangeLooks=1,
size_t azimuthLooks=1);
60 size_t rangeLooks,
size_t azimuthLooks);
135 void geoGrid(
double geoGridStartX,
double geoGridStartY,
136 double geoGridSpacingX,
double geoGridSpacingY,
137 double geoGridEndX,
double geoGridEndY,
int epsgcode);
152 void geoGrid(
double geoGridStartX,
double geoGridStartY,
153 double geoGridSpacingX,
double geoGridSpacingY,
int width,
154 int length,
int epsgcode);
175 double azimuthTimeInterval,
int radarGridLength,
176 double startingRange,
double rangeSpacing,
181 void prf(
double p) { _prf = p; }
229 void _correctRTC(std::valarray<std::complex<float>> & rdrDataBlock,
230 std::valarray<float> & rtcDataBlock);
232 void _correctRTC(std::valarray<std::complex<double>> & rdrDataBlock,
233 std::valarray<float> & rtcDataBlock);
235 void _computeRangeAzimuthBoundingBox(
236 int lineStart,
int blockLength,
int blockWidth,
int margin,
238 int & azimuthLastLine,
int & rangeFirstPixel,
int & rangeLastPixel);
243 int blockLength,
int blockWidth,
double demMargin);
245 void _geo2rdr(
double x,
double y,
double & azimuthTime,
double & slantRange,
248 void _interpolate(std::valarray<T> & rdrDataBlock,
249 std::valarray<T> & geoDataBlock,
250 std::valarray<double> & radarX,
251 std::valarray<double> & radarY,
size_t radarBlockWidth,
252 size_t radarBlockLength,
size_t width,
size_t length);
254 void _faradayRotationAngle(std::valarray<T> & Shh, std::valarray<T> & Shv,
255 std::valarray<T> & Svh, std::valarray<T> & Svv,
256 std::valarray<float> & faradayRotation,
257 size_t width,
size_t length,
size_t rngLooks,
261 std::valarray<std::complex<float>> & Shh,
262 std::valarray<std::complex<float>> & Shv,
263 std::valarray<std::complex<float>> & Svh,
264 std::valarray<std::complex<float>> & Svv,
265 size_t length,
size_t width,
size_t lineStart);
267 void _orientationAngle(std::valarray<float> & azimuthSlope,
268 std::valarray<float> & rangeSlope,
269 std::valarray<float> & lookAngle,
270 std::valarray<float> & tau);
272 void _correctOrientation(std::valarray<float> & tau,
273 std::valarray<std::complex<float>> & C11,
274 std::valarray<std::complex<float>> & C12,
275 std::valarray<std::complex<float>> & C13,
276 std::valarray<std::complex<float>> & C21,
277 std::valarray<std::complex<float>> & C22,
278 std::valarray<std::complex<float>> & C23,
279 std::valarray<std::complex<float>> & C31,
280 std::valarray<std::complex<float>> & C32,
281 std::valarray<std::complex<float>> & C33);
287 double _rangeSamplingFrequency;
290 double _rangeBandwidth;
293 double _rangePixelSpacing;
307 size_t _linesPerBlock = 2000;
314 double _geoGridStartX;
317 double _geoGridStartY;
320 double _geoGridSpacingX;
323 double _geoGridSpacingY;
326 size_t _geoGridWidth;
329 size_t _geoGridLength;
341 double _demBlockMargin;
345 int _radarBlockMargin;
351 bool _correctRtcFlag =
true;
354 bool _correctOrientationFlag =
true;
357 bool _singlePol =
false;
358 bool _dualPol =
false;
359 bool _quadPol =
false;
363 std::string _crossPol;
367 #define ISCE_SIGNAL_COVARIANCE_ICC
368 #include "Covariance.icc"
369 #undef ISCE_SIGNAL_COVARIANCE_ICC
void rangeSamplingFrequency(double rngSamplingFreq)
Set range sampling frequency.
Definition: Covariance.icc:100
void rangePixelSpacing(double rngPixelSpacing)
Set range pixel spacing.
Definition: Covariance.h:193
dataInterpMethod
Enumeration type to indicate interpolation method.
Definition: Constants.h:23
Data structure to store Ellipsoid information.
Definition: Ellipsoid.h:20
Definition: DEMInterpolator.h:22
void geocodeCovariance(isce3::io::Raster &rdrCov, isce3::io::Raster &geoCov, isce3::io::Raster &demRaster)
Geocode covariance components.
Definition: Covariance.cpp:100
void interpolator(isce3::core::Interpolator< T > *interp)
Set interpolator.
Definition: Covariance.h:226
Data structure to store date time to nano-sec precision.
Definition: DateTime.h:18
void doppler(const isce3::core::LUT2d< double > &dop)
Set Doppler.
Definition: Covariance.h:184
LookSide
Side that radar looks at, Left or Right.
Definition: LookSide.h:13
void faradayRotation(std::map< std::string, isce3::io::Raster > &slc, isce3::io::Raster &faradayAngleRaster, size_t rangeLooks, size_t azimuthLooks)
Estimate the Faraday rotation angle from quad-pol data.
Definition: Covariance.cpp:311
Definition: RadarGridParameters.h:15
void geoGrid(double geoGridStartX, double geoGridStartY, double geoGridSpacingX, double geoGridSpacingY, double geoGridEndX, double geoGridEndY, int epsgcode)
Set geocoded grid.
Definition: Covariance.icc:27
void ellipsoid(const isce3::core::Ellipsoid &ellipsoid)
Set ellipsoid.
Definition: Covariance.h:205
void orbit(const isce3::core::Orbit &orbit)
Set platform's orbit.
Definition: Covariance.h:202
void covariance(std::map< std::string, isce3::io::Raster > &slc, std::map< std::pair< std::string, std::string >, isce3::io::Raster > &cov, size_t rangeLooks=1, size_t azimuthLooks=1)
Covariance estimation.
Definition: Covariance.cpp:17
Covariance estimation from dual-polarization or quad-polarization data.
Definition: Covariance.h:32
Abstract base class for individual projections.
Definition: Projections.h:22
void thresholdGeo2rdr(double threshold)
Set the threshold for Geo2rdr computation.
Definition: Covariance.h:211
void demBlockMargin(double demBlockMargin)
Set DEM block margin.
Definition: Covariance.h:220
void orientationAngle(isce3::io::Raster &azimuthSlopeRaster, isce3::io::Raster &rangeSlopeRaster, isce3::io::Raster &lookAngleRaster, isce3::io::Raster &tauRaster)
Estimate polarimetric orientation angle.
Definition: Covariance.cpp:471
void wavelength(double wvl)
Set radar wavelength.
Definition: Covariance.h:196
void radarGrid(isce3::core::LUT2d< double > doppler, isce3::core::DateTime refEpoch, double azimuthStartTime, double azimuthTimeInterval, int radarGridLength, double startingRange, double rangeSpacing, isce3::core::LookSide side, double wavelength, int radarGridWidth)
Set the input radar grid.
Definition: Covariance.icc:85
void rangeBandwidth(double rngBandwidth)
Set range bandwidth.
Definition: Covariance.h:190
Collection of simple commonly used geometry functions.
void radarBlockMargin(int radarBlockMargin)
Set radar block margin.
Definition: Covariance.h:223
void linesPerBlock(size_t linesPerBlock)
Set lines per block.
Definition: Covariance.h:217
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing, supporting efficient lookup and interpolation.
Definition: Orbit.h:43
void prf(double p)
Set pulse repetition frequency (PRF).
Definition: Covariance.h:181
void numiterGeo2rdr(int numiter)
Set number of iterations Geo2rdr computation.
Definition: Covariance.h:214
void projection(isce3::core::ProjectionBase *proj)
Set the projection object.
Definition: Covariance.h:208
void interpolator(isce3::core::dataInterpMethod method)
Set interpolator method for geocoding.
Definition: Covariance.icc:107
Data structure meant to handle Raster I/O operations.
Definition: Raster.h:34