casa  $Rev:20696$
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Protected Member Functions | Private Attributes
casa::WCRegion Class Reference

Base class to define world coordinate regions of interest in an image. More...

#include <WCRegion.h>

Inheritance diagram for casa::WCRegion:
casa::QtWCBox casa::WCBox casa::WCCompound casa::WCEllipsoid casa::WCLELMask casa::WCPolygon casa::WCComplement casa::WCConcatenation casa::WCDifference casa::WCExtension casa::WCIntersection casa::WCUnion

List of all members.

Public Member Functions

 WCRegion ()
 WCRegion (const WCRegion &other)
 Copy constructor (copy semantics).
virtual ~WCRegion ()
 Destructor.
virtual Bool operator== (const WCRegion &other) const
 Comparison.
Bool operator!= (const WCRegion &other) const
virtual WCRegioncloneRegion () const =0
 Clone a WCRegion object.
virtual String type () const =0
 Return region type.
virtual uInt ndim () const
 Get the dimensionality (i.e.
const RecordgetAxesDesc () const
 Get the description of all axes.
const RecordgetAxisDesc (uInt axis) const
 Get the description of the given 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.
Bool isAxisDescEqual (const Record &desc1, const Record &desc2) const
 Are both axis descriptions equal?
virtual Bool canExtend () const
 Can the region extend itself? By default it cannot.
const Stringcomment () const
 Get or set the comment.
void setComment (const String &comment)
virtual LCRegiontoLCRegion (const CoordinateSystem &cSys, const IPosition &shape) const
 Convert to an LCRegion using the given new coordinate system and shape.
LCRegiontoLCRegionAxes (const CoordinateSystem &cSys, const IPosition &shape, const IPosition &pixelAxesMap, const IPosition &outOrder) const
 Convert to an LCRegion using the given coordinate system and shape.
virtual TableRecord toRecord (const String &tableName) const =0
 Convert the (derived) object to a record.
void defineRecordFields (RecordInterface &record, const String &className) const
 Define the type and class name in the record.

Static Public Member Functions

static WCRegionfromRecord (const TableRecord &rec, const String &tableName)
 Convert correct object from a record.

Protected Member Functions

WCRegionoperator= (const WCRegion &other)
 Assignment (copy semantics) makes only sense for a derived class.
void addAxisDesc (const Record &axisDesc)
 Add an axis with its description.
Record makeAxisDesc (const CoordinateSystem &cSys, uInt pixelAxis) const
 Make a description of a pixel axis in the coordinate system.
Record makeAxesDesc (const CoordinateSystem &cSys) const
 Make a description of all pixel axes in the coordinate system (in pixel axes order).
virtual LCRegiondoToLCRegion (const CoordinateSystem &cSys, const IPosition &shape, const IPosition &pixelAxesMap, const IPosition &extendAxes) const =0
 Convert to an LCRegion using the given coordinate system and shape.
void makeWorldAbsolute (Vector< Double > &world, const Vector< Int > &absRel, const CoordinateSystem &cSys, const IPosition &shape) const
 Convert relative to absolute world as needed.
void checkAxes (const IPosition &pixelAxes, const CoordinateSystem &cSys, const Vector< String > &quantityUnits) const

Static Protected Member Functions

static void unitInit ()
static void convertPixel (Double &pixel, const Double &value, const String &unit, const Int absRel, const Double refPix, const Int shape)

Private Attributes

String itsComment
Record itsAxesDesc

Detailed Description

Base class to define world coordinate regions of interest in an image.

Intended use:

Public interface

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:

  1. All axes of the region must be axes in the image.
  2. 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.
  3. 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.

Definition at line 94 of file WCRegion.h.


Constructor & Destructor Documentation

casa::WCRegion::WCRegion ( const WCRegion other)

Copy constructor (copy semantics).

virtual casa::WCRegion::~WCRegion ( ) [virtual]

Destructor.


Member Function Documentation

void casa::WCRegion::addAxisDesc ( const Record axisDesc) [protected]

Add an axis with its description.

An exception is thrown if the axis already exists in this region.

Int casa::WCRegion::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.

virtual Bool casa::WCRegion::canExtend ( ) const [virtual]

Can the region extend itself? By default it cannot.

Reimplemented in casa::WCBox, casa::WCPolygon, casa::WCLELMask, casa::WCExtension, casa::WCEllipsoid, and casa::QtWCBox.

void casa::WCRegion::checkAxes ( const IPosition pixelAxes,
const CoordinateSystem cSys,
const Vector< String > &  quantityUnits 
) const [protected]
virtual WCRegion* casa::WCRegion::cloneRegion ( ) const [pure virtual]
const String & casa::WCRegion::comment ( ) const [inline]

Get or set the comment.

Definition at line 251 of file WCRegion.h.

References itsComment.

Referenced by setComment().

static void casa::WCRegion::convertPixel ( Double pixel,
const Double value,
const String unit,
const Int  absRel,
const Double  refPix,
const Int  shape 
) [static, protected]
void casa::WCRegion::defineRecordFields ( RecordInterface record,
const String className 
) const

Define the type and class name in the record.

virtual LCRegion* casa::WCRegion::doToLCRegion ( const CoordinateSystem cSys,
const IPosition shape,
const IPosition pixelAxesMap,
const IPosition extendAxes 
) const [protected, pure virtual]

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.

Implemented in casa::WCBox, casa::WCPolygon, casa::WCConcatenation, casa::WCLELMask, casa::WCUnion, casa::WCIntersection, casa::WCEllipsoid, casa::WCDifference, casa::WCExtension, casa::WCComplement, and casa::QtWCBox.

static WCRegion* casa::WCRegion::fromRecord ( const TableRecord rec,
const String tableName 
) [static]
const Record & casa::WCRegion::getAxesDesc ( ) const [inline]

Get the description of all axes.

Definition at line 259 of file WCRegion.h.

References itsAxesDesc.

const Record& casa::WCRegion::getAxisDesc ( uInt  axis) const

Get the description of the given axis.

It is a record containing some fields describing the axis.

Bool casa::WCRegion::isAxisDescEqual ( const Record desc1,
const Record desc2 
) const

Are both axis descriptions equal?

Record casa::WCRegion::makeAxesDesc ( const CoordinateSystem cSys) const [protected]

Make a description of all pixel axes in the coordinate system (in pixel axes order).

Record casa::WCRegion::makeAxisDesc ( const CoordinateSystem cSys,
uInt  pixelAxis 
) const [protected]

Make a description of a pixel axis in the coordinate system.

void casa::WCRegion::makeWorldAbsolute ( Vector< Double > &  world,
const Vector< Int > &  absRel,
const CoordinateSystem cSys,
const IPosition shape 
) const [protected]

Convert relative to absolute world as needed.

virtual uInt casa::WCRegion::ndim ( ) const [virtual]

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.

Reimplemented in casa::WCLELMask.

Bool casa::WCRegion::operator!= ( const WCRegion other) const [inline]

Definition at line 247 of file WCRegion.h.

WCRegion& casa::WCRegion::operator= ( const WCRegion other) [protected]

Assignment (copy semantics) makes only sense for a derived class.

virtual Bool casa::WCRegion::operator== ( const WCRegion other) const [virtual]
void casa::WCRegion::setComment ( const String comment) [inline]

Definition at line 255 of file WCRegion.h.

References comment(), and itsComment.

virtual LCRegion* casa::WCRegion::toLCRegion ( const CoordinateSystem cSys,
const IPosition shape 
) const [virtual]

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.

Reimplemented in casa::WCLELMask.

LCRegion* casa::WCRegion::toLCRegionAxes ( const CoordinateSystem cSys,
const IPosition shape,
const IPosition pixelAxesMap,
const IPosition outOrder 
) const

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.

virtual TableRecord casa::WCRegion::toRecord ( const String tableName) const [pure virtual]

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.

Implemented in casa::WCBox, casa::WCPolygon, casa::WCLELMask, casa::WCConcatenation, casa::WCUnion, casa::WCIntersection, casa::WCEllipsoid, casa::WCDifference, casa::WCExtension, casa::QtWCBox, and casa::WCComplement.

virtual String casa::WCRegion::type ( ) const [pure virtual]
static void casa::WCRegion::unitInit ( ) [static, protected]

Reimplemented in casa::QtWCBox.


Member Data Documentation

Definition at line 243 of file WCRegion.h.

Referenced by getAxesDesc().

Definition at line 242 of file WCRegion.h.

Referenced by comment(), and setComment().


The documentation for this class was generated from the following file: