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
|