USGSCSM Astro Linescan Sensor Model Class¶
-
class UsgsAstroLsSensorModel : public csm::RasterGM, public virtual csm::SettableEllipsoid¶
- #include <UsgsAstroLsSensorModel.h>
Copyright © 2017-2022 BAE Systems Information and Electronic Systems Integration Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Public Functions
-
void setState(const std::string &state)¶
-
virtual void replaceModelState(const std::string &stateString)¶
-
std::string constructStateFromIsd(const std::string imageSupportData, csm::WarningList *list)¶
-
void reset()¶
-
UsgsAstroLsSensorModel()¶
-
~UsgsAstroLsSensorModel()¶
-
virtual std::string getModelState() const¶
-
void set(const std::string &state_data)¶
-
virtual csm::ImageCoord groundToImage(const csm::EcefCoord &groundPt, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::ImageCoordCovar groundToImage(const csm::EcefCoordCovar &groundPt, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::EcefCoord imageToGround(const csm::ImageCoord &imagePt, double height, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::EcefCoordCovar imageToGround(const csm::ImageCoordCovar &imagePt, double height, double heightVariance, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::EcefLocus imageToProximateImagingLocus(const csm::ImageCoord &imagePt, const csm::EcefCoord &groundPt, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::EcefLocus imageToRemoteImagingLocus(const csm::ImageCoord &imagePt, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::ImageCoord getImageStart() const¶
-
virtual csm::ImageVector getImageSize() const¶
-
virtual std::pair<csm::ImageCoord, csm::ImageCoord> getValidImageRange() const¶
-
virtual std::pair<double, double> getValidHeightRange() const¶
-
virtual csm::EcefVector getIlluminationDirection(const csm::EcefCoord &groundPt) const¶
-
virtual double getImageTime(const csm::ImageCoord &imagePt) const¶
-
virtual csm::EcefCoord getSensorPosition(const csm::ImageCoord &imagePt) const¶
-
virtual csm::EcefCoord getSensorPosition(double time) const¶
-
virtual csm::EcefVector getSensorVelocity(const csm::ImageCoord &imagePt) const¶
-
virtual csm::EcefVector getSensorVelocity(double time) const¶
-
virtual csm::RasterGM::SensorPartials computeSensorPartials(int index, const csm::EcefCoord &groundPt, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual csm::RasterGM::SensorPartials computeSensorPartials(int index, const csm::ImageCoord &imagePt, const csm::EcefCoord &groundPt, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual std::vector<csm::RasterGM::SensorPartials> computeAllSensorPartials(const csm::EcefCoord &groundPt, csm::param::Set pSet = csm::param::VALID, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual std::vector<csm::RasterGM::SensorPartials> computeAllSensorPartials(const csm::ImageCoord &imagePt, const csm::EcefCoord &groundPt, csm::param::Set pSet = csm::param::VALID, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
virtual std::vector<double> computeGroundPartials(const csm::EcefCoord &groundPt) const¶
-
virtual const csm::CorrelationModel &getCorrelationModel() const¶
-
virtual std::vector<double> getUnmodeledCrossCovariance(const csm::ImageCoord &pt1, const csm::ImageCoord &pt2) const¶
-
virtual csm::EcefCoord getReferencePoint() const¶
-
virtual void setReferencePoint(const csm::EcefCoord &groundPt)¶
-
virtual int getNumParameters() const¶
-
virtual std::string getParameterName(int index) const¶
-
virtual std::string getParameterUnits(int index) const¶
-
virtual csm::SharingCriteria getParameterSharingCriteria(int index) const¶
-
virtual double getParameterValue(int index) const¶
-
virtual void setParameterValue(int index, double value)¶
-
virtual csm::param::Type getParameterType(int index) const¶
-
virtual void setParameterType(int index, csm::param::Type pType)¶
-
virtual std::shared_ptr<spdlog::logger> getLogger()¶
-
virtual void setLogger(std::string logName)¶
-
virtual double getParameterCovariance(int index1, int index2) const¶
-
virtual void setParameterCovariance(int index1, int index2, double covariance)¶
-
virtual int getNumGeometricCorrectionSwitches() const¶
-
virtual std::string getGeometricCorrectionName(int index) const¶
-
virtual void setGeometricCorrectionSwitch(int index, bool value, csm::param::Type pType)¶
-
virtual bool getGeometricCorrectionSwitch(int index) const¶
-
virtual std::vector<double> getCrossCovarianceMatrix(const csm::GeometricModel &comparisonModel, csm::param::Set pSet = csm::param::VALID, const csm::GeometricModel::GeometricModelList &otherModels = csm::GeometricModel::GeometricModelList()) const¶
-
virtual csm::Version getVersion() const¶
-
virtual std::string getModelName() const¶
-
virtual std::string getPedigree() const¶
-
virtual std::string getImageIdentifier() const¶
-
virtual void setImageIdentifier(const std::string &imageId, csm::WarningList *warnings = NULL)¶
-
virtual std::string getSensorIdentifier() const¶
-
virtual std::string getPlatformIdentifier() const¶
-
virtual std::string getCollectionIdentifier() const¶
-
virtual std::string getTrajectoryIdentifier() const¶
-
virtual std::string getSensorType() const¶
-
virtual std::string getSensorMode() const¶
-
virtual std::string getReferenceDateAndTime() const¶
-
virtual csm::Ellipsoid getEllipsoid() const¶
-
virtual void setEllipsoid(const csm::Ellipsoid &ellipsoid)¶
-
void calculateAttitudeCorrection(const double &time, const std::vector<double> &adj, double attCorr[9]) const¶
-
virtual csm::EcefVector getSunPosition(const double imageTime) const¶
Public Members
-
std::string m_imageIdentifier¶
-
std::string m_sensorName¶
-
int m_nLines¶
-
int m_nSamples¶
-
int m_platformFlag¶
-
std::vector<double> m_intTimeLines¶
-
std::vector<double> m_intTimeStartTimes¶
-
std::vector<double> m_intTimes¶
-
double m_startingEphemerisTime¶
-
double m_centerEphemerisTime¶
-
double m_detectorSampleSumming¶
-
double m_detectorLineSumming¶
-
double m_startingDetectorSample¶
-
double m_startingDetectorLine¶
-
int m_ikCode¶
-
double m_focalLength¶
-
double m_zDirection¶
-
DistortionType m_distortionType¶
-
std::vector<double> m_opticalDistCoeffs¶
-
double m_iTransS[3]¶
-
double m_iTransL[3]¶
-
double m_detectorSampleOrigin¶
-
double m_detectorLineOrigin¶
-
double m_mountingMatrix[9]¶
-
double m_majorAxis¶
-
double m_minorAxis¶
-
std::string m_referenceDateAndTime¶
-
std::string m_platformIdentifier¶
-
std::string m_sensorIdentifier¶
-
std::string m_trajectoryIdentifier¶
-
std::string m_collectionIdentifier¶
-
double m_refElevation¶
-
double m_minElevation¶
-
double m_maxElevation¶
-
double m_dtEphem¶
-
double m_t0Ephem¶
-
double m_dtQuat¶
-
double m_t0Quat¶
-
int m_numPositions¶
-
int m_numQuaternions¶
-
std::vector<double> m_positions¶
-
std::vector<double> m_velocities¶
-
std::vector<double> m_quaternions¶
-
std::vector<double> m_currentParameterValue¶
-
std::vector<csm::param::Type> m_parameterType¶
-
csm::EcefCoord m_referencePointXyz¶
-
double m_gsd¶
-
double m_flyingHeight¶
-
double m_halfSwath¶
-
double m_halfTime¶
-
std::vector<double> m_covariance¶
-
int m_imageFlipFlag¶
-
std::vector<double> m_sunPosition¶
-
std::vector<double> m_sunVelocity¶
-
std::shared_ptr<spdlog::logger> m_logger = spdlog::get("usgscsm_logger")¶
Public Static Functions
-
static std::string getModelNameFromModelState(const std::string &model_state)¶
-
static void applyTransformToState(ale::Rotation const &r, ale::Vec3d const &t, std::string &stateString)¶
Public Static Attributes
-
static const std::string _SENSOR_MODEL_NAME = "USGS_ASTRO_LINE_SCANNER_SENSOR_MODEL"¶
-
static const std::string _STATE_KEYWORD[]¶
-
static const int NUM_PARAM_TYPES = 4¶
-
static const std::string PARAM_STRING_ALL[] = {"NONE", "FICTITIOUS", "REAL", "FIXED"}¶
-
static const csm::param::Type PARAM_CHAR_ALL[] = {csm::param::NONE, csm::param::FICTITIOUS, csm::param::REAL, csm::param::FIXED}¶
-
static const int NUM_PARAMETERS = 16¶
-
static const std::string PARAMETER_NAME[] = {"IT Pos. Bias ", "CT Pos. Bias ", "Rad Pos. Bias ", "IT Vel. Bias ", "CT Vel. Bias ", "Rad Vel. Bias ", "Omega Bias ", "Phi Bias ", "Kappa Bias ", "Omega Rate ", "Phi Rate ", "Kappa Rate ", "Omega Accl ", "Phi Accl ", "Kappa Accl ", "Focal Bias "}¶
Private Functions
-
void determineSensorCovarianceInImageSpace(csm::EcefCoord &gp, double sensor_cov[4]) const¶
-
void updateState()¶
-
double getValue(int index, const std::vector<double> &adjustments) const¶
-
virtual csm::ImageCoord groundToImage(const csm::EcefCoord &groundPt, const std::vector<double> &adjustments, double desiredPrecision = 0.001, double *achievedPrecision = NULL, csm::WarningList *warnings = NULL) const¶
-
void reconstructSensorDistortion(double &focalX, double &focalY, const double &desiredPrecision) const¶
-
void getQuaternions(const double &time, double quaternion[4]) const¶
-
void losToEcf(const double &line, const double &sample, const std::vector<double> &adj, double &xc, double &yc, double &zc, double &vx, double &vy, double &vz, double &bodyFixedX, double &bodyFixedY, double &bodyFixedZ) const¶
-
void lightAberrationCorr(const double &vx, const double &vy, const double &vz, const double &xl, const double &yl, const double &zl, double &dxl, double &dyl, double &dzl) const¶
-
void losEllipsoidIntersect(const double &height, const double &xc, const double &yc, const double &zc, const double &xl, const double &yl, const double &zl, double &x, double &y, double &z, double &achieved_precision, const double &desired_precision, csm::WarningList *warnings = NULL) const¶
-
void getAdjSensorPosVel(const double &time, const std::vector<double> &adj, double &xc, double &yc, double &zc, double &vx, double &vy, double &vz, bool calc_vel = true) const¶
-
std::vector<double> computeDetectorView(const double &time, const csm::EcefCoord &groundPoint, const std::vector<double> &adj) const¶
-
void computeProjectiveApproximation(const csm::EcefCoord &gp, csm::ImageCoord &ip) const¶
-
void createProjectiveApproximation()¶
-
double calcDetectorLineErr(double t, csm::ImageCoord const &approxPt, const csm::EcefCoord &groundPt, const std::vector<double> &adj) const¶