CurvedLattice2D.h

Classes

CurvedLattice2D -- A lattice crosscut based on a curve in a plane. (full description)

class CurvedLattice2D: public MaskedLattice<T>

Interface

Public Members
CurvedLattice2D()
CurvedLattice2D (const MaskedLattice<T>&, const CLInterpolator2D<T>&, const CLerpolator2D&, uInt axis1, uInt axis2, Int curveAxis=-1)
CurvedLattice2D(const CurvedLattice2D<T>& other)
virtual ~CurvedLattice2D()
CurvedLattice2D<T>& operator=(const CurvedLattice2D<T>& other)
virtual MaskedLattice<T>* cloneML() const
virtual Bool isMasked() const
virtual Bool isPaged() const
virtual Bool isWritable() const
virtual Bool lock (FileLocker::LockType, uInt nattempts)
virtual void unlock()
virtual Bool hasLock (FileLocker::LockType) const
virtual void resync()
virtual void flush()
virtual void tempClose()
virtual void reopen()
virtual const LatticeRegion* getRegionPtr() const
virtual IPosition shape() const
virtual String name (Bool stripPath=False) const
virtual uInt advisedMaxPixels() const
virtual Bool ok() const
virtual Bool doGetSlice (Array<T>& buffer, const Slicer& section)
virtual void doPutSlice (const Array<T>& sourceBuffer, const IPosition& where, const IPosition& stride)
virtual Bool doGetMaskSlice (Array<Bool>& buffer, const Slicer& section)
virtual IPosition doNiceCursorShape (uInt maxPixels) const
Private Members
void makeMapping (uInt axis1, uInt axis2, Int curveAxis)

Description

Review Status

Programs:
Tests:

Prerequisite

Synopsis

Class CurvedImage2D can be used to make a crosscut through an image with a dimensionality >= 2. The crosscut is based on a curve defined by a PixelCurve1D object. The curve can be any 1-dim function (e.g. straight line, spline) supported by the Functionals module. The curve must be in one of the main planes of the image as defined by the axes arguments in the constructor.
See class CurvedImage2D for a more detailed description.

Example

See example in CurvedImage2D.

Motivation

Users like to view arbitrary image crosscuts.

Member Description

CurvedLattice2D()

Default constructor

CurvedLattice2D (const MaskedLattice<T>&, const CLInterpolator2D<T>&, const CLerpolator2D&, uInt axis1, uInt axis2, Int curveAxis=-1)

Take a curved slice from the given MaskedLattice. For example, define a spline in the RA-DEC plane and extend it in the FREQ direction. The result is a 2D lattice with axes FREQ and 'spline'.
The PixelCurve1D object defines the curve in one of the planes of the lattice. The arguments axis1 and axis2 define the plane the curve is in. The CLInterpolator2D object defines the interpolation scheme for pixels that are not on grid points. An example is CLIPNearest2D which takes the nearest neighbour. The dimensionality of the CurvedLattice2D is one less than the dimensionality of the given lattice. Two axes (axis1 and axis2) are replaced by the new axis representing the curve. The argument curveAxis defines the axis number of the new axis. It defaults to the last axis. An exception is thrown if the dimensionality of the input lattice is < 2 or if the given axes numbers are too high.

CurvedLattice2D(const CurvedLattice2D<T>& other)

Copy constructor (reference semantics)

virtual ~CurvedLattice2D()

Destructor, does nothing

CurvedLattice2D<T>& operator=(const CurvedLattice2D<T>& other)

Assignment (reference semantics)

virtual MaskedLattice<T>* cloneML() const

Make a copy of the object (reference semantics).

virtual Bool isMasked() const

Is the lattice masked? It is if its parent lattice is masked.

virtual Bool isPaged() const

Is the lattice paged to disk?

virtual Bool isWritable() const

The lattice is not writable.

virtual Bool lock (FileLocker::LockType, uInt nattempts)
virtual void unlock()
virtual Bool hasLock (FileLocker::LockType) const

Handle ocking of the lattice which is delegated to its parent.
It is strongly recommended to use class LatticeLocker to handle lattice locking. It also contains a more detailed explanation of the locking process.

virtual void resync()

Resynchronize the Lattice object with the lattice file. This function is only useful if no read-locking is used, ie. if the table lock option is UserNoReadLocking or AutoNoReadLocking. In that cases the table system does not acquire a read-lock, thus does not synchronize itself automatically.

virtual void flush()

Flush the data.

virtual void tempClose()

Close the Lattice temporarily (if it is paged to disk). It'll be reopened automatically when needed or when reopen is called explicitly.

virtual void reopen()

If needed, reopen a temporarily closed Lattice.

virtual const LatticeRegion* getRegionPtr() const

Get a pointer the region/mask object. It returns 0.

virtual IPosition shape() const

Returns the shape of the lattice.

virtual String name (Bool stripPath=False) const

Return the name of the parent lattice.

virtual uInt advisedMaxPixels() const

This function returns the recommended maximum number of pixels to include in the cursor of an iterator.

virtual Bool ok() const

Check class internals - used for debugging. Should always return True

virtual Bool doGetSlice (Array<T>& buffer, const Slicer& section)

Do the actual getting of an array of values.

virtual void doPutSlice (const Array<T>& sourceBuffer, const IPosition& where, const IPosition& stride)

Do the actual getting of an array of values.

virtual Bool doGetMaskSlice (Array<Bool>& buffer, const Slicer& section)

Get a section of the mask.

virtual IPosition doNiceCursorShape (uInt maxPixels) const

Get the best cursor shape.

void makeMapping (uInt axis1, uInt axis2, Int curveAxis)

Make the AxesMapping object to map input to output axes.