File: otbProSailParameters.h

package info (click to toggle)
otb 7.2.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 1,005,476 kB
  • sloc: cpp: 270,143; xml: 128,722; ansic: 4,367; sh: 1,768; python: 1,084; perl: 92; makefile: 72
file content (142 lines) | stat: -rw-r--r-- 3,677 bytes parent folder | download
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
/*
 * Copyright (C) 2005-2020 Centre National d'Etudes Spatiales (CNES)
 *
 * This file is part of Orfeo Toolbox
 *
 *     https://www.orfeo-toolbox.org/
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef otbProSailParameters_h
#define otbProSailParameters_h


#include "itkDataObject.h"
#include "itkMacro.h"
#include "itkObjectFactory.h"


namespace otb
{
/** \class ProSailParameters
   * \brief this class implements the ProSailParameters lib.
   *
   * see http://teledetection.ipgp.jussieu.fr/prosail/
   * \sa itk::DataObject
 *
 * \ingroup OTBSimulation
 */

class ITK_EXPORT ProSailParameters : public itk::DataObject
{
public:
  /** Standard class typedefs */
  typedef ProSailParameters             Self;
  typedef itk::DataObject               Superclass;
  typedef itk::SmartPointer<Self>       Pointer;
  typedef itk::SmartPointer<const Self> ConstPointer;

  /** Standard macros */
  itkTypeMacro(ProSailParameters, DataObject);
  itkNewMacro(Self);


  /** Set/Get Chlorophyll content (ug/cm2)*/
  itkSetMacro(Cab, double);
  itkGetMacro(Cab, double);

  /** Set/Get Carotenoid content (ug/cm2)*/
  itkSetMacro(Car, double);
  itkGetMacro(Car, double);

  /** Set/Get Brown pigment content (arbitrary unit)*/
  itkSetMacro(CBrown, double);
  itkGetMacro(CBrown, double);

  /** Set/Get EWT (cm)*/
  itkSetMacro(Cw, double);
  itkGetMacro(Cw, double);

  /** Set/Get LMA (g/cm2)*/
  itkSetMacro(Cm, double);
  itkGetMacro(Cm, double);

  /** Set/Get structure coef*/
  itkSetMacro(N, double);
  itkGetMacro(N, double);

  /** Set/Get leaf area index */
  itkSetMacro(LAI, double);
  itkGetMacro(LAI, double);

  /** Set/Get average leaf angle (deg)*/
  itkSetMacro(Angl, double);
  itkGetMacro(Angl, double);

  /** Set/Get soil coefficient*/
  itkSetMacro(PSoil, double);
  itkGetMacro(PSoil, double);

  /** Set/Get diffuse/direct radiation*/
  itkSetMacro(Skyl, double);
  itkGetMacro(Skyl, double);

  /** Set/Get hot spot */
  itkSetMacro(HSpot, double);
  itkGetMacro(HSpot, double);

  /** Set/Get solar zenith angle (deg) */
  itkSetMacro(TTS, double);
  itkGetMacro(TTS, double);

  /** Set/Get observer zenith angle (deg) */
  itkSetMacro(TTO, double);
  itkGetMacro(TTO, double);

  /** Set/Get azimuth(deg) */
  itkSetMacro(PSI, double);
  itkGetMacro(PSI, double);


protected:
  /** Constructor */
  ProSailParameters();
  /** Destructor */
  virtual ~ProSailParameters(){};
  /** PrintSelf method */
  void PrintSelf(std::ostream& os, itk::Indent indent) const override;


private:
  ProSailParameters(const Self&) = delete;
  void operator=(const Self&) = delete;

  double m_Cab;    // Chlorophyll content
  double m_Car;    // Carotenoid content
  double m_CBrown; // Brown pigment content
  double m_Cw;     // EWT
  double m_Cm;     // LMA
  double m_N;      // structure coef
  double m_LAI;    // leaf area index
  double m_Angl;   // average leaf angle
  double m_PSoil;  // soil coefficient
  double m_Skyl;   // diffuse/direct radiation
  double m_HSpot;  // hot spot
  double m_TTS;    // solar zenith angle
  double m_TTO;    // observer zenith angle
  double m_PSI;    // azimuth
};
} // end namespace otb

#endif