isce3 0.25.0
|
Transformer from radar geometry coordinates to map coordinates with DEM / reference altitude. More...
#include <Topo.h>
Public Member Functions | |
Topo (const isce3::product::RadarGridProduct &, char frequency='A', bool nativeDoppler=false) | |
Constructor using a product. | |
Topo (const isce3::product::RadarGridParameters &radarGrid, const isce3::core::Orbit &orbit, const isce3::core::Ellipsoid &ellipsoid, const isce3::core::LUT2d< double > &doppler={}) | |
Alternative constructor from ellipsoid orbit and radarGrid. | |
Topo (const isce3::core::Ellipsoid &ellipsoid, const isce3::core::Orbit &orbit, const isce3::core::LUT2d< double > &doppler, const isce3::core::Metadata &meta) | |
Constructor using core objects. | |
void | threshold (double t) |
Set convergence threshold. | |
void | numiter (int n) |
Set number of primary iterations. | |
void | extraiter (int n) |
Set number of secondary iterations. | |
void | demMethod (isce3::core::dataInterpMethod method) |
Set the DEM interpolation method while checking its validity. | |
void | epsgOut (int epsgcode) |
Set output coordinate system. | |
void | computeMask (bool mask) |
Set mask computation flag. | |
void | minimumHeight (double minh) |
Set minimum height. | |
void | maximumHeight (double maxh) |
Set maximum height. | |
void | decimaldegMargin (double deg) |
Set margin in decimal degrees. | |
void | linesPerBlock (size_t linesPerBlock) |
Set lines to be processed per block. | |
double | threshold () const |
Get distance convergence threshold used for processing. | |
int | numiter () const |
Get number of primary iterations used for processing. | |
int | extraiter () const |
Get number of secondary iterations used for processing. | |
int | epsgOut () const |
Get the output coordinate system used for processing. | |
isce3::core::dataInterpMethod | demMethod () const |
Get the DEM interpolation method used for processing. | |
bool | computeMask () const |
Get mask computation flag. | |
double | minimumHeight () const |
Get minimum height. | |
double | maximumHeight () const |
Get maximum height. | |
double | decimaldegMargin () const |
Get margin in decimal degrees. | |
size_t | linesPerBlock () const |
Get linesPerBlock. | |
const isce3::product::RadarGridParameters & | radarGridParameters () const |
Get read-only reference to RadarGridParameters. | |
void | computeDEMBounds (isce3::io::Raster &, DEMInterpolator &, size_t, size_t) |
Get DEM bounds using first/last azimuth line and slant range bin. | |
void | topo (isce3::io::Raster &demRaster, const std::string &outdir) |
Main entry point for the module; internal creation of topo rasters. | |
void | topo (isce3::io::Raster &demRaster, TopoLayers &layers) |
Run topo with externally created topo rasters in TopoLayers object. | |
void | topo (isce3::io::Raster &demRaster, isce3::io::Raster *xRaster=nullptr, isce3::io::Raster *yRaster=nullptr, isce3::io::Raster *heightRaster=nullptr, isce3::io::Raster *incRaster=nullptr, isce3::io::Raster *hdgRaster=nullptr, isce3::io::Raster *localIncRaster=nullptr, isce3::io::Raster *localPsiRaster=nullptr, isce3::io::Raster *simRaster=nullptr, isce3::io::Raster *maskRaster=nullptr, isce3::io::Raster *groundToSatEastRaster=nullptr, isce3::io::Raster *groundToSatNorthRaster=nullptr) |
Run topo with externally created topo rasters; generate mask. | |
void | topo (isce3::geometry::DEMInterpolator &demInterp, const std::string &outdir) |
Main entry point for the module; internal creation of topo rasters. | |
void | topo (isce3::geometry::DEMInterpolator &demInterp, TopoLayers &layers) |
Run topo with externally created topo rasters in TopoLayers object. | |
void | topo (isce3::geometry::DEMInterpolator &demInterp, isce3::io::Raster *xRaster, isce3::io::Raster *yRaster, isce3::io::Raster *heightRaster, isce3::io::Raster *incRaster, isce3::io::Raster *hdgRaster, isce3::io::Raster *localIncRaster, isce3::io::Raster *localPsiRaster, isce3::io::Raster *simRaster, isce3::io::Raster *maskRaster, isce3::io::Raster *groundToSatEastRaster, isce3::io::Raster *groundToSatNorthRaster) |
Run topo with externally created topo rasters; generate mask. | |
void | setLayoverShadow (TopoLayers &, DEMInterpolator &, std::vector< isce3::core::Vec3 > &, size_t block, size_t n_blocks) |
Compute layover/shadow masks. | |
const isce3::core::Orbit & | orbit () const |
Get the orbits used for processing. | |
const isce3::core::Ellipsoid & | ellipsoid () const |
Get the ellipsoid used for processing. | |
const isce3::core::LUT2d< double > & | doppler () const |
Get the doppler module used for processing. | |
Transformer from radar geometry coordinates to map coordinates with DEM / reference altitude.
See geometry overview for a description of the algorithm
isce3::geometry::Topo::Topo | ( | const isce3::product::RadarGridProduct & | product, |
char | frequency = 'A', | ||
bool | nativeDoppler = false ) |
Constructor using a product.
[in] | product | Input RadarGridProduct |
[in] | frequency | Frequency designation |
[in] | nativeDoppler | Flag for using native Doppler frequencies instead of zero-Doppler |
|
inline |
Alternative constructor from ellipsoid orbit and radarGrid.
[in] | radarGrid | RadarGridParameters object |
[in] | orbit | Orbit object |
[in] | ellipsoid | Ellipsoid object |
[in] | doppler | LUT2d doppler model |
|
inline |
void isce3::geometry::Topo::computeDEMBounds | ( | isce3::io::Raster & | demRaster, |
DEMInterpolator & | demInterp, | ||
size_t | lineOffset, | ||
size_t | blockLength ) |
Get DEM bounds using first/last azimuth line and slant range bin.
If the DEM is in geographic coordinates (DEM EPSG is 4326), this function requires that the radar grid spans less than 180 degrees in longitude.
|
inline |
Set mask computation flag.
[in] | mask | Boolean for mask computation |
|
inline |
Set margin in decimal degrees.
[in] | deg | Margin around bounding box in decimal degrees |
|
inline |
Set the DEM interpolation method while checking its validity.
[in] | DEM | inerpolation method |
|
inline |
Set output coordinate system.
Set the EPSG code of the output layers and configure projection. See here for supported projections.
[in] | epsgcode | EPSG code of desired pixel-by-pixel outputs |
|
inline |
Set number of secondary iterations.
When we haven't converged after primary iterations, it typically means that the solver is iterating between two very close solutions. In this case, we use the previous 2 solutions and use the average to initialize the next iteration. This is equivalent to changing the step size between iterations.
[in] | n | Number of secondary iterations |
|
inline |
Set lines to be processed per block.
[in] | linesPerBlock | Lines to be processed per block |
|
inline |
Set maximum height.
[in] | maxh | Maximum altitude for the scene |
|
inline |
Set minimum height.
[in] | minh | Minimum altitude for the scene |
|
inline |
Set number of primary iterations.
This is the number of iterations where solution of previous solution is directly used to initialize the next iteration
[in] | n | Number of primary iterations |
void isce3::geometry::Topo::setLayoverShadow | ( | TopoLayers & | , |
DEMInterpolator & | , | ||
std::vector< isce3::core::Vec3 > & | , | ||
size_t | block, | ||
size_t | n_blocks ) |
Compute layover/shadow masks.
[in] | layers | Object containing output layers |
[in] | demInterp | DEMInterpolator object |
[in] | satPosition | Vector of satellite position vectors for each line |
[in] | block | Current block number |
[in] | n_blocks | Total number of blocks in block |
|
inline |
Set convergence threshold.
[in] | t | Distance threshold to flag convergence of iterations |
void isce3::geometry::Topo::topo | ( | isce3::geometry::DEMInterpolator & | demInterp, |
const std::string & | outdir ) |
Main entry point for the module; internal creation of topo rasters.
This is the main topo driver. The pixel-by-pixel output file names are fixed for now
[in] | demInterp | input DEM interpolator |
[in] | outdir | directory to write outputs to |
void isce3::geometry::Topo::topo | ( | isce3::geometry::DEMInterpolator & | demInterp, |
isce3::io::Raster * | xRaster, | ||
isce3::io::Raster * | yRaster, | ||
isce3::io::Raster * | heightRaster, | ||
isce3::io::Raster * | incRaster, | ||
isce3::io::Raster * | hdgRaster, | ||
isce3::io::Raster * | localIncRaster, | ||
isce3::io::Raster * | localPsiRaster, | ||
isce3::io::Raster * | simRaster, | ||
isce3::io::Raster * | maskRaster, | ||
isce3::io::Raster * | groundToSatEastRaster, | ||
isce3::io::Raster * | groundToSatNorthRaster ) |
Run topo with externally created topo rasters; generate mask.
[in] | demInterp | input DEM interpolator |
[in] | xRaster | output raster for X coordinate in requested projection system (meters or degrees) |
[in] | yRaster | output raster for Y coordinate in requested projection system (meters or degrees) |
[in] | zRaster | output raster for height above ellipsoid (meters) |
[in] | incRaster | output raster for incidence angle (degrees) computed from vertical at target |
[in] | hdgRaster | output raster for azimuth angle (degrees) computed anti-clockwise from EAST (Right hand rule) |
[in] | localIncRaster | output raster for local incidence angle (degrees) at target |
[in] | localPsiRaster | output raster for local projection angle (degrees) at target |
[in] | simRaster | output raster for simulated amplitude image. |
[in] | maskRaster | output raster for layover/shadow mask. |
[in] | groundToSatEastRaster | output for east component of ground to satellite unit vector |
[in] | groundToSatNorthRaster | output for north component of ground to satellite unit vector |
void isce3::geometry::Topo::topo | ( | isce3::geometry::DEMInterpolator & | demInterp, |
TopoLayers & | layers ) |
Run topo with externally created topo rasters in TopoLayers object.
[in] | demInterp | input DEM interpolator |
[in] | layers | TopoLayers object for storing and writing results |
void isce3::geometry::Topo::topo | ( | isce3::io::Raster & | demRaster, |
const std::string & | outdir ) |
Main entry point for the module; internal creation of topo rasters.
This is the main topo driver. The pixel-by-pixel output file names are fixed for now
[in] | demRaster | input DEM raster |
[in] | outdir | directory to write outputs to |
void isce3::geometry::Topo::topo | ( | isce3::io::Raster & | demRaster, |
isce3::io::Raster * | xRaster = nullptr, | ||
isce3::io::Raster * | yRaster = nullptr, | ||
isce3::io::Raster * | heightRaster = nullptr, | ||
isce3::io::Raster * | incRaster = nullptr, | ||
isce3::io::Raster * | hdgRaster = nullptr, | ||
isce3::io::Raster * | localIncRaster = nullptr, | ||
isce3::io::Raster * | localPsiRaster = nullptr, | ||
isce3::io::Raster * | simRaster = nullptr, | ||
isce3::io::Raster * | maskRaster = nullptr, | ||
isce3::io::Raster * | groundToSatEastRaster = nullptr, | ||
isce3::io::Raster * | groundToSatNorthRaster = nullptr ) |
Run topo with externally created topo rasters; generate mask.
[in] | demRaster | input DEM raster |
[in] | xRaster | output raster for X coordinate in requested projection system (meters or degrees) |
[in] | yRaster | output raster for Y coordinate in requested projection system (meters or degrees) |
[in] | zRaster | output raster for height above ellipsoid (meters) |
[in] | incRaster | output raster for incidence angle (degrees) computed from vertical at target |
[in] | hdgRaster | output raster for azimuth angle (degrees) computed anti-clockwise from EAST (Right hand rule) |
[in] | localIncRaster | output raster for local incidence angle (degrees) at target |
[in] | localPsiRaster | output raster for local projection angle (degrees) at target |
[in] | simRaster | output raster for simulated amplitude image. |
[in] | maskRaster | output raster for layover/shadow mask. |
[in] | groundToSatEastRaster | output for east component of ground to satellite unit vector |
[in] | groundToSatNorthRaster | output for north component of ground to satellite unit vector |
void isce3::geometry::Topo::topo | ( | isce3::io::Raster & | demRaster, |
TopoLayers & | layers ) |
Run topo with externally created topo rasters in TopoLayers object.
[in] | demRaster | input DEM raster |
[in] | layers | TopoLayers object for storing and writing results |