casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ImageProxy.h
Go to the documentation of this file.
1 //# ImageProxy.h: Proxy interface to images
2 //# Copyright (C) 1997-2007
3 //# Associated Universities, Inc. Washington DC, USA.
4 //#
5 //# This library is free software; you can redistribute it and/or modify it
6 //# under the terms of the GNU Library General Public License as published by
7 //# the Free Software Foundation; either version 2 of the License, or (at your
8 //# option) any later version.
9 //#
10 //# This library is distributed in the hope that it will be useful, but WITHOUT
11 //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 //# License for more details.
14 //#
15 //# You should have received a copy of the GNU Library General Public License
16 //# along with this library; if not, write to the Free Software Foundation,
17 //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 //#
19 //# Correspondence concerning AIPS++ should be addressed as follows:
20 //# Internet email: aips2-request@nrao.edu.
21 //# Postal address: AIPS++ Project Office
22 //# National Radio Astronomy Observatory
23 //# 520 Edgemont Road
24 //# Charlottesville, VA 22903-2475 USA
25 //#
26 //#
27 //# $Id$
28 
29 #ifndef IMAGES_IMAGEPROXY_H
30 #define IMAGES_IMAGEPROXY_H
31 
32 //# Includes
33 #include <casacore/casa/aips.h>
40 
41 namespace casacore {
42 
43  //# Forward Declarations.
44  class ImageInfo;
45  template<typename T> class ImageInterface;
46  class LatticeExprNode;
47  class CoordinateSystem;
48  class ImageAttrHandler;
49 
50  // <synopsis>
51  // ImageProxy is a proxy to an image having data type Float, Double,
52  // Complex, or DComplex. Its primary purpose is to be bind the images
53  // module to Python through pyrap.images. However, it can also be used
54  // directly in C++.
55  //
56  // An ImageProxy object can be constructed for an image stored on disk in
57  // Casacore, FITS, HDF5, or Miriad format. It can also be constructed given
58  // a shape or an N-dim array with values.
59  // Furthermore it can be constructed from a LEL expression (see class ImageExpr)
60  // or a vector of images to be concatenated (see class ImageConcat).
61  //
62  // Many functions exist to operate on an ImageProxy object. For example:
63  // <ul>
64  // <li> get meta info (shape, data type, coordinates, etc.)
65  // <li> save in Casacore, HDF5, or FITS format.
66  // <li> regrid.
67  // <li> get statistics.
68  // <li> form a subimage (which is done in a virtual way).
69  // </ul>
70  // Functions regrid and statistics can only be used for Float images.
71  // They throw an exception for images with other data types.
72  // Note that using a LEL expression it is possible to (virtually) convert an
73  // image with another type to a Float image.
74  // </synopsis>
75 
76  class ImageProxy
77  {
78  public:
79  // Default constructor is needed for Boost-Python.
80  ImageProxy();
81 
82  // Construct from the concatenation of the images along the axis.
83  // The axis must be given as a Fortran-array axis.
84  // All images must be of the same data type.
85  ImageProxy (const Vector<String>& names, Int axis);
86 
87  // Construct from a string that contains an image name or image expression.
88  // It is opened using ImageOpener.
89  ImageProxy (const String& name, const String& mask,
90  const std::vector<ImageProxy>& images);
91 
92  // Construct from the concatenation of the image objects along the axis.
93  // The axis must be given as a Fortran-array axis.
94  // All images must be of the same data type.
95  //# The dummy arguments are needed to let all constructors have a
96  //# different number of arguments (for Boost-Python).
97  ImageProxy (const std::vector<ImageProxy>& images, Int axis,
98  Int dummy1=0, Int dummy2=0);
99 
100  // Construct from a ValueHolder containing an Array of Float or Complex.
101  // If the name is empty it is created as a temporary image, otherwise
102  // as a PagedImage or HDF5Image.
103  // If the coordinates record is empty, default coordinates are used.
104  // A mask is created if the mask name or mask value is not empty.
105  ImageProxy (const ValueHolder& values,
106  const ValueHolder& mask,
107  const Record& coordinates,
108  const String& imageName = String(),
109  Bool overwrite = True,
110  Bool asHDF5 = False,
111  const String& maskName = String(),
112  const IPosition& tileShape = IPosition());
113 
114  // Construct from a shape.
115  // If the name is empty it is created as a temporary image, otherwise
116  // as a PagedImage or HDF5Image.
117  // If the coordinates record is empty, default coordinates are used.
118  // A mask is created if the mask name is not empty.
119  ImageProxy (const IPosition& shape,
120  const ValueHolder& value,
121  const Record& coordinates,
122  const String& imageName = String(),
123  Bool overwrite = True,
124  Bool asHDF5 = False,
125  const String& maskName = String(),
126  const IPosition& tileShape = IPosition(),
127  Int dummy=0);
128 
129  // Construct from an existing image object.
131 
132  // Copy constructor (reference semantics).
133  ImageProxy (const ImageProxy&);
134 
135  // Assignment (reference semantics).
137 
138  ~ImageProxy();
139 
140  // Open the image (which can also be an expression).
141  // It throws an exception if not succeeded.
142  static LatticeBase* openImage (const String& name,
143  const String& mask = String(),
144  const std::vector<ImageProxy>& images = std::vector<ImageProxy>());
145 
146  // Open an image in the file/table with the given name.
147  // The specified mask will be applied (default is default mask).
148  // A null pointer is returned for an unknown image type.
149  // Non-Casacore image types must have been registered to be known.
150  // If not successful, try to open it as an image expression.
151  static LatticeBase* openImageOrExpr (const String& str,
152  const MaskSpecifier&,
153  const Block<LatticeExprNode>& nodes);
154 
155  // Close the image by setting all pointers to 0.
156  void close();
157 
158  // Turn the ImageProxy into a LatticeExprNode.
159  LatticeExprNode makeNode() const;
160 
161  // Is the image persistent or temporary.
162  Bool isPersistent() const;
163 
164  // Get the name of the image.
165  String name (Bool stripPath=False) const;
166 
167  // Get the shape of the image.
168  IPosition shape() const;
169 
170  // Get the dimensionality of the image.
171  uInt ndim() const;
172 
173  // Get the size of the image (nr of pixels).
174  uInt size() const;
175 
176  // Get the data type of the image.
177  String dataType() const;
178 
179  DataType type() const;
180 
181  // Get the image type (PagedImage, HDF5Image, etc.)
182  String imageType() const;
183 
184  // Get a chunk of data.
185  ValueHolder getData (const IPosition& blc,
186  const IPosition& trc,
187  const IPosition& inc);
188 
189  // Get a chunk of the mask.
190  ValueHolder getMask (const IPosition& blc,
191  const IPosition& trc,
192  const IPosition& inc);
193 
194  // Put a chunk of data.
195  void putData (const ValueHolder&,
196  const IPosition& blc,
197  const IPosition& inc);
198 
199  // Put a chunk of the mask.
200  // The mask will be created if not present yet.
201  // That will not be done if the entire mask is True.
202  void putMask (const ValueHolder& value,
203  const IPosition& blc,
204  const IPosition& inc);
205 
206  // Does the image have a read or write lock?
207  Bool hasLock (Bool writeLock = False);
208 
209  // Try to acquire a read or write lock.
210  // nattempts=0 means wait until acquired. Otherwise every second an
211  // attempt is done.
212  void lock (Bool writeLock=False, Int nattempts=0);
213 
214  // Release the lock acquired by lock().
215  void unlock();
216 
217  // Get the names of the attribute groups.
219 
220  // Create a new attribute group.
221  void createAttrGroup (const String& groupName);
222 
223  // Get the names of all attributes in a group.
224  Vector<String> attrNames (const String& groupName) const;
225 
226  // Get the number of rows in an attribute group.
227  uInt attrNrows (const String& groupName) const;
228 
229  // Get the value of an attribute in a group row.
230  ValueHolder getAttr (const String& groupName,
231  const String& attrName,
232  uInt rownr) const;
233 
234  // Get all attributes in a group row.
235  Record getAttrRow (const String& groupName,
236  uInt rownr) const;
237 
238  // Get the unit(s) of an attribute in a group.
239  Vector<String> getAttrUnit(const String& groupName,
240  const String& attrName) const;
241 
242  // Get the measinfo of an attribute in a group.
243  Vector<String> getAttrMeas(const String& groupName,
244  const String& attrName) const;
245 
246  // Put the value, unit, and measinfo of an attribute in a group row.
247  // The attribute or row is added if new.
248  void putAttr (const String& groupName, const String& attrName, uInt rownr,
249  const ValueHolder& value,
250  const Vector<String>& units,
251  const Vector<String>& measInfo);
252 
253  // Form a new (virtual) image being a subset of the image.
254  // It uses preserveAxesOrder=False.
255  ImageProxy subImage (const IPosition& blc,
256  const IPosition& trc,
257  const IPosition& inc,
258  Bool dropDegenerate=True);
259  // Same with a new function name for backward compatibility with old pyrap.
260  ImageProxy subImage2 (const IPosition& blc,
261  const IPosition& trc,
262  const IPosition& inc,
263  Bool dropDegenerate,
264  Bool preserveAxesOrder);
265 
266  // Get the brightness unit.
267  String unit() const;
268 
269  // Get the coordinate system.
270  Record coordSys() const;
271 
272  const CoordinateSystem& coordSysObject() const;
273 
274  // Convert a pixel coordinate to world coordinate.
275  // if <src>reverseAxes=True</src> the input and output vector will be
276  // reversed (as needed for pyrap).
277  Vector<Double> toWorld (const Vector<Double>& pixel,
278  Bool reverseAxes);
279 
280  // Convert a world coordinate to pixel coordinate.
281  // if <src>reverseAxes=True</src> the input and output vector will be
282  // reversed (as needed for pyrap).
283  Vector<Double> toPixel (const Vector<Double>& world,
284  Bool reverseAxes);
285 
286  // Get the image info.
287  Record imageInfo() const;
288 
289  const ImageInfo& imageInfoObject() const;
290 
291  // Get the miscellaneous info.
292  Record miscInfo() const;
293 
294  // Get the history.
295  Vector<String> history() const;
296 
297  // Write the image in FITS format.
298  // See class ImageFITSConverter for a description of the arguments.
299  // Currently only a float image can be written to FITS.
300  void toFits (const String& fitsfile, Bool overwrite=True,
301  Bool velocity=True, Bool optical=True, Int bitpix=-32,
302  Double minpix=1, Double maxpix=-1) const;
303 
304  // Write the image to an image file with the given name.
305  // An exception is thrown if the name is the name of an already open image.
306  void saveAs (const String& fileName, Bool overwrite=True,
307  Bool hdf5=False,
308  Bool copyMask=True, const String& newMaskName=String(),
309  const IPosition& newTileShape=IPosition()) const;
310 
311  // Return the statistics for the given axes.
312  // E.g., if axes 0,1 is given in a 3-dim image, the statistics are
313  // calculated for each plane along the 3rd axis.
314  // MinMaxValues can be given to include or exclude (4th argument) pixels
315  // with values in the given range. If only one value is given, min=-abs(val)
316  // and max=abs(val).
317  // Robust statistics (Median, MedAbsDevMed, and Quartile) can be returned
318  // too.
319  Record statistics (const Vector<Int>& axes,
320  const String& mask,
321  const ValueHolder& minMaxValues,
322  Bool exclude = False,
323  Bool robust = False) const;
324 
325  // Regrid the image on the given axes to the given coordinate system.
326  // The output is stored in the given file; it no file name is given a
327  // temporary image is made.
328  // If the output shape is empty, the old shape is used.
329  // <src>replicate=True</src> means replication rather than regridding.
330  ImageProxy regrid (const Vector<Int>& axes = Vector<Int>(),
331  const String& outfile = String(),
332  Bool overwriteOutFile = True,
333  const IPosition& outShape = IPosition(),
334  const Record& coordSys = Record(),
335  const String& method = "linear",
336  Int decimate = 10,
337  Bool replicate = False,
338  Bool doRefChange = True,
339  Bool forceRegrid = False);
340 
341  // Check and adjust blc, trc, or inc using the shape.
342  // <group>
343  static IPosition adjustBlc (const IPosition& blc, const IPosition& shp);
344  static IPosition adjustTrc (const IPosition& trc, const IPosition& shp);
345  static IPosition adjustInc (const IPosition& inc, const IPosition& shp);
346  // </group>
347 
348 
349  /*
350 
351  ImageProxy rotate(const String& outfile,
352  const IPosition& shape,
353  const Quantity& pa, Record& region,
354  const String& mask,
355  const String& method = "cubic",
356  Int decimate = 0,
357  Bool replicate = False,
358  Bool dropdeg = False,
359  Bool overwrite = False);
360 
361 
362  Bool setbrightnessunit (const String& unit);
363 
364  Bool setcoordsys (const Record& csys);
365 
366  Bool sethistory (const String& origin, const Vector<String>& history);
367 
368  Bool setmiscinfo (const Record& info);
369 
370  ImageProxy subimage(const String& outfile, Record& region,
371  const String& mask,
372  Bool dropdeg = False,
373  Bool overwrite = False,
374  Bool list = True);
375 
376  Vector<Double> topixel(Record& value);
377 
378  */
379 
381  { return itsLattice.operator->(); }
382 
383  private:
384  // Form an ImageProxy object from an existing image object.
385  explicit ImageProxy (LatticeBase*);
386 
387  // Throw an exception if the object is null.
388  void checkNull() const;
389 
390  // Make an image from an array or shape.
391  template<typename T>
392  void makeImage (const Array<T>& array, const Array<Bool>& mask,
393  const IPosition& shape, const Record& coordinates,
394  const String& fileName, Bool asHDF5,
395  const String& maskName,
396  const IPosition& tileShape);
397 
398  // Form a concatenated image.
399  // <group>
400  void concatImages (const std::vector<ImageProxy>& images, Int axis);
401  void concatImagesFloat (const std::vector<ImageProxy>& images, Int axis);
402  void concatImagesDouble (const std::vector<ImageProxy>& images, Int axis);
403  void concatImagesComplex (const std::vector<ImageProxy>& images, Int axis);
404  void concatImagesDComplex (const std::vector<ImageProxy>& images, Int axis);
405  // </group>
406 
407  // Setup the pointers for the various image data types.
408  void setup();
409 
410  // Setup the pointers for the various image data types.
411  // It takes over the lattice pointer.
412  void setup (LatticeBase* lattice);
413 
414  // Centre all axes except the Stokes one.
415  void centreRefPix (CoordinateSystem& cSys,
416  const IPosition& shape) const;
417 
418  // Put the mask and create it if needed.
419  template<typename T>
420  void doPutMask (ImageInterface<T>& image,
421  const ValueHolder& value,
422  const IPosition& blc,
423  const IPosition& inc);
424 
425  // Copy the image to an image (PagedImage or HDF5Image) with the given name.
426  // A new tile shape can be given.
427  // If the image is masked, the mask can be copied as well.
428  template <typename T>
429  void saveImage (const String& fileName,
430  Bool hdf5, Bool copyMask,
431  const String& newMaskName,
432  const IPosition& newTileShape,
433  const ImageInterface<T>& image) const;
434 
435  // Form a tiled shape from the current shape and a possible new tile shape.
436  TiledShape makeTiledShape (const IPosition& newTileShape,
437  const IPosition& shape,
438  const IPosition& oldTileShape=IPosition()) const;
439 
440  // Calculate the statistics.
441  template<typename T>
443  const Vector<Int>& axes,
444  const String& mask,
445  const ValueHolder& minMaxValues,
446  Bool exclude,
447  Bool robust) const;
448 
449  // Do the actual regridding.
450  template<typename T>
451  ImageProxy doRegrid (const ImageInterface<T>& image,
452  const Vector<Int>& axes,
453  const String& outfile,
454  const IPosition& shape,
455  const Record& coordSys,
456  const String& method,
457  Int decimate,
458  Bool replicate,
459  Bool doRefChange,
460  Bool force);
461 
462  // Make a coordinate system from the Record.
463  // The cylindrical fix is applied if needed.
464  CoordinateSystem makeCoordinateSystem (const Record& coordinates,
465  const IPosition& shape) const;
466 
467 
468  //# Data members.
469  //# itsLattice is the real data; the pointers are for type convenience only.
477  };
478 
479 } // end namespace casacore
480 
481 #endif
A Vector of integers, for indexing into Array&lt;T&gt; objects.
Definition: IPosition.h:118
ImageInterface< Double > * itsImageDouble
Definition: ImageProxy.h:472
const ImageInfo & imageInfoObject() const
A 1-D Specialization of the Array class.
Definition: ArrayFwd.h:9
void checkNull() const
Throw an exception if the object is null.
uInt ndim() const
Get the dimensionality of the image.
int Int
Definition: aipstype.h:50
DataType type() const
static LatticeBase * openImage(const String &name, const String &mask=String(), const std::vector< ImageProxy > &images=std::vector< ImageProxy >())
Open the image (which can also be an expression).
String unit() const
Get the brightness unit.
static LatticeBase * openImageOrExpr(const String &str, const MaskSpecifier &, const Block< LatticeExprNode > &nodes)
Open an image in the file/table with the given name.
ImageAttrHandler * itsAttrHandler
Definition: ImageProxy.h:476
LatticeExprNode mask(const LatticeExprNode &expr)
This function returns the mask of the given expression.
Vector< String > attrNames(const String &groupName) const
Get the names of all attributes in a group.
TableExprNode array(const TableExprNode &values, const TableExprNodeSet &shape)
Create an array of the given shape and fill it with the values.
Definition: ExprNode.h:1929
Record imageInfo() const
Get the image info.
ValueHolder getData(const IPosition &blc, const IPosition &trc, const IPosition &inc)
Get a chunk of data.
ImageProxy()
Default constructor is needed for Boost-Python.
void toFits(const String &fitsfile, Bool overwrite=True, Bool velocity=True, Bool optical=True, Int bitpix=-32, Double minpix=1, Double maxpix=-1) const
Write the image in FITS format.
Vector< Double > toPixel(const Vector< Double > &world, Bool reverseAxes)
Convert a world coordinate to pixel coordinate.
ImageProxy subImage2(const IPosition &blc, const IPosition &trc, const IPosition &inc, Bool dropDegenerate, Bool preserveAxesOrder)
Same with a new function name for backward compatibility with old pyrap.
const CoordinateSystem * itsCoordSys
Definition: ImageProxy.h:475
ImageProxy subImage(const IPosition &blc, const IPosition &trc, const IPosition &inc, Bool dropDegenerate=True)
Form a new (virtual) image being a subset of the image.
static IPosition adjustInc(const IPosition &inc, const IPosition &shp)
A non-templated, abstract base class for array-like objects.
Definition: LatticeBase.h:80
LatticeBase * getLattice() const
Definition: ImageProxy.h:380
void doPutMask(ImageInterface< T > &image, const ValueHolder &value, const IPosition &blc, const IPosition &inc)
Put the mask and create it if needed.
ImageProxy & operator=(const ImageProxy &)
Assignment (reference semantics).
void putAttr(const String &groupName, const String &attrName, uInt rownr, const ValueHolder &value, const Vector< String > &units, const Vector< String > &measInfo)
Put the value, unit, and measinfo of an attribute in a group row.
void createAttrGroup(const String &groupName)
Create a new attribute group.
ImageInterface< DComplex > * itsImageDComplex
Definition: ImageProxy.h:474
void unlock()
Release the lock acquired by lock().
Abstract base class for an image attributes handler.
ImageProxy doRegrid(const ImageInterface< T > &image, const Vector< Int > &axes, const String &outfile, const IPosition &shape, const Record &coordSys, const String &method, Int decimate, Bool replicate, Bool doRefChange, Bool force)
Do the actual regridding.
static IPosition adjustBlc(const IPosition &blc, const IPosition &shp)
Check and adjust blc, trc, or inc using the shape.
String name(Bool stripPath=False) const
Get the name of the image.
Record getAttrRow(const String &groupName, uInt rownr) const
Get all attributes in a group row.
String dataType() const
Get the data type of the image.
Vector< String > getAttrMeas(const String &groupName, const String &attrName) const
Get the measinfo of an attribute in a group.
LatticeExprNode makeNode() const
Turn the ImageProxy into a LatticeExprNode.
Vector< Double > toWorld(const Vector< Double > &pixel, Bool reverseAxes)
Convert a pixel coordinate to world coordinate.
Record makeStatistics(const ImageInterface< T > &image, const Vector< Int > &axes, const String &mask, const ValueHolder &minMaxValues, Bool exclude, Bool robust) const
Calculate the statistics.
Define the shape and tile shape.
Definition: TiledShape.h:96
void lock(Bool writeLock=False, Int nattempts=0)
Try to acquire a read or write lock.
Record statistics(const Vector< Int > &axes, const String &mask, const ValueHolder &minMaxValues, Bool exclude=False, Bool robust=False) const
Return the statistics for the given axes.
Referenced counted pointer for constant data.
Definition: CountedPtr.h:80
Vector< String > attrGroupNames() const
Get the names of the attribute groups.
A base class for astronomical images.
Record coordSys() const
Get the coordinate system.
String imageType() const
Get the image type (PagedImage, HDF5Image, etc.)
Class to specify which mask to use in an image.
Definition: MaskSpecifier.h:69
void putMask(const ValueHolder &value, const IPosition &blc, const IPosition &inc)
Put a chunk of the mask.
Vector< String > history() const
Get the history.
double Double
Definition: aipstype.h:55
ImageProxy regrid(const Vector< Int > &axes=Vector< Int >(), const String &outfile=String(), Bool overwriteOutFile=True, const IPosition &outShape=IPosition(), const Record &coordSys=Record(), const String &method="linear", Int decimate=10, Bool replicate=False, Bool doRefChange=True, Bool forceRegrid=False)
Regrid the image on the given axes to the given coordinate system.
A holder for a value of any basic Casacore data type.
Definition: ValueHolder.h:68
Bool hasLock(Bool writeLock=False)
Does the image have a read or write lock?
uInt attrNrows(const String &groupName) const
Get the number of rows in an attribute group.
ValueHolder getMask(const IPosition &blc, const IPosition &trc, const IPosition &inc)
Get a chunk of the mask.
uInt size() const
Get the size of the image (nr of pixels).
static IPosition adjustTrc(const IPosition &trc, const IPosition &shp)
IPosition shape() const
Get the shape of the image.
A hierarchical collection of named fields of various types.
Definition: Record.h:180
void concatImagesFloat(const std::vector< ImageProxy > &images, Int axis)
bool Bool
Define the standard types used by Casacore.
Definition: aipstype.h:42
void makeImage(const Array< T > &array, const Array< Bool > &mask, const IPosition &shape, const Record &coordinates, const String &fileName, Bool asHDF5, const String &maskName, const IPosition &tileShape)
Make an image from an array or shape.
void saveAs(const String &fileName, Bool overwrite=True, Bool hdf5=False, Bool copyMask=True, const String &newMaskName=String(), const IPosition &newTileShape=IPosition()) const
Write the image to an image file with the given name.
TiledShape makeTiledShape(const IPosition &newTileShape, const IPosition &shape, const IPosition &oldTileShape=IPosition()) const
Form a tiled shape from the current shape and a possible new tile shape.
const Bool False
Definition: aipstype.h:44
void putData(const ValueHolder &, const IPosition &blc, const IPosition &inc)
Put a chunk of data.
simple 1-D array
Definition: Allocator.h:210
void saveImage(const String &fileName, Bool hdf5, Bool copyMask, const String &newMaskName, const IPosition &newTileShape, const ImageInterface< T > &image) const
Copy the image to an image (PagedImage or HDF5Image) with the given name.
Bool isPersistent() const
Is the image persistent or temporary.
Bridging class to allow C++ expressions involving lattices.
void concatImagesDouble(const std::vector< ImageProxy > &images, Int axis)
ImageInterface< Complex > * itsImageComplex
Definition: ImageProxy.h:473
String: the storage and methods of handling collections of characters.
Definition: String.h:225
CountedPtr< LatticeBase > itsLattice
Definition: ImageProxy.h:470
void concatImagesDComplex(const std::vector< ImageProxy > &images, Int axis)
void setup()
Setup the pointers for the various image data types.
ValueHolder getAttr(const String &groupName, const String &attrName, uInt rownr) const
Get the value of an attribute in a group row.
CoordinateSystem makeCoordinateSystem(const Record &coordinates, const IPosition &shape) const
Make a coordinate system from the Record.
void concatImages(const std::vector< ImageProxy > &images, Int axis)
Form a concatenated image.
ImageInterface< Float > * itsImageFloat
Definition: ImageProxy.h:471
const CoordinateSystem & coordSysObject() const
Vector< String > getAttrUnit(const String &groupName, const String &attrName) const
Get the unit(s) of an attribute in a group.
Miscellaneous information related to an image.
Definition: ImageInfo.h:92
const Bool True
Definition: aipstype.h:43
void close()
Close the image by setting all pointers to 0.
void concatImagesComplex(const std::vector< ImageProxy > &images, Int axis)
Interconvert pixel and world coordinates.
LatticeExprNode value(const LatticeExprNode &expr)
This function returns the value of the expression without a mask.
void centreRefPix(CoordinateSystem &cSys, const IPosition &shape) const
Centre all axes except the Stokes one.
unsigned int uInt
Definition: aipstype.h:51
Record miscInfo() const
Get the miscellaneous info.