isce3 0.25.0
Loading...
Searching...
No Matches
isce3::geometry::Topo Class Reference

Transformer from radar geometry coordinates to map coordinates with DEM / reference altitude. More...

#include <Topo.h>

Inheritance diagram for isce3::geometry::Topo:
isce3::cuda::geometry::Topo

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::RadarGridParametersradarGridParameters () 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::Orbitorbit () const
 Get the orbits used for processing.
 
const isce3::core::Ellipsoidellipsoid () const
 Get the ellipsoid used for processing.
 
const isce3::core::LUT2d< double > & doppler () const
 Get the doppler module used for processing.
 

Detailed Description

Transformer from radar geometry coordinates to map coordinates with DEM / reference altitude.

See geometry overview for a description of the algorithm

Constructor & Destructor Documentation

◆ Topo() [1/3]

isce3::geometry::Topo::Topo ( const isce3::product::RadarGridProduct & product,
char frequency = 'A',
bool nativeDoppler = false )

Constructor using a product.

Parameters
[in]productInput RadarGridProduct
[in]frequencyFrequency designation
[in]nativeDopplerFlag for using native Doppler frequencies instead of zero-Doppler

◆ Topo() [2/3]

isce3::geometry::Topo::Topo ( const isce3::product::RadarGridParameters & radarGrid,
const isce3::core::Orbit & orbit,
const isce3::core::Ellipsoid & ellipsoid,
const isce3::core::LUT2d< double > & doppler = {} )
inline

Alternative constructor from ellipsoid orbit and radarGrid.

Parameters
[in]radarGridRadarGridParameters object
[in]orbitOrbit object
[in]ellipsoidEllipsoid object
[in]dopplerLUT2d doppler model

◆ Topo() [3/3]

isce3::geometry::Topo::Topo ( const isce3::core::Ellipsoid & ellipsoid,
const isce3::core::Orbit & orbit,
const isce3::core::LUT2d< double > & doppler,
const isce3::core::Metadata & meta )
inline

Constructor using core objects.

Alternative constructor from ellipsoid orbit and metadata. Used for supporting VRT-formatted products.

Parameters
[in]ellipsoidEllipsoid object
[in]orbitOrbit object
[in]dopplerLUT1d doppler model
[in]metaMetadata object with radar image parameters

Member Function Documentation

◆ computeDEMBounds()

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.

◆ computeMask()

void isce3::geometry::Topo::computeMask ( bool mask)
inline

Set mask computation flag.

Parameters
[in]maskBoolean for mask computation

◆ decimaldegMargin()

void isce3::geometry::Topo::decimaldegMargin ( double deg)
inline

Set margin in decimal degrees.

Parameters
[in]degMargin around bounding box in decimal degrees

◆ demMethod()

void isce3::geometry::Topo::demMethod ( isce3::core::dataInterpMethod method)
inline

Set the DEM interpolation method while checking its validity.

Parameters
[in]DEMinerpolation method

◆ epsgOut()

void isce3::geometry::Topo::epsgOut ( int epsgcode)
inline

Set output coordinate system.

Set the EPSG code of the output layers and configure projection. See here for supported projections.

Parameters
[in]epsgcodeEPSG code of desired pixel-by-pixel outputs

◆ extraiter()

void isce3::geometry::Topo::extraiter ( int n)
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.

Parameters
[in]nNumber of secondary iterations

◆ linesPerBlock()

void isce3::geometry::Topo::linesPerBlock ( size_t linesPerBlock)
inline

Set lines to be processed per block.

Parameters
[in]linesPerBlockLines to be processed per block

◆ maximumHeight()

void isce3::geometry::Topo::maximumHeight ( double maxh)
inline

Set maximum height.

Parameters
[in]maxhMaximum altitude for the scene

◆ minimumHeight()

void isce3::geometry::Topo::minimumHeight ( double minh)
inline

Set minimum height.

Parameters
[in]minhMinimum altitude for the scene

◆ numiter()

void isce3::geometry::Topo::numiter ( int n)
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

Parameters
[in]nNumber of primary iterations

◆ setLayoverShadow()

void isce3::geometry::Topo::setLayoverShadow ( TopoLayers & ,
DEMInterpolator & ,
std::vector< isce3::core::Vec3 > & ,
size_t block,
size_t n_blocks )

Compute layover/shadow masks.

Parameters
[in]layersObject containing output layers
[in]demInterpDEMInterpolator object
[in]satPositionVector of satellite position vectors for each line
[in]blockCurrent block number
[in]n_blocksTotal number of blocks in block

◆ threshold()

void isce3::geometry::Topo::threshold ( double t)
inline

Set convergence threshold.

Parameters
[in]tDistance threshold to flag convergence of iterations

◆ topo() [1/6]

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

  • x.rdr - X coordinate in requested projection system (meters or degrees)
  • y.rdr - Y coordinate in requested projection system (meters or degrees)
  • z.rdr - Height above ellipsoid (meters)
  • inc.rdr - Incidence angle (degrees) computed from vertical at target
  • localInc.rdr - Local incidence angle (degrees) at target
  • locaPsi.rdr - Local projection angle (degrees) at target
  • simamp.rdr - Simulated amplitude image.
  • los_east.rdr - East component of ground to satellite unit vector
  • los_north.rdr - North component of ground to satellite unit vector
Parameters
[in]demInterpinput DEM interpolator
[in]outdirdirectory to write outputs to

◆ topo() [2/6]

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.

Parameters
[in]demInterpinput DEM interpolator
[in]xRasteroutput raster for X coordinate in requested projection system (meters or degrees)
[in]yRasteroutput raster for Y coordinate in requested projection system (meters or degrees)
[in]zRasteroutput raster for height above ellipsoid (meters)
[in]incRasteroutput raster for incidence angle (degrees) computed from vertical at target
[in]hdgRasteroutput raster for azimuth angle (degrees) computed anti-clockwise from EAST (Right hand rule)
[in]localIncRasteroutput raster for local incidence angle (degrees) at target
[in]localPsiRasteroutput raster for local projection angle (degrees) at target
[in]simRasteroutput raster for simulated amplitude image.
[in]maskRasteroutput raster for layover/shadow mask.
[in]groundToSatEastRasteroutput for east component of ground to satellite unit vector
[in]groundToSatNorthRasteroutput for north component of ground to satellite unit vector

◆ topo() [3/6]

void isce3::geometry::Topo::topo ( isce3::geometry::DEMInterpolator & demInterp,
TopoLayers & layers )

Run topo with externally created topo rasters in TopoLayers object.

Parameters
[in]demInterpinput DEM interpolator
[in]layersTopoLayers object for storing and writing results

◆ topo() [4/6]

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

  • x.rdr - X coordinate in requested projection system (meters or degrees)
  • y.rdr - Y coordinate in requested projection system (meters or degrees)
  • z.rdr - Height above ellipsoid (meters)
  • inc.rdr - Incidence angle (degrees) computed from vertical at target
  • hdg.rdr - Azimuth angle (degrees) computed anti-clockwise from EAST (Right hand rule)
  • localInc.rdr - Local incidence angle (degrees) at target
  • locaPsi.rdr - Local projection angle (degrees) at target
  • simamp.rdr - Simulated amplitude image.
  • los_east.rdr - East component of ground to satellite unit vector
  • los_north.rdr - North component of ground to satellite unit vector
Parameters
[in]demRasterinput DEM raster
[in]outdirdirectory to write outputs to

◆ topo() [5/6]

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.

Parameters
[in]demRasterinput DEM raster
[in]xRasteroutput raster for X coordinate in requested projection system (meters or degrees)
[in]yRasteroutput raster for Y coordinate in requested projection system (meters or degrees)
[in]zRasteroutput raster for height above ellipsoid (meters)
[in]incRasteroutput raster for incidence angle (degrees) computed from vertical at target
[in]hdgRasteroutput raster for azimuth angle (degrees) computed anti-clockwise from EAST (Right hand rule)
[in]localIncRasteroutput raster for local incidence angle (degrees) at target
[in]localPsiRasteroutput raster for local projection angle (degrees) at target
[in]simRasteroutput raster for simulated amplitude image.
[in]maskRasteroutput raster for layover/shadow mask.
[in]groundToSatEastRasteroutput for east component of ground to satellite unit vector
[in]groundToSatNorthRasteroutput for north component of ground to satellite unit vector

◆ topo() [6/6]

void isce3::geometry::Topo::topo ( isce3::io::Raster & demRaster,
TopoLayers & layers )

Run topo with externally created topo rasters in TopoLayers object.

Parameters
[in]demRasterinput DEM raster
[in]layersTopoLayers object for storing and writing results

The documentation for this class was generated from the following files:

Generated for ISCE3.0 by doxygen 1.13.2.