libpcidsk
pcidsk_rpc.h
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

Generated for GDAL by doxygen 1.7.5.