Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
planarctpgeoreference.h
1 #ifndef PLANARCTPGEOREFERENCE_H
2 #define PLANARCTPGEOREFERENCE_H
3 
4 namespace Ilwis{
5 
6 
7 
8 class KERNELSHARED_EXPORT PlanarCTPGeoReference : public CTPGeoReference
9 {
10 public:
11  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
12 
13  enum Transformation { tCONFORM, tAFFINE, tSECONDORDER, tFULLSECONDORDER,
14  tTHIRDORDER, tPROJECTIVE, tUNKNOWN } ;
16  PlanarCTPGeoReference(const Resource& resource);
17  virtual Coordinate pixel2Coord(const Pixeld &pix) const;
18  virtual Pixeld coord2Pixel(const Coordinate& crd) const;
19  bool isValid() const;
20  virtual double pixelSize() const;
21  virtual bool compute();
22  void transformation(Transformation tr);
23  static QString typeName();
24 
25  static GeoRefImplementation *create();
26 private:
27  Eigen::Matrix2d _jacobian;
28  double _sigma;
29  Transformation _transformation;
30  std::vector<Coefficient> _colrowCoef;
31  std::vector<Coefficient> _xyCoef;
32  Coefficient _avgCrd;
33  Coefficient _avgPix;
34 
35  Coordinate crdInverseOfAffine(const Pixeld &pix) const;
36  Coordinate crdInverseOfProjective(const Pixeld &pix) const;
37  Coordinate crdInverseOfHigherOrder(const Pixeld &pix);
38  void makeJacobianMatrix(const Coordinate &crdIn, Eigen::Matrix2d &rmJ);
39  quint32 minnr() const;
40 
41 
42 };
43 }
44 
45 #endif // PLANARCTPGEOREFERENCE_H