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
|
/*=========================================================================
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.
=========================================================================*/
#include "otbWrapperApplication.h"
#include "otbWrapperApplicationFactory.h"
#include "otbVectorData.h"
namespace otb
{
namespace Wrapper
{
class VectorDataSetField : public Application
{
public:
/** Standard class typedefs. */
typedef VectorDataSetField Self;
typedef Application Superclass;
typedef itk::SmartPointer<Self> Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Standard macro */
itkNewMacro(Self);
itkTypeMacro(VectorDataSetField, otb::Application);
private:
void DoInit() ITK_OVERRIDE
{
SetName("VectorDataSetField");
SetDescription("Set a field in vector data.");
// Documentation
SetDocName("Vector data set field");
SetDocLongDescription("Set a specified field to a specified value on all features of a vector data.");
SetDocLimitations("Doesn't work with KML files yet");
SetDocAuthors("OTB-Team");
SetDocSeeAlso(" ");
AddDocTag(Tags::Vector);
AddParameter(ParameterType_InputVectorData, "in", "Input");
SetParameterDescription("in", "Input Vector Data");
AddParameter(ParameterType_OutputVectorData, "out", "Output");
SetParameterDescription("out", "Output Vector Data");
AddParameter(ParameterType_String, "fn", "Field");
SetParameterDescription("fn", "Field name");
AddParameter(ParameterType_String, "fv", "Value");
SetParameterDescription("fv", "Field value");
// Doc example parameter settings
SetDocExampleParameterValue("in", "qb_RoadExtract_classification.shp");
SetDocExampleParameterValue("out", "VectorDataSetField.shp");
SetDocExampleParameterValue("fn", "Info");
SetDocExampleParameterValue("fv", "Sample polygon");
}
void DoUpdateParameters() ITK_OVERRIDE
{
// Nothing to do (for now)
}
void DoExecute() ITK_OVERRIDE
{
m_InputData = GetParameterVectorData("in");
typedef VectorDataType::DataTreeType DataTreeType;
typedef itk::PreOrderTreeIterator<DataTreeType> TreeIteratorType;
TreeIteratorType it(m_InputData->GetDataTree());
for (it.GoToBegin(); !it.IsAtEnd(); ++it)
{
it.Get()->SetFieldAsString(GetParameterAsString("fn"), GetParameterAsString("fv"));
}
SetParameterOutputVectorData("out", m_InputData);
}
VectorDataType::Pointer m_InputData;
};
}
}
OTB_APPLICATION_EXPORT(otb::Wrapper::VectorDataSetField)
|