21 #ifndef otbConcatenateVectorDataFilter_hxx
22 #define otbConcatenateVectorDataFilter_hxx
30 template <
class TVectorData>
33 this->SetNumberOfRequiredInputs(2);
34 this->SetNumberOfRequiredOutputs(1);
36 m_Folder = DataNodeType::New();
39 m_Document = DataNodeType::New();
43 template <
class TVectorData>
46 this->Superclass::PrintSelf(os, indent);
49 template <
class TVectorData>
52 for (
unsigned idx = 0; idx < this->GetNumberOfIndexedInputs(); ++idx)
54 if (!this->GetInput(idx))
56 this->Superclass::SetNthInput(idx,
const_cast<VectorDataType*
>(vectorData));
60 this->Superclass::SetNthInput(this->GetNumberOfIndexedInputs(),
const_cast<VectorDataType*
>(vectorData));
63 template <
class TVectorData>
66 if (this->GetNumberOfInputs() < idx)
70 return static_cast<const VectorDataType*
>(this->Superclass::GetInput(idx));
73 template <
class TVectorData>
86 auto outputPtr = this->GetOutput();
87 auto inputPtr = this->GetInput(0);
89 outputPtr->Graft(inputPtr);
90 typename DataNodeType::Pointer outputDocument = outputPtr->GetChildrenList(outputPtr->GetRoot()).at(0);
97 for (
unsigned int idx = 1; idx < this->GetNumberOfInputs(); ++idx)
100 ProcessNode(this->GetInput(idx),this->GetInput(idx)->GetRoot(),outputPtr, outputDocument);
105 template <
class TVectorData>
108 if (source ==
nullptr)
116 typename ChildrenListType::iterator it;
117 for (it = children.begin(); it != children.end(); ++it)
122 switch (dataNode->GetNodeType())
131 ProcessNode(inputVd,dataNode,outputVd,outputDocument);
136 ProcessNode(inputVd,dataNode,outputVd,outputDocument);
141 outputVd->Add(dataNode, outputDocument);
146 outputVd->Add(dataNode, outputDocument);
151 outputVd->Add(dataNode, outputDocument);
156 ProcessNode(inputVd,dataNode,outputVd,outputDocument);
161 ProcessNode(inputVd,dataNode,outputVd,outputDocument);
166 ProcessNode(inputVd,dataNode,outputVd,outputDocument);
171 ProcessNode(inputVd,dataNode,outputVd,outputDocument);
TVectorData VectorDataType
VectorDataType::DataNodeType DataNodeType
void GenerateData(void) override
void PrintSelf(std::ostream &os, itk::Indent indent) const override
void AddInput(const VectorDataType *)
const VectorDataType * GetInput(unsigned int idx) const
void ProcessNode(const VectorDataType *inputVd, DataNodeType *source, VectorDataType *outputVd, DataNodeType *outputDocument)
ConcatenateVectorDataFilter()
VectorDataType::ChildrenListType ChildrenListType
DataNodeType::Pointer DataNodePointerType
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.