/usr/include/ossim/projection/ossimRS1SarModel.h is in libossim-dev 2.2.2-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 | //*******************************************************************
//
// License: See top level LICENSE.txt file.
//
// Author: Oscar Kramer
//
// Description:
//
// Sensor Model for Radarsat1 SAR sensor.
//
//*******************************************************************
// $Id:$
#ifndef ossimRS1SarModel_HEADER
#define ossimRS1SarModel_HEADER 1
#include <ossim/base/ossimLsrPoint.h>
#include <ossim/base/ossimLsrVector.h>
#include <ossim/base/ossimEcefPoint.h>
#include <ossim/base/ossimGpt.h>
#include <ossim/base/ossimDrect.h>
#include <ossim/base/ossimFilename.h>
#include <ossim/base/ossimDblGrid.h>
#include <ossim/projection/ossimSarModel.h>
#include <ossim/base/ossimLagrangeInterpolator.h>
#include <ossim/support_data/ossimCeosData.h>
// Namespace class forward class declaration.
namespace NEWMAT
{
class Matrix;
}
//*****************************************************************************
// CLASS: ossimRS1SarModel
//*****************************************************************************
class ossimRS1SarModel : public ossimSensorModel
{
public:
ossimRS1SarModel();
ossimRS1SarModel(const ossimFilename& imageDir);
virtual ~ossimRS1SarModel();
enum ImagingMode
{
UNKNOWN_MODE = 0,
SCN, // ScanSAR Narrow Beam
SCW, // ScanSAR Wide Beam
SGC, // SAR Georeferenced Coarse Resolution
SGF, // SAR Georeferenced Fine Resolution
SGX, // SAR Georeferenced Extra Fine Resolution
SLC, // Single Look Complex
SPG, // SAR Precision Geocoded
SSG, // SAR Systematically Geocoded
RAW,
ERS
};
enum DirectionFlag
{
UNKNOWN_DIRECTION = 0,
ASCENDING,
DESCENDING
};
//! Fulfills ossimObject base-class pure virtuals. Saves modeling info to KWL.
//! Returns true if successful.
virtual bool saveState(ossimKeywordlist& kwl, const char* prefix=NULL) const;
//! Fulfills ossimObject base-class pure virtuals. Reads modeling info from KWL.
//! Returns true if successful.
virtual bool loadState(const ossimKeywordlist& kwl, const char* prefix=NULL);
//! Establishes geographic 3D point given image line, sample and ellipsoid height.
virtual void lineSampleHeightToWorld(const ossimDpt& imagePt,
const double& heightAboveEllipsoid,
ossimGpt& worldPt) const;
//! Given an image point, returns a ray originating at some arbitrarily high
//! point (in this model at the sensor position) and pointing towards the target.
virtual void imagingRay(const ossimDpt& image_point, ossimEcefRay& image_ray) const;
inline virtual bool useForward() const { return false; } //!image to ground faster
//! Returns pointer to a new instance, copy of this.
virtual ossimObject* dup() const { return 0; } // TBR
protected:
void setImagingMode(char* modeStr);
void initFromCeos(const ossimFilename& dataDir);
void initAdjParms();
void establishEphemeris();
void eciToEcfXform(const double& julianDay, NEWMAT::Matrix& xform) const;
void establishOrpInterp();
void establishOrpGrid();
void establishVehicleSpace();
void interpolatedScanORP(const ossimDpt& orp, ossimEcefPoint& orp_ecf) const;
void deallocateMemory();
ossimRefPtr<ossimCeosData> theCeosData;
ossimRefPtr<ossimLagrangeInterpolator> theArpPosInterp; // in ECF
ossimRefPtr<ossimLagrangeInterpolator> theArpVelInterp; // in ECF
ossimRefPtr<ossimLagrangeInterpolator> theLocalOrpInterp; // in ECF
ImagingMode theImagingMode;
double theIllumAzimuth;
double theIllumElevation;
ossimEcefPoint theORP;
double theRefHeight;
double theGHA; // Greenwich Hour Angle of first eph. pt.
double theEphFirstSampTime; // in seconds from start of day
double theSinOrientation;
double theCosOrientation;
double theSinSkew;
ossimLsrSpace theVehicleSpace;
ossimEcefVector thePosCorrection;
int theFirstLineDay; // julian day
double theFirstLineTime; // seconds
double theTimePerLine; // seconds
DirectionFlag theDirectionFlag;
double theSrGrCoeff[6];
ossimDpt thePixelSpacing;
//***
// Additional data members used for scan-mode imagery:
//***
ossimDblGrid theLatGrid;
ossimDblGrid theLonGrid;
//***
// Adjustable Parameters:
//***
double theInTrackOffset; // meters
double theCrTrackOffset; // meters
double theRadialOffset; // meters
double theLineScale;
double theSkew;
double theOrientation; // degrees
//***
// Adjustable model parameters array indexes:
//***
enum ADJUSTABLE_PARAM_INDEXES
{
INTRACK_OFFSET,
CRTRACK_OFFSET,
RADIAL_OFFSET,
LINE_SCALE,
SKEW,
ORIENTATION,
NUM_ADJUSTABLE_PARAMS // not a parameter
};
};
#endif
|