WCRegion.h
Classes
- WCRegion -- Base class to define world coordinate regions of interest in an image. (full description)
Interface
- Public Members
- WCRegion()
- WCRegion (const WCRegion& other)
- virtual ~WCRegion()
- virtual Bool operator==(const WCRegion& other) const
- Bool operator!=(const WCRegion& other) const
- virtual WCRegion* cloneRegion() const = 0
- virtual String type() const = 0
- virtual uInt ndim() const
- const Record& getAxesDesc() const
- const Record& getAxisDesc (uInt axis) const
- Int axisNr (const Record& desc, const Record& axesDesc) const
- Bool isAxisDescEqual (const Record& desc1, const Record& desc2) const
- virtual Bool canExtend() const
- const String& comment() const
- void setComment (const String& comment)
- virtual LCRegion* toLCRegion (const CoordinateSystem& cSys, const IPosition& shape) const
- LCRegion* toLCRegionAxes (const CoordinateSystem& cSys, const IPosition& shape, const IPosition& pixelAxesMap, const IPosition& outOrder) const
- virtual TableRecord toRecord(const String& tableName) const = 0
- static WCRegion* fromRecord (const TableRecord& rec, const String& tableName)
- void defineRecordFields (RecordInterface& record, const String& className) const
- Protected Members
- WCRegion& operator= (const WCRegion& other)
- void addAxisDesc (const Record& axisDesc)
- Record makeAxisDesc (const CoordinateSystem& cSys, uInt pixelAxis) const
- Record makeAxesDesc (const CoordinateSystem& cSys) const
- virtual LCRegion* doToLCRegion (const CoordinateSystem& cSys, const IPosition& shape, const IPosition& pixelAxesMap, const IPosition& extendAxes) const = 0
- void makeWorldAbsolute (Vector<Double>& world, const Vector<Int>& absRel, const CoordinateSystem& cSys, const IPosition& shape) const
Prerequisite
Synopsis
WCRegion is the base class for world coordinate regions.
The axes in a WCRegion have names (e.g. RA, DEC, FREQ) and
carry sometimes an associated reference frame with it.
An WCRegion object is converted to the appropriate
LCRegion object when they
are used to take a subset from an image.
LCRegion's are pixel based and are
used to access the correct pixels in the image.
The conversion has the following rules:
- All axes of the region must be axes in the image.
- An image axis does not have to be an axis in the region.
Thus the image can have a higher dimensionality than the region.
If that is the case, the region is auto-extended to the image's
dimensionality by using the full range for those axes.
- The order of the axes in region and image do not have to
be the same. They get reordered as needed.
Example
Motivation
User should be able to specify their regions in world coordinates
as well as lattice coordinates.
Member Description
WCRegion (const WCRegion& other)
Copy constructor (copy semantics).
Destructor
virtual Bool operator==(const WCRegion& other) const
Bool operator!=(const WCRegion& other) const
Comparison
virtual WCRegion* cloneRegion() const = 0
Clone a WCRegion object.
virtual String type() const = 0
Return region type.
Just returns the class name of the derived class.
virtual uInt ndim() const
Get the dimensionality (i.e. the number of axes).
Note that usually all axes have a description, but in some cases
(e.g. WCLELMask) that may not be the case.
The default implementation returns the number of axes in the
axes description.
Get the description of all axes.
Get the description of the given axis.
It is a record containing some fields describing the axis.
Int axisNr (const Record& desc, const Record& axesDesc) const
Return the axis number of the description of an axis in the full
axes description.
-1 is returned if not found.
Are both axis descriptions equal?
virtual Bool canExtend() const
Can the region extend itself?
By default it cannot.
Get or set the comment.
Convert to an LCRegion using the given new coordinate system and shape.
An exception is thrown if the region's dimensionality is more
than the length of the shape vector or if an axis in the region
is unknown in the new coordinate system..
When less, the default implementation extends the region over the
remaining axes.
If the region does not need to have coordinates (like WCLELMask)
the function has to be overridden.
Convert to an LCRegion using the given coordinate system and shape.
This function is meant for internal use by WCCompound objects.
pixelAxesMap(i) is the axis in cSys and shape for region axis i.
outOrder(i) is the axis in the output LCRegion for region axis i.
The length of pixelAxesMap and outOrder is the dimensionality of
the output LCRegion. It can be more than the dimensionality of this
WCRegion object. In that case the region gets extended along the
latter axes. If the region cannot extend itself, this function
will create an LCExtension object to extend the region.
Note that initially pixelAxisMap and outOrder are the same,
but when called for regions in compound regions they may start
to differ.
Convert the (derived) object to a record.
The record can be used to make the object persistent.
The tableName argument can be used by derived
classes (e.g. LCPagedMask) to put very large objects.
Convert correct object from a record.
void defineRecordFields (RecordInterface& record, const String& className) const
Define the type and class name in the record.
WCRegion& operator= (const WCRegion& other)
Assignment (copy semantics) makes only sense for a derived class.
Add an axis with its description.
An exception is thrown if the axis already exists in this region.
Make a description of a pixel axis in the coordinate system.
Make a description of all pixel axes in the coordinate system
(in pixel axes order).
Convert to an LCRegion using the given coordinate system and shape.
pixelAxesMap(i) is the axis in cSys and shape for region axis i.
outOrder(i) is the axis in the output LCRegion for region axis i.
They always have the same length.
If the region can extend itself, the length of pixelAxesMap and
outOrder can be more than the dimensionality of the region.
The latter axes in them are the extension axes.
Convert relative to absolute world as needed