/usr/include/OTB-5.8/otbKMLVectorDataIO.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 | /*=========================================================================
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 otbKMLVectorDataIO_h
#define otbKMLVectorDataIO_h
#include <string>
#include "otbVectorDataIOBase.h"
#include "otbVectorData.h"
#include "kml/dom/kml_ptr.h"
#include "otbVectorDataProjectionFilter.h"
namespace kmldom
{
class KmlFactory;
}
namespace otb
{
/** \class KMLVectorDataIO
*
* \brief ImageIO object for reading/writing KML format vector data
*
*
* \ingroup OTBIOKML
*/
class ITK_EXPORT KMLVectorDataIO
: public VectorDataIOBase
{
public:
/** Standard class typedefs. */
typedef KMLVectorDataIO Self;
typedef VectorDataIOBase Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Method for creation through the object factory. */
itkNewMacro(Self);
/** Run-time type information (and related methods). */
itkTypeMacro(KMLVectorDataIO, VectorDataIOBase);
/** Byte order typedef */
typedef Superclass::ByteOrder ByteOrder;
/** Data typedef */
typedef VectorData<double, 2> VectorDataType;
typedef VectorDataType::DataTreeType DataTreeType;
typedef DataTreeType::TreeNodeType InternalTreeNodeType;
typedef InternalTreeNodeType::ChildrenListType ChildrenListType;
typedef DataTreeType::Pointer DataTreePointerType;
typedef DataTreeType::ConstPointer DataTreeConstPointerType;
typedef VectorDataType::DataNodeType DataNodeType;
typedef DataNodeType::Pointer DataNodePointerType;
typedef DataNodeType::PointType PointType;
typedef DataNodeType::LineType LineType;
typedef LineType::VertexListType VertexListType;
typedef VertexListType::ConstPointer VertexListConstPointerType;
typedef LineType::Pointer LinePointerType;
typedef LineType::VertexType VertexType;
typedef DataNodeType::PolygonType PolygonType;
typedef PolygonType::Pointer PolygonPointerType;
typedef DataNodeType::PolygonListType PolygonListType;
typedef PolygonListType::Pointer PolygonListPointerType;
typedef VectorDataType::Pointer VectorDataPointerType;
typedef VectorDataType::ConstPointer VectorDataConstPointerType;
typedef VectorDataProjectionFilter<VectorDataType, VectorDataType> ProjectionFilterType;
/*-------- This part of the interface deals with reading data. ------ */
/** Determine the file type. Returns true if this VectorDataIO can read the
* file specified. */
bool CanReadFile(const char*) const ITK_OVERRIDE;
/** Reads the data from disk into the data structure provided. */
void Read(itk::DataObject* data) ITK_OVERRIDE;
/*-------- This part of the interfaces deals with writing data. ----- */
/** Determine the file type. Returns true if this VectorDataIO can read the
* file specified. */
bool CanWriteFile(const char*) const ITK_OVERRIDE;
/** Writes the data to disk from the data structure provided */
void Write(const itk::DataObject* data, char ** papszOptions = ITK_NULLPTR) ITK_OVERRIDE;
protected:
/** Constructor.*/
KMLVectorDataIO();
/** Destructor.*/
~KMLVectorDataIO() ITK_OVERRIDE;
void PrintSelf(std::ostream& os, itk::Indent indent) const ITK_OVERRIDE;
static const kmldom::FeaturePtr GetRootFeature(const kmldom::ElementPtr& root);
static void PrintIndented(const std::string& item, int depth);
static void PrintFeature(const kmldom::FeaturePtr& feature, int depth);
void WalkGeometry(const kmldom::GeometryPtr& geometry, DataNodePointerType father);
void WalkFeature(const kmldom::FeaturePtr& feature, DataNodePointerType father);
void WalkContainer(const kmldom::ContainerPtr& container, DataNodePointerType father);
/** Conversion tools */
DataNodePointerType ConvertGeometryToPointNode(const kmldom::GeometryPtr& geometry);
DataNodePointerType ConvertGeometryToLineStringNode(const kmldom::GeometryPtr& geometry);
DataNodePointerType ConvertGeometryToLinearRingNode(const kmldom::GeometryPtr& geometry);
DataNodePointerType ConvertGeometryToPolygonNode(const kmldom::GeometryPtr& geometry);
/** end conversion tools */
void ProcessNodeWrite(InternalTreeNodeType * source, kmldom::KmlFactory* factory,
kmldom::KmlPtr kml, kmldom::DocumentPtr currentDocument, kmldom::FolderPtr currentFolder,
kmldom::MultiGeometryPtr currentMultiGeometry);
private:
KMLVectorDataIO(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
DataTreePointerType m_Tree;
unsigned int m_Kept;
};
} // end namespace otb
#endif // otbKMLVectorDataIO_h
|