/usr/include/OTB-5.8/otbGenericRSTransform.h is in libotb-dev 5.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef otbGenericRSTransform_h
#define otbGenericRSTransform_h
#include "otbCompositeTransform.h"
namespace otb
{
namespace Projection
{
enum TransformAccuracy {UNKNOWN, ESTIMATE, PRECISE};
}
/** \class GenericRSTransform
* \brief This is the class to handle generic remote sensing transform
*
* The transformation will transform the coordinate from any map projection or sensor
* model to any map projection or sensor model.
*
* If one of the projection (output or input) is a map projection, it can be
* specified using the WKT or the EPSG code.
*
* \ingroup Projection
*
*
* \ingroup OTBTransform
**/
template <class TScalarType = double,
unsigned int NInputDimensions = 2,
unsigned int NOutputDimensions = 2>
class ITK_EXPORT GenericRSTransform : public otb::Transform<TScalarType, // Data type for scalars
NInputDimensions, // Number of dimensions in the input space
NOutputDimensions> // Number of dimensions in the output space
{
public:
/**\name Standard ITK typedefs */
//@{
typedef otb::Transform<TScalarType,
NInputDimensions,
NOutputDimensions> Superclass;
typedef GenericRSTransform Self;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
//@}
typedef typename Superclass::ScalarType ScalarType;
typedef typename Superclass::JacobianType JacobianType;
typedef itk::Point<ScalarType, NInputDimensions> InputPointType;
typedef itk::Point<ScalarType, NOutputDimensions> OutputPointType;
typedef itk::Vector<double, 2> SpacingType;
typedef itk::Point<double, 2> OriginType;
typedef itk::Transform<double, NInputDimensions, NOutputDimensions> GenericTransformType;
typedef typename GenericTransformType::Pointer GenericTransformPointerType;
typedef otb::CompositeTransform<GenericTransformType, GenericTransformType> TransformType;
typedef typename TransformType::Pointer TransformPointerType;
typedef typename Superclass::InverseTransformBasePointer InverseTransformBasePointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Run-time type information (and related methods). */
itkTypeMacro(GenericRSTransform, Transform);
typedef TransformDirection::TransformationDirection DirectionOfMappingEnumType;
itkStaticConstMacro(InputSpaceDimension, unsigned int, NInputDimensions);
itkStaticConstMacro(OutputSpaceDimension, unsigned int, NOutputDimensions);
itkStaticConstMacro(SpaceDimension, unsigned int, NInputDimensions);
itkStaticConstMacro(ParametersDimension, unsigned int, NInputDimensions * (NInputDimensions + 1));
/** Set/Get for input and output projections. */
itkSetStringMacro(InputProjectionRef);
itkGetStringMacro(InputProjectionRef);
itkSetStringMacro(OutputProjectionRef);
itkGetStringMacro(OutputProjectionRef);
/** Set/Get Dictionary*/
const itk::MetaDataDictionary& GetInputDictionary() const
{
return m_InputDictionary;
}
void SetInputDictionary(const itk::MetaDataDictionary& dictionary)
{
m_InputDictionary = dictionary;
this->Modified();
}
const itk::MetaDataDictionary& GetOutputDictionary() const
{
return m_OutputDictionary;
}
void SetOutputDictionary(const itk::MetaDataDictionary& dictionary)
{
m_OutputDictionary = dictionary;
this->Modified();
}
/** Set/Get Keywordlist*/
itkGetMacro(InputKeywordList, ImageKeywordlist);
void SetInputKeywordList(const ImageKeywordlist& kwl)
{
this->m_InputKeywordList = kwl;
this->Modified();
}
itkGetMacro(OutputKeywordList, ImageKeywordlist);
void SetOutputKeywordList(const ImageKeywordlist& kwl)
{
this->m_OutputKeywordList = kwl;
this->Modified();
}
/** Set the origin of the vector data.
* \sa GetOrigin() */
itkSetMacro(InputOrigin, OriginType);
itkGetConstReferenceMacro(InputOrigin, OriginType);
/** Set the spacing (size of a pixel) of the vector data.
* \sa GetSpacing() */
itkSetMacro(InputSpacing, SpacingType);
itkGetConstReferenceMacro(InputSpacing, SpacingType);
/** Set the origin of the vector data.
* \sa GetOrigin() */
itkSetMacro(OutputOrigin, OriginType);
itkGetConstReferenceMacro(OutputOrigin, OriginType);
/** Set the spacing (size of a pixel) of the vector data.
* \sa GetSpacing() */
itkSetMacro(OutputSpacing, SpacingType);
itkGetConstReferenceMacro(OutputSpacing, SpacingType);
/** Check if the transform is up to date */
virtual bool IsUpToDate()
{
return m_TransformUpToDate;
}
/** Get Transform accuracy */
itkGetMacro(TransformAccuracy, Projection::TransformAccuracy);
/** Methods prototypes */
virtual const TransformType * GetTransform() const;
OutputPointType TransformPoint(const InputPointType& point) const ITK_OVERRIDE;
virtual void InstantiateTransform();
/** THIS METHOD IS DEPRECATED AND SHOULD NOT BE USED. */
void InstanciateTransform()
{
otbWarningMacro(<< "InstanciateTransform has been deprecated. Please use InstantiateTransform instead");
this->InstantiateTransform();
}
// Get inverse methods
bool GetInverse(Self * inverseTransform) const;
InverseTransformBasePointer GetInverseTransform() const ITK_OVERRIDE;
// Dummy set parameter method
void SetParameters(const typename Superclass::ParametersType &) ITK_OVERRIDE {}
// Dummy ComputeJacobianWithRespectToParameters method
void ComputeJacobianWithRespectToParameters(const InputPointType &, JacobianType& ) const ITK_OVERRIDE {}
protected:
GenericRSTransform();
~GenericRSTransform() ITK_OVERRIDE {}
void Modified() const ITK_OVERRIDE
{
this->Superclass::Modified();
m_TransformUpToDate = false;
}
void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
private:
GenericRSTransform(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
ImageKeywordlist m_InputKeywordList;
ImageKeywordlist m_OutputKeywordList;
itk::MetaDataDictionary m_InputDictionary;
itk::MetaDataDictionary m_OutputDictionary;
std::string m_InputProjectionRef;
std::string m_OutputProjectionRef;
SpacingType m_InputSpacing;
OriginType m_InputOrigin;
SpacingType m_OutputSpacing;
OriginType m_OutputOrigin;
TransformPointerType m_Transform;
GenericTransformPointerType m_InputTransform;
GenericTransformPointerType m_OutputTransform;
mutable bool m_TransformUpToDate;
Projection::TransformAccuracy m_TransformAccuracy;
};
} // namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbGenericRSTransform.txx"
#endif
#endif
|