21 #ifndef otbDEMToImageGenerator_hxx
22 #define otbDEMToImageGenerator_hxx
26 #include "itkProgressReporter.h"
27 #include "vcl_legacy_aliases.h"
32 template <
class TDEMImage>
35 this->DynamicMultiThreadingOn();
36 m_OutputSpacing[0] = 0.0001;
37 m_OutputSpacing[1] = -0.0001;
40 m_OutputOrigin[0] = 0;
41 m_OutputOrigin[1] = 0;
42 m_DefaultUnknownValue = itk::NumericTraits<PixelType>::ZeroValue();
43 m_AboveEllipsoid =
false;
45 m_Transform = GenericRSTransformType::New();
49 template <
class TDEMImage>
60 largestPossibleRegion.SetSize(m_OutputSize);
61 largestPossibleRegion.SetIndex(start);
63 output->SetLargestPossibleRegion(largestPossibleRegion);
64 output->SetSignedSpacing(m_OutputSpacing);
65 output->SetOrigin(m_OutputOrigin);
69 if (m_Transform->GetInputImageMetadata() !=
nullptr)
70 output->m_Imd.Merge(*m_Transform->GetInputImageMetadata());
74 template <
class TDEMImage>
77 m_Transform->InstantiateTransform();
80 template <
class TDEMImage>
83 InstantiateTransform();
87 DEMImage->SetBufferedRegion(DEMImage->GetRequestedRegion());
89 DEMImage->FillBuffer(0);
93 template <
class TDEMImage>
107 for (outIt.GoToBegin(); !outIt.IsAtEnd(); ++outIt)
109 currentindex = outIt.GetIndex();
110 DEMImage->TransformIndexToPhysicalPoint(currentindex, phyPoint);
113 if (m_Transform.IsNotNull())
115 geoPoint = m_Transform->TransformPoint(phyPoint);
116 if (m_AboveEllipsoid)
129 if (m_AboveEllipsoid)
146 if (!vnl_math_isnan(height))
149 DEMImage->SetPixel(currentindex,
static_cast<PixelType>(height));
154 DEMImage->SetPixel(currentindex, m_DefaultUnknownValue);
159 template <
class TDEMImage>
162 Superclass::PrintSelf(os, indent);
164 os << indent <<
"Output Spacing:" << m_OutputSpacing[0] <<
"," << m_OutputSpacing[1] << std::endl;
165 os << indent <<
"Output Origin:" << m_OutputOrigin[0] <<
"," << m_OutputOrigin[1] << std::endl;
166 os << indent <<
"Output Size:" << m_OutputSize[0] <<
"," << m_OutputSize[1] << std::endl;
static DEMHandler & GetInstance()
double GetHeightAboveMSL(double lon, double lat) const
double GetHeightAboveEllipsoid(double lon, double lat) const
Superclass::OutputImageRegionType OutputImageRegionType
void DynamicThreadedGenerateData(const OutputImageRegionType &outputRegionForThread) override
void PrintSelf(std::ostream &os, itk::Indent indent) const override
OutputImageType::IndexType IndexType
DEMImageType::PixelType PixelType
void GenerateOutputInformation() override
OutputImageType::PointType PointType
void BeforeThreadedGenerateData() override
void InstantiateTransform()
itk::ImageRegionIteratorWithIndex< DEMImageType > ImageIteratorType
DEMImageType::Pointer DEMImagePointerType
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.