22 #ifndef otbVectorDataProperties_hxx
23 #define otbVectorDataProperties_hxx
31 template <
class TVectorData>
34 for (
unsigned int i = 0; i < VectorDataDimension; ++i)
36 if ((m_BoundingRegion.GetOrigin(i) != itk::NumericTraits<Type>::ZeroValue()) || (m_BoundingRegion.GetSize(i) != itk::NumericTraits<Type>::ZeroValue()))
44 template <
class TVectorData>
48 if (this->IsBoundingRegionNull())
50 m_BoundingRegion = region;
55 for (
unsigned int i = 0; i < VectorDataDimension; ++i)
57 index = std::min(m_BoundingRegion.GetOrigin(i), region.GetOrigin(i));
58 m_BoundingRegion.SetSize(i, std::max(m_BoundingRegion.GetOrigin(i) + m_BoundingRegion.GetSize(i), region.GetOrigin(i) + region.GetSize(i)) - index);
59 m_BoundingRegion.SetOrigin(i, index);
67 template <
class TVectorData>
74 index.Fill(itk::NumericTraits<Type>::ZeroValue());
75 size.Fill(itk::NumericTraits<Type>::ZeroValue());
76 m_BoundingRegion.SetIndex(index);
77 m_BoundingRegion.SetSize(size);
81 ProcessNode(m_VectorDataObject,m_VectorDataObject->GetRoot());
84 template <
class TVectorData>
91 for (
typename ChildrenListType::iterator it = children.begin(); it != children.end(); ++it)
96 switch (dataNode->GetNodeType())
110 ProcessNode(inputVdata,(*it));
117 for (
unsigned int i = 0; i < VectorDataDimension; ++i)
119 start[i] = dataNode->GetPoint()[i];
123 size.Fill(itk::NumericTraits<Type>::ZeroValue());
125 region.SetSize(size);
126 region.SetIndex(start);
127 this->AddRegion(region);
132 this->AddRegion(dataNode->GetLine()->GetBoundingRegion());
138 this->AddRegion(dataNode->GetPolygonExteriorRing()->GetBoundingRegion());
143 itkExceptionMacro(<<
"This type (FEATURE_MULTIPOINT) is not handle (yet), please request for it");
148 itkExceptionMacro(<<
"This type (FEATURE_MULTILINE) is not handle (yet), please request for it");
153 itkExceptionMacro(<<
"This type (FEATURE_MULTIPOLYGON) is not handle (yet), please request for it");
158 itkExceptionMacro(<<
"This type (FEATURE_COLLECTION) is not handle (yet), please request for it");
165 template <
class TVectorData>
168 Superclass::PrintSelf(os, indent);
169 os << indent <<
"Properties VectorData: " << m_VectorDataObject << std::endl;
170 os << indent <<
"Properties Bounding Region: " << m_BoundingRegion << std::endl;
VectorDataType::ChildrenListType ChildrenListType
void ComputeBoundingRegion()
RegionType::SizeType SizeType
void PrintSelf(std::ostream &os, itk::Indent indent) const override
void ProcessNode(VectorDataType *inputVdata, DataNodePointerType source)
void AddRegion(const RegionType ®ion)
PolygonType::RegionType RegionType
RegionType::IndexType IndexType
bool IsBoundingRegionNull()
TVectorData VectorDataType
DataNodeType::Pointer DataNodePointerType
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.