isce3 0.25.0
Loading...
Searching...
No Matches
Geo2rdr.h
1//-*- C++ -*-
2//-*- coding: utf-8 -*-
3//
4// Author: Bryan Riel, Joshua Cohen
5// Copyright 2017-2018
6
7#pragma once
8
9// pyre
10#include <pyre/journal.h>
11
12// isce3::core
13#include <isce3/core/Metadata.h>
14#include <isce3/core/Orbit.h>
15#include <isce3/core/Poly2d.h>
16#include <isce3/core/LUT1d.h>
17#include <isce3/core/Ellipsoid.h>
18#include <isce3/core/Peg.h>
19#include <isce3/core/Projections.h>
20
21// isce3::io
22#include <isce3/io/Raster.h>
23
24// isce3::product
25#include <isce3/product/RadarGridProduct.h>
26#include <isce3/product/RadarGridParameters.h>
27
28#include <limits>
29
30// Declaration
31namespace isce3 {
32 namespace geometry {
33 class Geo2rdr;
34 }
35}
36
44public:
45
54 char frequency = 'A',
55 bool nativeDoppler = false);
56
66 const isce3::core::Orbit &,
68 const isce3::core::Metadata &);
69
82
88 void threshold(double t) { _threshold = t; }
89
95 void numiter(int n) { _numiter = n; }
96
102 void linesPerBlock(size_t linesPerBlock) { _linesPerBlock = linesPerBlock; }
103
114 void geo2rdr(isce3::io::Raster & topoRaster,
115 isce3::io::Raster & rgoffRaster,
116 isce3::io::Raster & azoffRaster,
117 double azshift=0.0, double rgshift=0.0);
118
132 void geo2rdr(isce3::io::Raster & topoRaster,
133 const std::string & outdir,
134 double azshift=0.0, double rgshift=0.0);
135
137 const double NULL_VALUE = -1000000.0;
138
139 // Getters for isce objects
140
142 const isce3::core::Orbit & orbit() const { return _orbit; }
143
145 const isce3::core::Ellipsoid & ellipsoid() const { return _ellipsoid; }
146
148 const isce3::core::LUT2d<double> & doppler() const { return _doppler; }
149
151 const isce3::product::RadarGridParameters & radarGridParameters() const { return _radarGrid; }
152
153 // Get geo2rdr processing options
154
156 double threshold() const { return _threshold; }
157
159 int numiter() const { return _numiter; }
160
162 size_t linesPerBlock() const { return _linesPerBlock; }
163
164private:
165
167 void _printExtents(pyre::journal::info_t &,
168 double, double, double,
169 double, double, double,
170 size_t, size_t);
171
173 void _checkOrbitInterpolation(double);
174
175 // isce3::core objects
176 isce3::core::Ellipsoid _ellipsoid;
177 isce3::core::Orbit _orbit;
179
180 // RadarGridParameters
182
183 // Projection related data
184 isce3::core::ProjectionBase * _projTopo;
185
186 // Processing parameters
187 int _numiter;
188 double _threshold = 1e-8;
189 size_t _linesPerBlock = 1000;
190};
191
192// Get inline implementations for Geo2rdr
193#define ISCE_GEOMETRY_GEO2RDR_ICC
194#include "Geo2rdr.icc"
195#undef ISCE_GEOMETRY_GEO2RDR_ICC
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
Abstract base class for individual projections.
Definition Projections.h:21
Transformer from map coordinates to radar geometry coordinates.
Definition Geo2rdr.h:43
const isce3::core::Orbit & orbit() const
Get Orbit object used for processing.
Definition Geo2rdr.h:142
const isce3::core::LUT2d< double > & doppler() const
Get Doppler model used for processing.
Definition Geo2rdr.h:148
int numiter() const
Return number of Newton-Raphson iterations used for processing.
Definition Geo2rdr.h:159
void geo2rdr(isce3::io::Raster &topoRaster, isce3::io::Raster &rgoffRaster, isce3::io::Raster &azoffRaster, double azshift=0.0, double rgshift=0.0)
Run geo2rdr with offsets and externally created offset rasters.
Definition Geo2rdr.cpp:48
void threshold(double t)
Set convergence threshold.
Definition Geo2rdr.h:88
void numiter(int n)
Set number of Newton-Raphson iterations.
Definition Geo2rdr.h:95
size_t linesPerBlock() const
Get linesPerBlock.
Definition Geo2rdr.h:162
double threshold() const
Return the azimuth time convergence threshold used for processing.
Definition Geo2rdr.h:156
const double NULL_VALUE
NoData Value.
Definition Geo2rdr.h:137
void linesPerBlock(size_t linesPerBlock)
Set lines to be processed per block.
Definition Geo2rdr.h:102
const isce3::core::Ellipsoid & ellipsoid() const
Get Ellipsoid object used for processing.
Definition Geo2rdr.h:145
Geo2rdr(const isce3::product::RadarGridProduct &, char frequency='A', bool nativeDoppler=false)
Constructor from product.
Definition Geo2rdr.icc:13
const isce3::product::RadarGridParameters & radarGridParameters() const
Get read-only reference to RadarGridParameters.
Definition Geo2rdr.h:151
Data structure meant to handle Raster I/O operations.
Definition Raster.h:32
Definition RadarGridParameters.h:16
RadarGridProduct class declaration.
Definition RadarGridProduct.h:71
The isce3::geometry namespace.
Definition boundingbox.h:15
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5

Generated for ISCE3.0 by doxygen 1.13.2.