/usr/include/OTB-5.8/otbVectorData.h is in libotb-dev 5.8.0+dfsg-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | /*=========================================================================
Program: ORFEO Toolbox
Language: C++
Date: $Date$
Version: $Revision$
Copyright (c) Centre National d'Etudes Spatiales. All rights reserved.
See OTBCopyright.txt for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#ifndef otbVectorData_h
#define otbVectorData_h
#include "itkTreeContainer.h"
#include "itkDataObject.h"
#include "otbDataNode.h"
namespace otb
{
/** \class VectorData
* \brief This class represents a hierarchy of vector data.
*
* This class contains an itk::TreeContainer templated with otb::DataNode.
* It represents a tree structure of vector data. These data can be read from
* shapefiles or kml files for instance.
*
* The internal tree can be walked with itk::TreeIteratorBase subclasses.
*
* The three templates indicate
* - the precision of the points coordinates (by default: double)
* - the number of dimensions of the space (by default: 2)
* - the precision of the value associated with objects such as line or
* polygons (by default: double)
*
* The elements in the VectorData have their coordinates in the projection
* specified by the WKT string. This class also offer the possibility to store
* the coordinates directly into an image coordinate system, using the origin and
* spacing in a similar way as the corresponding image.
*
* \sa DataNode
* \sa VectorDataFileReader
* \sa VectorDataFileWriter
*
*
* \ingroup OTBVectorDataBase
*/
template <class TPrecision = double, unsigned int VDimension = 2, class TValuePrecision = double>
class VectorData
: public itk::DataObject
{
public:
/** Standard class typedefs */
typedef VectorData Self;
typedef itk::DataObject Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Standard macros */
itkNewMacro(Self);
itkTypeMacro(VectorData, DataObject);
itkStaticConstMacro(Dimension, unsigned int, VDimension);
/** Template parameters typedef */
typedef TPrecision PrecisionType;
typedef TValuePrecision ValuePrecisionType;
//define VDimension Dimension;
typedef otb::DataNode<TPrecision, VDimension, TValuePrecision> DataNodeType;
typedef typename DataNodeType::Pointer DataNodePointerType;
typedef itk::TreeContainer<DataNodePointerType> DataTreeType;
typedef typename DataTreeType::Pointer DataTreePointerType;
typedef typename DataNodeType::PointType PointType;
typedef typename DataNodeType::LineType LineType;
typedef typename DataNodeType::PolygonType PolygonType;
typedef itk::Vector<double, 2> SpacingType;
typedef itk::Point<double, 2> OriginType;
itkGetObjectMacro(DataTree, DataTreeType);
itkGetConstObjectMacro(DataTree, DataTreeType);
virtual void SetProjectionRef(const std::string& projectionRef);
virtual std::string GetProjectionRef() const;
/** Set the origin of the vector data to put it in the corresponding
* image coordinates
* \sa GetOrigin() */
itkSetMacro(Origin, OriginType);
virtual void SetOrigin(const double origin[2]);
virtual void SetOrigin(const float origin[2]);
itkGetConstReferenceMacro(Origin, OriginType);
/** Set the spacing of the vector data to put it in the corresponding
* image coordinates
* \sa GetSpacing() */
virtual void SetSpacing(const SpacingType& spacing);
virtual void SetSpacing(const double spacing[2]);
virtual void SetSpacing(const float spacing[2]);
itkGetConstReferenceMacro(Spacing, SpacingType);
/** Clear the vector data */
virtual bool Clear();
/** Return the number of element in the tree */
virtual int Size() const;
void TransformPointToPhysicalPoint(const PointType& point, PointType& physicalPoint) const
{
physicalPoint[0] = point[0] * m_Spacing[0] + m_Origin[0];
physicalPoint[1] = point[1] * m_Spacing[1] + m_Origin[1];
}
/** Graft the data and information from one VectorData to another. This
* is a convenience method to setup a second VectorData with all the meta
* information of another VectorData and use the same DataTree
* Note that this method is different than just using two
* SmartPointers to the same VectorData since separate DataObjects are
* still maintained. This method is similar to
* VectorDataSource::GraftOutput(). */
void Graft(const itk::DataObject *data) ITK_OVERRIDE;
protected:
/** Constructor */
VectorData();
/** Destructor */
~VectorData() ITK_OVERRIDE {}
/** PrintSelf method */
void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
private:
VectorData(const Self&); //purposely not implemented
void operator =(const Self&); //purposely not implemented
/** Data tree */
DataTreePointerType m_DataTree;
SpacingType m_Spacing;
OriginType m_Origin;
};
} // end namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbVectorData.txx"
#endif
#endif
|