isce3 0.25.0
Loading...
Searching...
No Matches
Topo.h
1#pragma once
2
3#include "forward.h"
4
5#include <isce3/core/forward.h>
6#include <isce3/core/Ellipsoid.h>
7#include <isce3/core/LUT2d.h>
8#include <isce3/core/Orbit.h>
9
10// isce3::io
11#include <isce3/io/forward.h>
12
13// isce3::product
14#include <isce3/product/forward.h>
15#include <isce3/product/RadarGridParameters.h>
16
17// isce3::geometry
18#include "geometry.h"
19
28public:
29
38 char frequency = 'A',
39 bool nativeDoppler = false);
40
53
68 const isce3::core::Metadata & meta);
69
75 void threshold(double t) { _threshold = t; }
76
85 void numiter(int n) { _numiter = n; }
86
98 void extraiter(int n) { _extraiter = n; }
99
105 void demMethod(isce3::core::dataInterpMethod method);
106
115 void epsgOut(int epsgcode);
116
122 void computeMask(bool mask) { _computeMask = mask; }
123
129 void minimumHeight(double minh) { _minH = minh; }
130
136 void maximumHeight(double maxh) { _maxH = maxh; }
137
143 void decimaldegMargin(double deg) { _margin = deg; }
144
150 void linesPerBlock(size_t linesPerBlock) { _linesPerBlock = linesPerBlock; }
151
152 // Get topo processing options
153
155 double threshold() const { return _threshold; }
156
158 int numiter() const { return _numiter; }
159
161 int extraiter() const { return _extraiter; }
162
164 int epsgOut() const { return _epsgOut; }
165
167 isce3::core::dataInterpMethod demMethod() const { return _demMethod; }
168
170 bool computeMask() const { return _computeMask; }
171
173 double minimumHeight() const { return _minH; }
174
176 double maximumHeight() const { return _maxH; }
177
179 double decimaldegMargin() const { return _margin; }
180
182 size_t linesPerBlock() const { return _linesPerBlock; }
183
185 const isce3::product::RadarGridParameters & radarGridParameters() const { return _radarGrid; }
186
192 void computeDEMBounds(isce3::io::Raster &, DEMInterpolator &, size_t, size_t);
193
214 void topo(isce3::io::Raster& demRaster, const std::string& outdir);
215
222 void topo(isce3::io::Raster & demRaster, TopoLayers & layers);
223
240 void topo(isce3::io::Raster& demRaster,
241 isce3::io::Raster* xRaster = nullptr,
242 isce3::io::Raster* yRaster = nullptr,
243 isce3::io::Raster* heightRaster = nullptr,
244 isce3::io::Raster* incRaster = nullptr,
245 isce3::io::Raster* hdgRaster = nullptr,
246 isce3::io::Raster* localIncRaster = nullptr,
247 isce3::io::Raster* localPsiRaster = nullptr,
248 isce3::io::Raster* simRaster = nullptr,
249 isce3::io::Raster* maskRaster = nullptr,
250 isce3::io::Raster* groundToSatEastRaster = nullptr,
251 isce3::io::Raster* groundToSatNorthRaster = nullptr);
252
273 const std::string& outdir);
274
281 void topo(isce3::geometry::DEMInterpolator& demInterp, TopoLayers& layers);
282
306 isce3::io::Raster* xRaster,
307 isce3::io::Raster* yRaster,
308 isce3::io::Raster* heightRaster,
309 isce3::io::Raster* incRaster,
310 isce3::io::Raster* hdgRaster,
311 isce3::io::Raster* localIncRaster,
312 isce3::io::Raster* localPsiRaster,
313 isce3::io::Raster* simRaster,
314 isce3::io::Raster* maskRaster,
315 isce3::io::Raster* groundToSatEastRaster,
316 isce3::io::Raster* groundToSatNorthRaster);
317
329 std::vector<isce3::core::Vec3>&,
330 size_t block,
331 size_t n_blocks);
332
333 // Getters for isce objects
334
336 inline const isce3::core::Orbit& orbit() const { return _orbit; }
338 inline const isce3::core::Ellipsoid& ellipsoid() const { return _ellipsoid; }
340 inline const isce3::core::LUT2d<double>& doppler() const { return _doppler; }
341
342private:
354 void _initAzimuthLine(size_t line, double&,
355 isce3::core::Vec3& pos, isce3::core::Vec3& vel,
356 isce3::core::Basis& TCNbasis);
357
373 void _setOutputTopoLayers(isce3::core::Vec3 &,
374 TopoLayers &,
375 size_t,
377 isce3::core::Vec3& pos,
378 isce3::core::Vec3& vel,
381
383 template<typename T> void _topo(T& dem, const std::string& outdir);
384
386 template<typename T>
387 void _topo(T& dem,
388 isce3::io::Raster* xRaster = nullptr,
389 isce3::io::Raster* yRaster = nullptr,
390 isce3::io::Raster* heightRaster = nullptr,
391 isce3::io::Raster* incRaster = nullptr,
392 isce3::io::Raster* hdgRaster = nullptr,
393 isce3::io::Raster* localIncRaster = nullptr,
394 isce3::io::Raster* localPsiRaster = nullptr,
395 isce3::io::Raster* simRaster = nullptr,
396 isce3::io::Raster* maskRaster = nullptr,
397 isce3::io::Raster* groundToSatEastRaster = nullptr,
398 isce3::io::Raster* groundToSatNorthRaster = nullptr);
399
400 // isce3::core objects
401 isce3::core::Orbit _orbit;
402 isce3::core::Ellipsoid _ellipsoid;
404
405 // RadarGridParameters
407
408 // Optimization options
409 double _threshold = 1.0e-8; //Threshold for convergence of slant range
410 int _numiter = 25; //Number of primary iterations
411 int _extraiter = 10; //Number of secondary iterations
412 double _minH = isce3::core::GLOBAL_MIN_HEIGHT; //Lowest altitude in scene (global minimum default)
413 double _maxH = isce3::core::GLOBAL_MAX_HEIGHT; //Highest altitude in scene (global maximum default)
414 double _margin = 0.15; //Margin for bounding box in decimal degrees
415 size_t _linesPerBlock = 1000; //Block size for processing
416 bool _computeMask = true; //Flag for generating shadow-layover mask
417
418 isce3::core::dataInterpMethod _demMethod;
419
420 // Output options and objects
421 int _epsgOut;
423};
424
425// Get inline implementations for Topo
426#define ISCE_GEOMETRY_TOPO_ICC
427#include "Topo.icc"
428#undef ISCE_GEOMETRY_TOPO_ICC
Simple class to store three-dimensional basis vectors.
Definition Basis.h:20
Data structure to store Ellipsoid information.
Definition Ellipsoid.h:20
Data structure to store 2D Lookup table.
Definition LUT2d.h:20
Data structure for storing basic radar geometry image metadata.
Definition Metadata.h:17
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing,...
Definition Orbit.h:44
Helper datastructure to handle slant range information for a pixel.
Definition Pixel.h:13
Abstract base class for individual projections.
Definition Projections.h:21
Definition DEMInterpolator.h:25
Definition TopoLayers.h:10
Transformer from radar geometry coordinates to map coordinates with DEM / reference altitude.
Definition Topo.h:27
size_t linesPerBlock() const
Get linesPerBlock.
Definition Topo.h:182
int numiter() const
Get number of primary iterations used for processing.
Definition Topo.h:158
void linesPerBlock(size_t linesPerBlock)
Set lines to be processed per block.
Definition Topo.h:150
const isce3::core::Ellipsoid & ellipsoid() const
Get the ellipsoid used for processing.
Definition Topo.h:338
const isce3::core::Orbit & orbit() const
Get the orbits used for processing.
Definition Topo.h:336
double maximumHeight() const
Get maximum height.
Definition Topo.h:176
bool computeMask() const
Get mask computation flag.
Definition Topo.h:170
void numiter(int n)
Set number of primary iterations.
Definition Topo.h:85
void threshold(double t)
Set convergence threshold.
Definition Topo.h:75
void extraiter(int n)
Set number of secondary iterations.
Definition Topo.h:98
double minimumHeight() const
Get minimum height.
Definition Topo.h:173
const isce3::core::LUT2d< double > & doppler() const
Get the doppler module used for processing.
Definition Topo.h:340
void computeDEMBounds(isce3::io::Raster &, DEMInterpolator &, size_t, size_t)
Get DEM bounds using first/last azimuth line and slant range bin.
Definition Topo.cpp:446
void topo(isce3::io::Raster &demRaster, const std::string &outdir)
Main entry point for the module; internal creation of topo rasters.
Definition Topo.cpp:395
int epsgOut() const
Get the output coordinate system used for processing.
Definition Topo.h:164
void computeMask(bool mask)
Set mask computation flag.
Definition Topo.h:122
Topo(const isce3::product::RadarGridProduct &, char frequency='A', bool nativeDoppler=false)
Constructor using a product.
Definition Topo.cpp:35
double threshold() const
Get distance convergence threshold used for processing.
Definition Topo.h:155
isce3::core::dataInterpMethod demMethod() const
Get the DEM interpolation method used for processing.
Definition Topo.h:167
int extraiter() const
Get number of secondary iterations used for processing.
Definition Topo.h:161
void maximumHeight(double maxh)
Set maximum height.
Definition Topo.h:136
double decimaldegMargin() const
Get margin in decimal degrees.
Definition Topo.h:179
const isce3::product::RadarGridParameters & radarGridParameters() const
Get read-only reference to RadarGridParameters.
Definition Topo.h:185
void decimaldegMargin(double deg)
Set margin in decimal degrees.
Definition Topo.h:143
void setLayoverShadow(TopoLayers &, DEMInterpolator &, std::vector< isce3::core::Vec3 > &, size_t block, size_t n_blocks)
Compute layover/shadow masks.
Definition Topo.cpp:754
void minimumHeight(double minh)
Set minimum height.
Definition Topo.h:129
Data structure meant to handle Raster I/O operations.
Definition Raster.h:32
Definition RadarGridParameters.h:16
RadarGridProduct class declaration.
Definition RadarGridProduct.h:71
Collection of simple commonly used geometry functions.

Generated for ISCE3.0 by doxygen 1.13.2.