libpcidsk
|
00001 /****************************************************************************** 00002 * 00003 * Purpose: Interface representing access to a PCIDSK RPC Segment 00004 * 00005 ****************************************************************************** 00006 * Copyright (c) 2009 00007 * PCI Geomatics, 50 West Wilmot Street, Richmond Hill, Ont, Canada 00008 * 00009 * Permission is hereby granted, free of charge, to any person obtaining a 00010 * copy of this software and associated documentation files (the "Software"), 00011 * to deal in the Software without restriction, including without limitation 00012 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 00013 * and/or sell copies of the Software, and to permit persons to whom the 00014 * Software is furnished to do so, subject to the following conditions: 00015 * 00016 * The above copyright notice and this permission notice shall be included 00017 * in all copies or substantial portions of the Software. 00018 * 00019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 00020 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 00021 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 00022 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 00023 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 00024 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 00025 * DEALINGS IN THE SOFTWARE. 00026 ****************************************************************************/ 00027 #ifndef __INCLUDE_PCIDSK_PCIDSK_RPC_H 00028 #define __INCLUDE_PCIDSK_PCIDSK_RPC_H 00029 00030 #include <vector> 00031 #include <string> 00032 00033 namespace PCIDSK { 00034 class PCIDSKRPCSegment 00035 { 00036 public: 00037 00038 // Get the X and Y RPC coefficients 00039 virtual std::vector<double> GetXNumerator(void) const = 0; 00040 virtual std::vector<double> GetXDenominator(void) const = 0; 00041 virtual std::vector<double> GetYNumerator(void) const = 0; 00042 virtual std::vector<double> GetYDenominator(void) const = 0; 00043 00044 // Set the X and Y RPC Coefficients 00045 virtual void SetCoefficients(const std::vector<double>& xnum, 00046 const std::vector<double>& xdenom, const std::vector<double>& ynum, 00047 const std::vector<double>& ydenom) = 0; 00048 00049 // Get the RPC offset/scale Coefficients 00050 virtual void GetRPCTranslationCoeffs(double& xoffset, double& xscale, 00051 double& yoffset, double& yscale, double& zoffset, double& zscale, 00052 double& pixoffset, double& pixscale, double& lineoffset, double& linescale) const = 0; 00053 00054 // Set the RPC offset/scale Coefficients 00055 virtual void SetRPCTranslationCoeffs(const double xoffset, const double xscale, 00056 const double yoffset, const double yscale, 00057 const double zoffset, const double zscale, 00058 const double pixoffset, const double pixscale, 00059 const double lineoffset, const double linescale) = 0; 00060 00061 // Get the adjusted X values 00062 virtual std::vector<double> GetAdjXValues(void) const = 0; 00063 // Get the adjusted Y values 00064 virtual std::vector<double> GetAdjYValues(void) const = 0; 00065 00066 // Set the adjusted X/Y values 00067 virtual void SetAdjCoordValues(const std::vector<double>& xcoord, 00068 const std::vector<double>& ycoord) = 0; 00069 00070 // Get whether or not this is a user-generated RPC model 00071 virtual bool IsUserGenerated(void) const = 0; 00072 // Set whether or not this is a user-generated RPC model 00073 virtual void SetUserGenerated(bool usergen) = 0; 00074 00075 // Get whether the model has been adjusted 00076 virtual bool IsNominalModel(void) const = 0; 00077 // Set whether the model has been adjusted 00078 virtual void SetIsNominalModel(bool nominal) = 0; 00079 00080 // Get sensor name 00081 virtual std::string GetSensorName(void) const = 0; 00082 // Set sensor name 00083 virtual void SetSensorName(const std::string& name) = 0; 00084 00085 // Output projection information of RPC Model 00086 // Get the Geosys String 00087 virtual std::string GetGeosysString(void) const = 0; 00088 // Set the Geosys string 00089 virtual void SetGeosysString(const std::string& geosys) = 0; 00090 00091 // Get the number of lines 00092 virtual unsigned int GetLines(void) const = 0; 00093 00094 // Get the number of pixels 00095 virtual unsigned int GetPixels(void) const = 0; 00096 00097 // Set the number of lines/pixels 00098 virtual void SetRasterSize(const unsigned int lines, const unsigned int pixels) = 0; 00099 00100 // TODO: Setting/getting detailed projection params (just GCTP params?) 00101 00102 // Virtual destructor 00103 virtual ~PCIDSKRPCSegment() {} 00104 }; 00105 } 00106 00107 #endif // __INCLUDE_PCIDSK_PCIDSK_RPC_H