Commit d8df3895 authored by Julien Malik's avatar Julien Malik

ENH: remove dxflib and associated classes for licensing issues

parent 7b286f1d
......@@ -30,7 +30,7 @@ ADD_LIBRARY(OTBIO ${OTBIO_SRCS})
# LINK_INTERFACE_LIBRARIES ""
# )
TARGET_LINK_LIBRARIES (OTBIO ${TIFF_LIBRARY} ${GEOTIFF_LIBRARY} ${GDAL_LIBRARY} ${OGR_LIBRARY} ${JPEG_LIBRARY} OTBCommon)
TARGET_LINK_LIBRARIES (OTBIO otbossim otbossimplugins ITKIO ITKCommon dxf otbkml tinyXML)
TARGET_LINK_LIBRARIES (OTBIO otbossim otbossimplugins ITKIO ITKCommon otbkml tinyXML)
IF (OTB_USE_LIBLAS)
IF(OTB_USE_EXTERNAL_LIBLAS)
......
/*=========================================================================
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 __otbDXFToSpatialObjectGroupFilter_h
#define __otbDXFToSpatialObjectGroupFilter_h
#include "dl_creationadapter.h"
#include "itkGroupSpatialObject.h"
#include "otbSpatialObjectSource.h"
#include "itkEllipseSpatialObject.h"
#include "itkGroupSpatialObject.h"
#include "itkSpatialObjectPoint.h"
#include "itkLandmarkSpatialObject.h"
#include "otbLineSpatialObject.h"
#include "itkLineSpatialObjectPoint.h"
namespace otb
{
/** \class DXFToSpatialObjectGroupFilter
* \brief TODO
*
*/
template <class TSpatialObject>
class ITK_EXPORT DXFToSpatialObjectGroupFilter
: public DL_CreationAdapter, public SpatialObjectSource<TSpatialObject>
{
public:
/** Standard typedefs */
typedef DXFToSpatialObjectGroupFilter Self;
typedef SpatialObjectSource<TSpatialObject> 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(SpatialObjectReader, SpatialObjectSource);
/** Spatial objects typedefs */
typedef TSpatialObject GroupSpatialObjectType;
typedef typename GroupSpatialObjectType::Pointer GroupPointer;
typedef itk::SpatialObjectPoint<TSpatialObject::ObjectDimension> PointType;
typedef itk::LandmarkSpatialObject<TSpatialObject::ObjectDimension> LandmarkType;
typedef typename LandmarkType::Pointer LandmarkPointer;
typedef typename LandmarkType::PointListType LandmarkListType;
typedef LineSpatialObject<TSpatialObject::ObjectDimension> LineType;
typedef typename LineType::Pointer LinePointer;
typedef itk::LineSpatialObjectPoint<TSpatialObject::ObjectDimension> LinePointType;
typedef typename LineType::PointListType LineListType;
typedef itk::EllipseSpatialObject<TSpatialObject::ObjectDimension> EllipseType;
typedef typename EllipseType::Pointer EllipsePointer;
typedef std::vector<LinePointType> PointListType;
virtual void addLayer(const DL_LayerData& data);
virtual void addPoint(const DL_PointData& data);
virtual void addLine(const DL_LineData& data);
virtual void add3DFace(const DL_3DFaceData& data);
virtual void addArc(const DL_ArcData& data);
virtual void addCircle(const DL_CircleData& data);
virtual void addPolyline(const DL_PolylineData& data);
virtual void addVertex(const DL_VertexData& data);
virtual void SetLayer(const char* layer);
/** Workaround while waiting for the SpatialObject bug to be fixed */
virtual void Update(void);
protected:
/** Constructor */
DXFToSpatialObjectGroupFilter();
/** Destructor */
virtual ~DXFToSpatialObjectGroupFilter() {}
/** Main computation method */
virtual void GenerateData(void);
/** PrintSelf method */
virtual void PrintSelf(std::ostream& os, itk::Indent indent) const;
private:
DXFToSpatialObjectGroupFilter(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
int m_CurrentObjectType;
LineListType m_PointList;
LinePointType m_PremierPoint;
int m_PolylineClosed; //(=1 if the polyline is closed,else =0 );
const char* m_layer;
bool layerspecified;
};
}
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbDXFToSpatialObjectGroupFilter.txx"
#endif
#endif
This diff is collapsed.
/*=========================================================================
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 __otbSpatialObjectDXFReader_h
#define __otbSpatialObjectDXFReader_h
#include "itkGroupSpatialObject.h"
#include "otbSpatialObjectSource.h"
namespace otb
{
/** \class SpatialObjectDXFReader
* \brief This class reads the DXF file format to SpatialObjects.
*
* \ingroup ObjectSource
*
* \example IO/DXFReaderExample.cxx
*
*/
template <class TSpatialObject>
class ITK_EXPORT SpatialObjectDXFReader
: public SpatialObjectSource<TSpatialObject>
{
public:
typedef SpatialObjectDXFReader Self;
typedef SpatialObjectSource<TSpatialObject> 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(SpatialObjectDXFReader, SpatialObjectSource);
/** Superclass Typedefs */
typedef TSpatialObject GroupSpatialObjectType;
typedef typename GroupSpatialObjectType::Pointer GroupSpatialObjectPointerType;
/** Set the filename */
void SetFileName(char * filename);
/** Get the filename */
itkGetStringMacro(FileName);
/** Set The layer name */
itkSetStringMacro(LayerName);
/** Get The layer name */
itkGetStringMacro(LayerName);
/** Workaround while waiting for the SpatialObject bug to be fixed */
virtual void Update(void);
protected:
/** Constructor */
SpatialObjectDXFReader();
/** Destructor */
virtual ~SpatialObjectDXFReader();
/** Main computation method */
virtual void GenerateData();
private:
SpatialObjectDXFReader(const Self &); //purposely not implemented
void operator =(const Self&); //purposely not implemented
/** Test whether the given filename exist and it is readable,
this is intended to be called before attempting to use
ImageIO classes for actually reading the file. If the file
doesn't exist or it is not readable, and exception with an
approriate message will be thrown. */
void TestFileExistanceAndReadability();
std::string m_FileName;
std::string m_LayerName;
};
} // end namespace otb
#ifndef OTB_MANUAL_INSTANTIATION
#include "otbSpatialObjectDXFReader.txx"
#endif
#endif
/*=========================================================================
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 __otbSpatialObjectDXFReader_txx
#define __otbSpatialObjectDXFReader_txx
#include "otbSpatialObjectDXFReader.h"
#include "otbDXFToSpatialObjectGroupFilter.h"
#include "dl_dxf.h"
#include "dl_creationadapter.h"
#include "itksys/SystemTools.hxx"
#include "otbMacro.h"
#include "otbSystem.h"
#include "otbImageFileReader.h"
namespace otb
{
/**
* Constructor
*/
template <class TSpatialObject>
SpatialObjectDXFReader<TSpatialObject>
::SpatialObjectDXFReader()
{
m_FileName = "";
m_LayerName = "";
// this->itk::ProcessObject::ReleaseDataBeforeUpdateFlagOff();
this->GetOutput()->ReleaseData();
this->ResetPipeline();
}
/**
* Destructor
*/
template <class TSpatialObject>
SpatialObjectDXFReader<TSpatialObject>
::~SpatialObjectDXFReader()
{}
template <class TSpatialObject>
void
SpatialObjectDXFReader<TSpatialObject>
::SetFileName(char * filename)
{
m_FileName = filename;
this->Modified();
}
/** Test whether the given filename exist and it is readable,
this is intended to be called before attempting to use
ImageIO classes for actually reading the file. If the file
doesn't exist or it is not readable, and exception with an
approriate message will be thrown. */
template <class TSpatialObject>
void
SpatialObjectDXFReader<TSpatialObject>
::TestFileExistanceAndReadability()
{
// Test if the file exists.
if (!itksys::SystemTools::FileExists(this->m_FileName.c_str()))
{
itk::ImageFileReaderException e(__FILE__, __LINE__);
itk::OStringStream msg;
msg << "The file doesn't exist. "
<< std::endl << "Filename = " << this->m_FileName
<< std::endl;
e.SetDescription(msg.str().c_str());
throw e;
return;
}
// Test if the file can be open for reading access.
//Only if m_FileName speciy a filname (not a dirname)
if (System::IsAFileName(this->m_FileName) == true)
{
std::ifstream readTester;
readTester.open(this->m_FileName.c_str());
if (readTester.fail())
{
readTester.close();
itk::OStringStream msg;
msg << "The file couldn't be opened for reading. "
<< std::endl << "Filename: " << this->m_FileName
<< std::endl;
itk::ImageFileReaderException e(__FILE__, __LINE__, msg.str().c_str(), ITK_LOCATION);
throw e;
return;
}
readTester.close();
}
}
/**
* Main computation method
*/
template <class TSpatialObject>
void
SpatialObjectDXFReader<TSpatialObject>
::GenerateData()
{
TestFileExistanceAndReadability();
typedef otb::DXFToSpatialObjectGroupFilter<TSpatialObject> CreationFilter;
typename CreationFilter::Pointer creationClass = CreationFilter::New();
if (m_LayerName.size() > 0)
{
creationClass->SetLayer(m_LayerName.c_str());
}
DL_Dxf dxf;
dxf.in(m_FileName, creationClass);
GroupSpatialObjectType * group = creationClass->GetOutput();
group->Update();
this->SetNthOutput(0, group);
}
template <class TSpatialObject>
void
SpatialObjectDXFReader<TSpatialObject>
::Update(void)
{
this->GenerateData();
}
} //namespace otb
#endif
......@@ -50,9 +50,6 @@ TARGET_LINK_LIBRARIES(ImageSeriesIOExample OTBCommon OTBIO)
ADD_EXECUTABLE(MetadataExample MetadataExample.cxx )
TARGET_LINK_LIBRARIES(MetadataExample OTBCommon OTBIO)
ADD_EXECUTABLE(DXFReaderExample DXFReaderExample.cxx )
TARGET_LINK_LIBRARIES(DXFReaderExample OTBCommon OTBIO)
ADD_EXECUTABLE(VectorDataIOExample VectorDataIOExample.cxx )
TARGET_LINK_LIBRARIES(VectorDataIOExample OTBCommon OTBIO)
......
/*=========================================================================
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.
=========================================================================*/
// Software Guide : BeginCommandLineArgs
// INPUTS: {Lalande.dxf}
// TOIT 1000
// OUTPUTS: {lalande.png}
// Software Guide : EndCommandLineArgs
// Software Guide : BeginLatex
//
// \label{DXFExample}This example illustrates how to read a DXF file and how to draw objects
// on a $2D$ binary image. The graphical DXF objects which can be read are the following : Point, Line
// Polyline, Circle and 3DFace.
// The example begins by including the appropriate headers.
//
//
// Software Guide : EndLatex
// Software Guide : BeginCodeSnippet
#include "itkExceptionObject.h"
#include "otbImage.h"
#include "otbImageFileWriter.h"
#include "otbSpatialObjectDXFReader.h"
#include "otbSpatialObjectToImageDrawingFilter.h"
#include "itkRescaleIntensityImageFilter.h"
// Software Guide : EndCodeSnippet
int main(int argc, char * argv[])
{
// Verify the number of parameters in the command line
if (argc < 5)
{
std::cerr << "Usage: " << std::endl;
std::cerr << argv[0] <<
" inputFilename LayerName outputSize outputFilename " << std::endl;
return EXIT_FAILURE;
}
// Software Guide : BeginLatex
//
// Then, as usual, we select the pixel types and the image
// dimension.
// Software Guide : EndLatex
char * inputFilename = argv[1];
char * outputFilename = argv[4];
// Software Guide : BeginCodeSnippet
const unsigned int Dimension = 2;
typedef double PixelType;
typedef unsigned char OutputPixelType;
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
//
// The DXF file reader and the image file writer types are instantiated.
// We can then create objects for both of them.
// Graphical DXF objects will be represented in a GroupSpatialObject.
// Software Guide : EndLatex
// Software Guide : BeginCodeSnippet
typedef itk::GroupSpatialObject<Dimension> GroupType;
typedef otb::Image<PixelType, Dimension> ImageType;
typedef otb::Image<OutputPixelType, Dimension> OutputImageType;
typedef otb::ImageFileWriter<OutputImageType> WriterType;
typedef otb::SpatialObjectDXFReader<GroupType>
SpatialObjectDXFReaderType;
typedef otb::SpatialObjectToImageDrawingFilter<GroupType, ImageType>
SpatialObjectToImageDrawingFilterType;
typedef itk::RescaleIntensityImageFilter<ImageType,
OutputImageType> CastFilterType;
typedef itk::SpatialObject<Dimension> SpatialObjectType;
// Instantiating object
SpatialObjectDXFReaderType::Pointer reader =
SpatialObjectDXFReaderType::New();
SpatialObjectToImageDrawingFilterType::Pointer imageGenerator =
SpatialObjectToImageDrawingFilterType::New();
WriterType::Pointer writer = WriterType::New();
CastFilterType::Pointer castFilter = CastFilterType::New();
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
// Filenames should be provided for both the reader and the writer. In this
// particular example we take those filenames from the command line arguments.
// The size of the output image is also specified.
// Thanks to the SetLayerName() method, a particular layer can be specified and other layers will not be read.
// If no layer name is specified, all layers are read.
// Software Guide : EndLatex
// Software Guide : BeginCodeSnippet
reader->SetFileName(inputFilename);
reader->SetLayerName(argv[2]);
writer->SetFileName(outputFilename);
const unsigned int outputSize = atoi(argv[3]);
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
// The reading of the DXF file is performed with the Update() method. Consequently the group of Spatial Objects is created.
// Software Guide : EndLatex
// Software Guide : BeginCodeSnippet
reader->Update();
GroupType::Pointer group = reader->GetOutput();
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
// We check if the group is empty. If it is not the case we will represent the Spatial Object group on the output image.
// To determine the minimum and maximum coordinates of the group we compute the bounding box of each element of the group.
// Software Guide : EndLatex
// Software Guide : BeginCodeSnippet
if (group->GetNumberOfChildren() != 0)
{
/** Writing image **/
SpatialObjectType::ChildrenListType* children = group->GetChildren(
0);
SpatialObjectType::ChildrenListType::iterator it = children->begin();
SpatialObjectType::ChildrenListType::iterator end = children->end();
double maximum[Dimension],
minimum[Dimension];
(*it)->ComputeBoundingBox();
minimum[0] = (*it)->GetBoundingBox()->GetMinimum()[0];
minimum[1] = (*it)->GetBoundingBox()->GetMinimum()[1];
while (it != end)
{
(*it)->ComputeBoundingBox();
if ((*it)->GetBoundingBox()->GetMinimum()[0] < minimum[0])
{
minimum[0] = (*it)->GetBoundingBox()->GetMinimum()[0];
}
if ((*it)->GetBoundingBox()->GetMinimum()[1] < minimum[1])
{
minimum[1] = (*it)->GetBoundingBox()->GetMinimum()[1];
}
it++;
}
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
// Origin can be set at the minimum coordinate of the group and the spacing be adapted to the specified output image size in order to represent all
// Spatial Objects in the output image.
// Software Guide : EndLatex
ImageType::SizeType size;
size[0] = outputSize;
size[1] = outputSize;
imageGenerator->SetSize(size);
ImageType::PointType origin;
origin[0] = (int) minimum[0];
origin[1] = (int) minimum[1];
imageGenerator->SetOrigin(origin);
group->ComputeBoundingBox();
maximum[0] = group->GetBoundingBox()->GetMaximum()[0];
maximum[1] = group->GetBoundingBox()->GetMaximum()[1];
// Software Guide : BeginCodeSnippet
ImageType::SpacingType spacing;
spacing[0] = (maximum[0] - origin[0]) / size[0];
spacing[1] = (maximum[1] - origin[1]) / size[1];
imageGenerator->SetSpacing(spacing);
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
// The output image is created with previously specified origin, spacing and size.
// Software Guide : EndLatex
// Software Guide : BeginCodeSnippet
imageGenerator->SetInput(group);
imageGenerator->Update();
// Software Guide : EndCodeSnippet
// Software Guide : BeginLatex
// The output image is written by calling the Update() method.
// Software Guide : EndLatex
castFilter->SetOutputMinimum(0);
castFilter->SetOutputMaximum(255);
castFilter->SetInput(imageGenerator->GetOutput());
writer->SetInput(castFilter->GetOutput());
// Software Guide : BeginCodeSnippet
writer->Update();
// Software Guide : EndCodeSnippet
}
else
{
std::cout << "No objects detected." << std::endl;
return EXIT_FAILURE;
}
// Software Guide : BeginLatex
//
// \begin{figure}
// \center
// \includegraphics[width=0.44\textwidth]{lalande.eps}
// \itkcaption[DXF reader]{Representation of a DXF file on an image.}
// \label{fig:lalande}
// \end{figure}
//
// Figure \ref{fig:lalande}
// represents Spatial Objects extracted from a DXF file.
// Software Guide : EndLatex
return EXIT_SUCCESS;
}
......@@ -18,21 +18,18 @@
// Software Guide : BeginLatex
//
// Although specific vector data IO approaches, as the one
// presented in section \ref{sec:ReadDXF}, can be useful, it is even more
// interesting to have available approaches which are independent of
// the input format. Unfortunately, many vector data formats do not
// Unfortunately, many vector data formats do not
// share the models for the data they represent. However, in some
// cases, when simple data is stored, it can be decomposed in simple
// objects as for instance polylines, polygons and points. This is
// the case for the Shapefile and the KML (Keyhole Markup Language),
// the case for the Shapefile and the KML (Keyhole Markup Language) formats,
// for instance.
//
// Even though specific reader/writer for Shapefile and the Google KML
// are available in OTB, we designed a generic approach for the IO of
// this kind of data.
// The reader/writer for VectorData in OTB is able to access to a variety of
// The reader/writer for VectorData in OTB is able to access a variety of
// vector file formats (all OGR supported formats)
//
// In section \ref{sec:VectorDataProjection}, you will find more information on
......
......@@ -46,6 +46,7 @@ OTB-v.3.8.0 - Changes since version 3.6.0 (2010/12/16)
* Internal ITK: removed compilation of medical image formats library and associated ImageIO
* Internal ITK: removed dependency on libtiff, libjpeg, libpng and zlib, now handled by gdal
* Support for gcc-4.5
* Remove dxflib from Utilities for licensing issues
* Bug fix:
* Monteverdi
......
......@@ -1485,25 +1485,6 @@ ADD_TEST(ioTvPipelineMetadataHandlingTest ${IO_TESTS11}
# ${TEMP}/temp.img
# )
# ------- otb::DXFToSpatialObjectGroupFilter -------------------------------------------
ADD_TEST(ioTuDXFToSpatialObjectGroupFilterNew ${IO_TESTS11}
otbDXFToSpatialObjectGroupFilterNew)
# ------- otb::SpatialObjectDXFReader -------------------------------------------
ADD_TEST(ioTuSpatialObjectDXFReaderNew ${IO_TESTS11}
otbSpatialObjectDXFReaderNew)
ADD_TEST(ioTvSpatialObjectDXFReader ${IO_TESTS11}
--compare-image ${EPSILON_9}
${BASELINE}/ioTvSpatialObjectDXFReaderOutput.png
${TEMP}/ioTvSpatialObjectDXFReaderOutput.png
otbSpatialObjectDXFReader
${INPUTDATA}/Lardenne.dxf
${TEMP}/ioTvSpatialObjectDXFReaderOutput.png
TOIT
50
)
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ otbIOTESTS12 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -2926,9 +2907,6 @@ otbImageMetadataFileWriterTest.cxx
otbImageMetadataStreamingFileWriterTest.cxx
otbPipelineMetadataHandlingTest.cxx
otbPipelineMetadataHandlingWithUFFilterTest.cxx
otbDXFToSpatialObjectGroupFilterNew.cxx
otbSpatialObjectDXFReaderNew.cxx
otbSpatialObjectDXFReader.cxx
)
SET(BasicIO_SRCS12
otbIOTests12.cxx
......
/*=========================================================================
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 "itkExceptionObject.h"
#include "otbDXFToSpatialObjectGroupFilter.h"
#include "itkGroupSpatialObject.h"
int otbDXFToSpatialObjectGroupFilterNew(int argc, char * argv[])
{
const unsigned int Dimension = 2;
typedef itk::GroupSpatialObject<Dimension> GroupType;
typedef otb::DXFToSpatialObjectGroupFilter<GroupType> DXFToSpatialObjectGroupFilterType;
// Instantiating object
DXFToSpatialObjectGroupFilterType::Pointer object = DXFToSpatialObjectGroupFilterType::New();
std::cout << object << std::endl;
return EXIT_SUCCESS;
}
......@@ -30,7 +30,4 @@ void RegisterTests()
REGISTER_TEST(otbImageMetadataStreamingFileWriterTest);
REGISTER_TEST(otbPipelineMetadataHandlingTest);
REGISTER_TEST(otbPipelineMetadataHandlingWithUFFilterTest);
REGISTER_TEST(otbDXFToSpatialObjectGroupFilterNew);
REGISTER_TEST(otbSpatialObjectDXFReaderNew);
REGISTER_TEST(otbSpatialObjectDXFReader);
}
/*=========================================================================
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 "itkExceptionObject.h"
#include "otbImage.h"
#include "otbImageFileWriter.h"
#include "otbSpatialObjectDXFReader.h"
#include "otbSpatialObjectToImageDrawingFilter.h"
#include "itkRescaleIntensityImageFilter.h"
int otbSpatialObjectDXFReader(int argc, char * argv[])
{