OTB  9.1.1
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
otb::TransformFactories::Spot5InverseTransformFactory
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer Spot5InverseTransformFactory(const ImageMetadata &imd, TransformDirection direction)
Definition: otbTransformFactories.h:151
otb::TransformDirection
TransformDirection
Definition: otbTransform.h:30
otb::SarInverseTransform::New
static Pointer New()
otb::MDGeom::Spot5Geometry
@ Spot5Geometry
otb::TransformFactories::Spot5ForwardTransformFactory
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer Spot5ForwardTransformFactory(const ImageMetadata &imd, TransformDirection direction)
Definition: otbTransformFactories.h:132
otbSarInverseTransform.h
otb::RPCForwardTransform::New
static Pointer New()
otb::RPCInverseTransform::New
static Pointer New()
otb::TransformFactories::SARForwardTransformFactory
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer SARForwardTransformFactory(const ImageMetadata &imd, TransformDirection direction)
Definition: otbTransformFactories.h:94
otbSpot5InverseTransform.h
otbTransform.h
otb::Spot5ForwardTransform::New
static Pointer New()
otb
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.
Definition: otbJoinContainer.h:32
otbRPCInverseTransform.h
otb::MDGeom::RPC
@ RPC
TransformFactories
Contains the functions (factories) used to instantiate the transformation classes.
otb::SensorTransformBase::Pointer
itk::SmartPointer< Self > Pointer
Definition: otbSensorTransformBase.h:56
otbSarForwardTransform.h
otb::TransformFactories::RPCForwardTransformFactory
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer RPCForwardTransformFactory(const ImageMetadata &imd, TransformDirection direction)
Definition: otbTransformFactories.h:56
otb::TransformFactories::SARInverseTransformFactory
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer SARInverseTransformFactory(const ImageMetadata &imd, TransformDirection direction)
Definition: otbTransformFactories.h:113
otb::ImageMetadataBase::Has
bool Has(MDGeom key) const
otbCast.h
otbSensorTransformBase.h
otbSpot5ForwardTransform.h
otb::SarForwardTransform::New
static Pointer New()
otb::Spot5InverseTransform::New
static Pointer New()
otbRPCForwardTransform.h
otb::ImageMetadata
Generic class containing image metadata used in OTB.
Definition: otbImageMetadata.h:272
otb::TransformFactories::RPCInverseTransformFactory
otb::SensorTransformBase< double, NInputDimensions, NOutputDimensions >::Pointer RPCInverseTransformFactory(const ImageMetadata &imd, TransformDirection direction)
Definition: otbTransformFactories.h:75
otbImageMetadata.h
otb::MDGeom::SAR
@ SAR