OSSIM - Open Source Software Image Map  Version 1.9.0 (20180803)
ossimSarModel.h
Go to the documentation of this file.
1 //----------------------------------------------------------------------------
2 //
3 // License: See top level LICENSE.txt file.
4 //
5 // Author: David Hicks
6 //
7 // Description: Base class for Synthetic Aperture Radar model.
8 //
9 // This model represents a standard model using relatively
10 // generic support data based on the following references:
11 // [1] Modern Photogrammetry; Mikhail, Bethel, & McGlone;
12 // Sections 11.7-11.9
13 // [2] The Compendium of Controlled Extensions for NITFS
14 // 21 Mar 2006, paragraph E.3.8, SAR MPDSR
15 //
16 //----------------------------------------------------------------------------
17 // $Id: ossimSarModel.h 15766 2009-10-20 12:37:09Z gpotts $
18 #ifndef ossimSarModel_HEADER
19 #define ossimSarModel_HEADER
20 
22 #include <ossim/base/ossimDpt.h>
25 
26 class ossimHgtRef;
27 
28 
30 {
31 public:
32 
34  {
35  UNKNOWN = 0,
36  SCAN = 1,
37  SPOT = 2
38  };
39 
41  {
42  X_POS = 0,
45  NUM_ADJUSTABLE_PARAMS // not an index
46  };
47 
49  ossimSarModel();
50 
60  virtual bool loadState(const ossimKeywordlist& kwl,
61  const char* prefix=0);
70  virtual bool saveState(ossimKeywordlist& kwl,
71  const char* prefix=0) const;
72 
77  static void writeGeomTemplate(ostream& os);
78 
79 
83  virtual ossimObject* dup() const { return 0; } // TBR
84 
88  virtual std::ostream& print(std::ostream& out) const;
89 
90 
94  virtual void lineSampleToWorld(const ossimDpt& image_point,
95  ossimGpt& world_point) const;
96  virtual void worldToLineSample(const ossimGpt& world_point,
97  ossimDpt& image_point) const;
98  virtual void lineSampleHeightToWorld(const ossimDpt& lineSampPt,
99  const double& heightAboveEllipsoid,
100  ossimGpt& worldPt) const;
111  virtual void imagingRay(const ossimDpt& image_point,
112  ossimEcefRay& image_ray) const;
113 
114  virtual double sensorAzimuth(const ossimDpt& image_point) const;
115 
126  virtual ossimDpt getForwardDeriv(int parmIdx, const ossimGpt& gpos, double h);
127 
131  inline virtual bool useForward() const
132  {
133  return false;
134  }
135 
139  virtual void updateModel();
140 
146  const ossimDpt& ipos, NEWMAT::SymmetricMatrix& Cov);
147 
148 protected:
150  virtual ~ossimSarModel();
151 
152 
158 
162  virtual ossim_float64 getArpTime() const;
163 
169  virtual ossim_float64 getArpTime(const ossimDpt& imgPt) const;
170 
174  virtual ossimEcefPoint getArpPos() const;
175 
179  virtual ossimEcefPoint getArpPos(const ossim_float64& time) const;
180 
184  virtual ossimEcefVector getArpVel() const;
185 
189  virtual ossimEcefVector getArpVel(const ossim_float64& time) const;
190 
202  virtual bool computeRangeDoppler(const ossimEcefPoint& pt,
203  const ossimEcefPoint& arpPos,
204  const ossimEcefVector& arpVel,
205  ossim_float64& range,
206  ossim_float64& doppler) const;
207 
216  virtual bool computeImageFromOP(const ossimEcefPoint& opPt, ossimDpt& imgPt) const;
217 
226  virtual bool computeOPfromImage(const ossimDpt& imgPt, ossimEcefPoint& opPt) const;
227 
241  virtual bool projOPtoSurface(const ossimEcefPoint& opPt,
242  const ossim_float64& range,
243  const ossim_float64& doppler,
244  const ossimEcefPoint& arpPos,
245  const ossimEcefVector& arpVel,
246  const ossimHgtRef* hgtRef,
247  ossimEcefPoint& ellPt) const;
248 
257  virtual bool projEllipsoidToOP(const ossimEcefPoint& ellPt,
258  ossimEcefPoint& opPt) const;
259 
260 
261 
265  ossimString getAcquistionModeString() const;
266 
272  void setAcquisitionMode(const ossimString& mode);
273 
276 
279 
282 
285 
288 
291 
294 
297 
302  vector<ossim_float64> theArpXPolCoeff;
303  vector<ossim_float64> theArpYPolCoeff;
304  vector<ossim_float64> theArpZPolCoeff;
305 
307  vector<ossim_float64> theTimeCoeff;
308 
315 
320 
321 
335 
338 
341 
342  TYPE_DATA
343 };
344 
345 #endif /* #ifndef ossimSarModel_HEADER */
ossim_float64 theOipr
output impulse response
vector< ossim_float64 > theArpZPolCoeff
ossimEcefVector theOutputPlaneXaxis
output plane x-axis
ossimEcefPoint theObsOP
ossim_float64 theObsDop
virtual bool loadState(const ossimKeywordlist &kwl, const char *prefix=0)
ossim_float64 theArpTime
Aperture Reference/Center Point (ARP) time in seconds.
Represents serializable keyword/value map.
ossimEcefPoint theOrpPosition
Output/Ground Reference Point (ORP) position.
ossimEcefVector theOPX
Output/slant plane unit vectors.
virtual ossimObject * dup() const
Definition: ossimSarModel.h:83
virtual bool useForward() const
ossimOptimizableProjection
virtual void lineSampleToWorld(const ossimDpt &image_point, ossimGpt &world_point) const
ossim_float64 thePixelSpacing
Other computed parameters.
vector< ossim_float64 > theTimeCoeff
Time Coefficients.
virtual ossimDpt getForwardDeriv(int parmIdx, const ossimGpt &gpos, double hdelta=1e-11)
ossim_float64 theObsTime
double ossim_float64
ossimEcefVector theObsArpVel_U
ossim_float64 theObsArpVel_Mag
#define TYPE_DATA
Definition: ossimRtti.h:339
ossimDpt theOrpCenter
sample (x)/line(y) image coordinates of ORP
ossim_float64 theParDopWRTaz
Partials for current point.
virtual void lineSampleHeightToWorld(const ossimDpt &lineSampPt, const double &heightEllipsoid, ossimGpt &worldPt) const =0
ossimEcefVector theOPZ
ossimEcefPoint theObsArpPos
virtual void imagingRay(const ossimDpt &image_point, ossimEcefRay &image_ray) const
virtual bool saveState(ossimKeywordlist &kwl, const char *prefix=0) const
virtual std::ostream & print(std::ostream &out) const
ossimEcefVector theObsArpVel
virtual void updateModel()
static void writeGeomTemplate(ostream &os)
vector< ossim_float64 > theArpXPolCoeff
Aperture Reference Point (ARP) Polynomials.
ossimEcefPoint theObsPosition
ossimEcefVector theOutputPlaneNormal
output plane normal
AcquisitionMode theAcquisitionMode
acquisition mode
ossim_float64 theObsRng
Adjustment-related data used and set by getForwardDeriv.
virtual void worldToLineSample(const ossimGpt &world_point, ossimDpt &image_point) const
#define OSSIM_DLL
ossimEcefVector theLsrOffset
Adjustable parameters.
virtual ossimSensorModel::CovMatStatus getObsCovMat(const ossimDpt &ipos, NEWMAT::SymmetricMatrix &Cov, const ossim_float64 defPointingSigma=0.5) const
Gives 2X2 covariance matrix of observations.
ossimEcefVector theOPY
ossim_float64 thePixelSize
pixel size
vector< ossim_float64 > theArpYPolCoeff
std::basic_ostream< char > ostream
Base class for char output streams.
Definition: ossimIosFwd.h:23