OTB  10.0.0
Orfeo Toolbox
otbTransformFactories.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2024 Centre National d'Etudes Spatiales (CNES)
3  *
4  * This file is part of Orfeo Toolbox
5  *
6  * https://www.orfeo-toolbox.org/
7  *
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
20 
21 #ifndef otbTransformFactory_h
22 #define otbTransformFactory_h
23 
24 #include "otbCast.h"
25 #include "otbImageMetadata.h"
26 #include "otbSensorTransformBase.h"
27 #include "otbTransform.h"
28 
29 #include "otbRPCForwardTransform.h"
30 #include "otbRPCInverseTransform.h"
31 #include "otbSarForwardTransform.h"
32 #include "otbSarInverseTransform.h"
35 
36 namespace otb {
37 
49 namespace TransformFactories {
50 
54 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
57 {
58  if(imd.Has(MDGeom::RPC))
59  {
61  if(transform->getDirection() != direction)
62  return nullptr;
63  transform->SetMetadata(imd);
64  return DynamicCast<typename otb::SensorTransformBase<double, NInputDimensions, NOutputDimensions>>(transform);
65  }
66  return nullptr;
67 }
69 
73 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
76 {
77  if(imd.Has(MDGeom::RPC))
78  {
80  if(transform->getDirection() != direction)
81  return nullptr;
82  transform->SetMetadata(imd);
83  return DynamicCast<typename otb::SensorTransformBase<double, NInputDimensions, NOutputDimensions>>(transform);
84  }
85  return nullptr;
86 }
88 
92 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
95 {
96  if(imd.Has(MDGeom::SAR))
97  {
99  if(transform->getDirection() != direction)
100  return nullptr;
101  transform->SetMetadata(imd);
102  return DynamicCast<typename otb::SensorTransformBase<double, NInputDimensions, NOutputDimensions>>(transform);
103  }
104  return nullptr;
105 }
107 
111 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
114 {
115  if(imd.Has(MDGeom::SAR))
116  {
118  if(transform->getDirection() != direction)
119  return nullptr;
120  transform->SetMetadata(imd);
121  return DynamicCast<typename otb::SensorTransformBase<double, NInputDimensions, NOutputDimensions>>(transform);
122  }
123  return nullptr;
124 }
126 
130 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
133 {
134  if(imd.Has(MDGeom::Spot5Geometry))
135  {
137  if(transform->getDirection() != direction)
138  return nullptr;
139  transform->SetMetadata(imd);
140  return DynamicCast<typename otb::SensorTransformBase<double, NInputDimensions, NOutputDimensions>>(transform);
141  }
142  return nullptr;
143 }
145 
149 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
152 {
153  if(imd.Has(MDGeom::Spot5Geometry))
154  {
156  if(transform->getDirection() != direction)
157  return nullptr;
158  transform->SetMetadata(imd);
159  return DynamicCast<typename otb::SensorTransformBase<double, NInputDimensions, NOutputDimensions>>(transform);
160  }
161  return nullptr;
162 }
164 
165 }
166 }
167 
168 #endif
bool Has(MDGeom key) const
Generic class containing image metadata used in OTB.
static Pointer New()
static Pointer New()
static Pointer New()
static Pointer New()
itk::SmartPointer< Self > Pointer
Contains the functions (factories) used to instantiate the transformation classes.
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer SARForwardTransformFactory(const ImageMetadata &imd, TransformDirection direction)
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer Spot5InverseTransformFactory(const ImageMetadata &imd, TransformDirection direction)
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer RPCForwardTransformFactory(const ImageMetadata &imd, TransformDirection direction)
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer Spot5ForwardTransformFactory(const ImageMetadata &imd, TransformDirection direction)
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer RPCInverseTransformFactory(const ImageMetadata &imd, TransformDirection direction)
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer SARInverseTransformFactory(const ImageMetadata &imd, TransformDirection direction)
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
TransformDirection
Definition: otbTransform.h:30