SourceXtractorPlusPlus  0.15
Please provide a description of the project.
FitsWriter.h
Go to the documentation of this file.
1 
17 /*
18  * FitsWriter.h
19  *
20  * Created on: May 23, 2017
21  * Author: mschefer
22  */
23 
24 #ifndef _SEFRAMEWORK_IMAGE_FITSWRITER_H_
25 #define _SEFRAMEWORK_IMAGE_FITSWRITER_H_
26 
27 #include "ElementsKernel/Logging.h"
34 
35 namespace SourceXtractor {
36 
38 
44 class FitsWriter {
45 
46 public:
47 
51  virtual ~FitsWriter() = default;
52 
53  template <typename T>
54  static void writeFile(const Image<T> &image, const std::string &filename,
55  const std::shared_ptr<CoordinateSystem> coord_system = nullptr, bool append=false) {
56  auto target_image = newImage<T>(filename, image.getWidth(), image.getHeight(), coord_system, append);
57 
58  // FIXME optimize the copy by using tile boundaries, image chunks, etc
59  ImageAccessor<T> accessor(image);
60  for (int y = 0; y < image.getHeight(); y++) {
61  for (int x = 0; x < image.getWidth(); x++) {
62  target_image->setValue(x, y, accessor.getValue(x, y));
63  }
64  }
65  }
66 
67  template <typename T>
68  static std::shared_ptr<WriteableImage<T>> newImage(const std::string &filename, int width, int height,
69  const std::shared_ptr<CoordinateSystem> coord_system = nullptr, bool append=false) {
70  fitsWriterLogger.debug() << "Creating file " << filename;
71 
72  auto image_source = std::make_shared<FitsImageSource>(filename, width, height, ImageTile::getTypeValue(T()), coord_system, append);
73  return WriteableBufferedImage<T>::create(image_source);
74  }
75 
76  template <typename T>
77  static std::shared_ptr<WriteableImage<T>> newTemporaryImage(const std::string &pattern, int width, int height) {
78  fitsWriterLogger.debug() << "Creating temporary fits file";
79 
80  auto image_source = std::make_shared<TemporaryFitsImageSource>(pattern, width, height, ImageTile::getTypeValue(T()));
81  return WriteableBufferedImage<T>::create(image_source);
82  }
83 
84 
85 }; /* End of FitsReader class */
86 
87 } /* namespace SourceXtractor */
88 
89 
90 
91 
92 
93 #endif /* _SEFRAMEWORK_IMAGE_FITSWRITER_H_ */
SourceXtractor::FitsWriter::newImage
static std::shared_ptr< WriteableImage< T > > newImage(const std::string &filename, int width, int height, const std::shared_ptr< CoordinateSystem > coord_system=nullptr, bool append=false)
Definition: FitsWriter.h:68
SourceXtractor::ImageAccessor
Definition: ImageAccessor.h:41
std::string
STL class.
std::shared_ptr
STL class.
WriteableBufferedImage.h
SourceXtractor::Image::getWidth
virtual int getWidth() const =0
Returns the width of the image in pixels.
conf.filename
string filename
Definition: conf.py:63
Elements::Logging
SourceXtractor::FitsWriter::~FitsWriter
virtual ~FitsWriter()=default
Destructor.
TemporaryFitsImageSource.h
SourceXtractor::fitsWriterLogger
static Elements::Logging fitsWriterLogger
Definition: FitsWriter.h:37
SourceXtractor::Image::getHeight
virtual int getHeight() const =0
Returns the height of the image in pixels.
SourceXtractor::Image
Interface representing an image.
Definition: Image.h:43
CoordinateSystem.h
SourceXtractor
Definition: Aperture.h:30
Euclid::Table::FitsWriter
SourceXtractor::FitsWriter::writeFile
static void writeFile(const Image< T > &image, const std::string &filename, const std::shared_ptr< CoordinateSystem > coord_system=nullptr, bool append=false)
Definition: FitsWriter.h:54
SourceXtractor::ImageTile::getTypeValue
static ImageType getTypeValue(float)
Definition: ImageTile.h:99
Image.h
Elements::Logging::debug
void debug(const std::string &logMessage)
SourceXtractor::WriteableBufferedImage::create
static std::shared_ptr< WriteableBufferedImage< T > > create(std::shared_ptr< const ImageSource > source, std::shared_ptr< TileManager > tile_manager=TileManager::getInstance())
Definition: WriteableBufferedImage.h:44
SourceXtractor::ImageAccessor::getValue
T getValue(int x, int y)
Definition: ImageAccessor.h:100
Elements::Logging::getLogger
static Logging getLogger(const std::string &name="")
SourceXtractor::FitsWriter::newTemporaryImage
static std::shared_ptr< WriteableImage< T > > newTemporaryImage(const std::string &pattern, int width, int height)
Definition: FitsWriter.h:77
x
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
Definition: MoffatModelFittingTask.cpp:94
Logging.h
Euclid::Table::FitsWriter::append
void append(const Table &table) override
y
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
Definition: MoffatModelFittingTask.cpp:94
ImageAccessor.h
FitsImageSource.h