CurvedLattice2D.h
Classes
- CurvedLattice2D -- A lattice crosscut based on a curve in a plane. (full description)
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)
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
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)
Destructor, does nothing
CurvedLattice2D<T>& operator=(const CurvedLattice2D<T>& other)
Assignment (reference semantics)
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.
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.
Get a pointer the region/mask object.
It returns 0.
Returns the shape of the lattice.
virtual String name (Bool stripPath=False) const
Return the name of the parent lattice.
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.
Get a section of the mask.
Get the best cursor shape.
void makeMapping (uInt axis1, uInt axis2, Int curveAxis)
Make the AxesMapping object to map input to output axes.