Failed to fetch fork details. Try again later.
-
Cresson Remi authorede3272cad
Forked from
Cresson Remi / SimpleExtractionTools
Source project has a limited visibility.
/*=========================================================================
Copyright (c) Remi Cresson (IRSTEA). All rights reserved.
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 __gtbVectorDataToLabelImageCustomFilter_h
#define __gtbVectorDataToLabelImageCustomFilter_h
#include "itkImageToImageFilter.h"
#include "itkImageSource.h"
#include "otbMacro.h"
#include "otbImageMetadataInterfaceFactory.h"
#include "otbVectorData.h"
#include "gdal.h"
#include "ogr_api.h"
#include <ogrsf_frmts.h>
namespace otb {
/** \class VectorDataToLabelImageCustomFilter
* \brief Burn geometries from the specified VectorData into raster
*
* This class handles burning several input VectorDatas into the
* output raster. The burn values are extracted from a field set by
* the user.If no burning field is set, the "FID" is used by default.
*
* A "Burn max value" mode overrides this and makes only the max value
* burnt whenever the burning field.
*
* Setting the output raster informations can be done in two ways by:
* - Setting the Origin/Size/Spacing of the output image
* - Using an existing image as support via SetOutputParametersFromImage(ImageBase)
*
* OGRRegisterAll() method must have been called before applying filter.
*
* \ingroup SimpleExtractionTools
*/
template <class TVectorData, class TOutputImage >
class ITK_EXPORT VectorDataToLabelImageCustomFilter :
public itk::ImageSource<TOutputImage>
{
public:
/** Standard class typedefs */
typedef VectorDataToLabelImageCustomFilter Self;
typedef itk::ImageSource<TOutputImage> Superclass;
typedef itk::SmartPointer< Self > Pointer;
typedef itk::SmartPointer<const Self> ConstPointer;
/** Run-time type information (and related methods). */
itkTypeMacro(VectorDataToLabelImageCustomFilter, itk::ImageSource);
/** Method for creation through the object factory. */
itkNewMacro(Self);
typedef TOutputImage OutputImageType;
typedef typename OutputImageType::Pointer OutputImagePointer;
typedef typename OutputImageType::SizeType OutputSizeType;
typedef typename OutputImageType::IndexType OutputIndexType;
typedef typename OutputImageType::SpacingType OutputSpacingType;
typedef typename OutputImageType::PointType OutputOriginType;
typedef typename OutputImageType::RegionType OutputImageRegionType;
typedef typename OutputImageType::PixelType OutputImagePixelType;
typedef typename OutputImageType::InternalPixelType OutputImageInternalPixelType;
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
/** VectorData typedefs*/
typedef TVectorData VectorDataType;
typedef typename VectorDataType::DataTreeType DataTreeType;
typedef typename DataTreeType::TreeNodeType InternalTreeNodeType;
typedef typename DataTreeType::Pointer DataTreePointerType;
typedef typename DataTreeType::ConstPointer DataTreeConstPointerType;
typedef itk::ImageBase<OutputImageType::ImageDimension> ImageBaseType;
/** Get Nth input VectorData */
const VectorDataType* GetInput(unsigned int idx);
/** Method for adding VectorData to rasterize */
virtual void AddVectorData(const VectorDataType* vd);
/** Set the size of the output image. */
itkSetMacro(OutputSize, OutputSizeType);
/** Get the size of the output image. */
itkGetConstReferenceMacro(OutputSize, OutputSizeType);
/** Burn mode */
itkSetMacro(BurnMaxValueMode, bool);
itkGetMacro(BurnMaxValueMode, bool);
/** Set the origin of the output image.
* \sa GetOrigin()
*/
itkSetMacro(OutputOrigin, OutputOriginType);
virtual void SetOutputOrigin(const double origin[2]);
virtual void SetOutputOrigin(const float origin[2]);
itkGetConstReferenceMacro(OutputOrigin, OutputOriginType);
/** Set the spacing (size of a pixel) of the output image.
* \sa GetSpacing()
*/
virtual void SetOutputSpacing(const OutputSpacingType& spacing);
virtual void SetOutputSpacing(const double spacing[2]);
virtual void SetOutputSpacing(const float spacing[2]);
/** Set/Get Output Projection Ref */
itkSetStringMacro(OutputProjectionRef);
itkGetStringMacro(OutputProjectionRef);
itkSetStringMacro(BurnAttribute);
itkGetStringMacro(BurnAttribute);
/** Useful to set the output parameters from an existing image*/
void SetOutputParametersFromImage(const ImageBaseType * image);
protected:
virtual void GenerateData();
VectorDataToLabelImageCustomFilter();
virtual ~VectorDataToLabelImageCustomFilter() override {}
virtual void GenerateOutputInformation();
void PrintSelf(std::ostream& os, itk::Indent indent) const;
private:
VectorDataToLabelImageCustomFilter(const Self&); //purposely not implemented
void operator=(const Self&); //purposely not implemented
OGRDataSource* m_OGRDataSourcePointer;
// Vector Of OGRGeometyH
std::vector< OGRGeometryH > m_SrcDataSetGeometries;