RasterFileDescriptor.h

Go to the documentation of this file.
00001 /*
00002  * The information in this file is
00003  * Copyright(c) 2007 Ball Aerospace & Technologies Corporation
00004  * and is subject to the terms and conditions of the
00005  * GNU Lesser General Public License Version 2.1
00006  * The license text is available from   
00007  * http://www.gnu.org/licenses/lgpl.html
00008  */
00009 
00010 #ifndef RASTERDATAFILEDESCRIPTOR_H
00011 #define RASTERDATAFILEDESCRIPTOR_H
00012 
00013 #include "FileDescriptor.h"
00014 #include "DimensionDescriptor.h"
00015 #include "GcpList.h"
00016 
00017 #include <list>
00018 #include <vector>
00019 
00020 class Units;
00021 
00022 /**
00023  *  Describes how a raster data element is stored in a file on disk.
00024  *
00025  *  In addition to the information stored in the FileDescriptor base class,
00026  *  this class contains information pertinent to how raster data elements
00027  *  are stored in files on disk.
00028  *
00029  * This subclass of Subject will notify upon the following conditions:
00030  *  - The following methods are called: setHeaderBytes(), setTrailerBytes(),
00031  *    setPrelineBytes(), setPostlineBytes(), setPrebandBytes(),
00032  *    setPostbandBytes(), setBitsPerElement(), setInterleaveFormat(),
00033  *    setRows(), setColumns(), setBands(), setXPixelSize(), setYPixelSize(),
00034  *    setUnits(), setGcps(), setBandFiles()
00035  *  - Everything else documented in FileDescriptor.
00036  *
00037  *  @see        RasterElement, RasterDataDescriptor
00038  */
00039 class RasterFileDescriptor : public FileDescriptor
00040 {
00041 public:
00042    /**
00043     *  Emitted when the rows change with
00044     *  boost::any<std::vector<\link DimensionDescriptor\endlink> > containing
00045     *  the new rows.
00046     *
00047     *  @see     setRows()
00048     */
00049    SIGNAL_METHOD(RasterFileDescriptor, RowsChanged)
00050 
00051    /**
00052     *  Emitted when the columns change with
00053     *  boost::any<std::vector<\link DimensionDescriptor\endlink> > containing
00054     *  the new columns.
00055     *
00056     *  @see     setColumns()
00057     */
00058    SIGNAL_METHOD(RasterFileDescriptor, ColumnsChanged)
00059 
00060    /**
00061     *  Emitted when the bands change with
00062     *  boost::any<std::vector<\link DimensionDescriptor\endlink> > containing
00063     *  the new bands.
00064     *
00065     *  @see     setBands()
00066     */
00067    SIGNAL_METHOD(RasterFileDescriptor, BandsChanged)
00068 
00069    /**
00070     *  Emitted when the number of bits per element changes with
00071     *  boost::any<unsigned int> containing the new number of bits per element.
00072     *
00073     *  @see     setBitsPerElement()
00074     */
00075    SIGNAL_METHOD(RasterFileDescriptor, BitsPerElementChanged)
00076 
00077    /**
00078     *  Emitted when the number of header bytes changes with
00079     *  boost::any<unsigned int> containing the new number of header bytes.
00080     *
00081     *  @see     setHeaderBytes()
00082     */
00083    SIGNAL_METHOD(RasterFileDescriptor, HeaderBytesChanged)
00084 
00085    /**
00086     *  Emitted when the number of trailer bytes changes with
00087     *  boost::any<unsigned int> containing the new number of trailer bytes.
00088     *
00089     *  @see     setTrailerBytes()
00090     */
00091    SIGNAL_METHOD(RasterFileDescriptor, TrailerBytesChanged)
00092 
00093    /**
00094     *  Emitted when the number of preline bytes changes with
00095     *  boost::any<unsigned int> containing the new number of preline bytes.
00096     *
00097     *  @see     setPrelineBytes()
00098     */
00099    SIGNAL_METHOD(RasterFileDescriptor, PrelineBytesChanged)
00100 
00101    /**
00102     *  Emitted when the number of postline bytes changes with
00103     *  boost::any<unsigned int> containing the new number of postline bytes.
00104     *
00105     *  @see     setPostlineBytes()
00106     */
00107    SIGNAL_METHOD(RasterFileDescriptor, PostlineBytesChanged)
00108 
00109    /**
00110     *  Emitted when the number of preband bytes changes with
00111     *  boost::any<unsigned int> containing the new number of preband bytes.
00112     *
00113     *  @see     setPrebandBytes()
00114     */
00115    SIGNAL_METHOD(RasterFileDescriptor, PrebandBytesChanged)
00116 
00117    /**
00118     *  Emitted when the number of postband bytes changes with
00119     *  boost::any<unsigned int> containing the new number of postband bytes.
00120     *
00121     *  @see     setPostbandBytes()
00122     */
00123    SIGNAL_METHOD(RasterFileDescriptor, PostbandBytesChanged)
00124 
00125    /**
00126     *  Emitted when the interleave format changes with
00127     *  boost::any<\link ::InterleaveFormatType InterleaveFormatType\endlink>
00128     *  containing the new interleave format.
00129     *
00130     *  @see     setInterleaveFormat()
00131     */
00132    SIGNAL_METHOD(RasterFileDescriptor, InterleaveFormatChanged)
00133 
00134    /**
00135     *  Emitted when the band files change with
00136     *  boost::any<std::vector<const \link Filename\endlink*> > containing the
00137     *  new band files.
00138     *
00139     *  @see     setBandFiles()
00140     */
00141    SIGNAL_METHOD(RasterFileDescriptor, BandFilesChanged)
00142 
00143    /**
00144     *  Emitted when the X or Y pixel size changes.
00145     *
00146     *  No value is associated with this signal.
00147     *
00148     *  @see     setXPixelSize(), setYPixelSize()
00149     */
00150    SIGNAL_METHOD(RasterFileDescriptor, PixelSizeChanged)
00151 
00152    /**
00153     *  Emitted when the GCPs change with
00154     *  boost::any<std::list<\link GcpPoint\endlink> > containing the new GCPs.
00155     *
00156     *  @see     setGcps()
00157     */
00158    SIGNAL_METHOD(RasterFileDescriptor, GcpsChanged)
00159 
00160    /**
00161     *  Sets the number of file header bytes.
00162     *
00163     *  @param   bytes
00164     *           The number of bytes allocated for header information in the
00165     *           data set file.
00166     *
00167     *  @notify  This method notifies signalHeaderBytesChanged() if the given
00168     *           number of header bytes is different than the current number of
00169     *           header bytes.
00170     */
00171    virtual void setHeaderBytes(unsigned int bytes) = 0;
00172 
00173    /**
00174     *  Returns the number of file header bytes.
00175     *
00176     *  @return  The number of bytes allocated for header information in the
00177     *           data set file.
00178     */
00179    virtual unsigned int getHeaderBytes() const = 0;
00180 
00181    /**
00182     *  Sets the number of file trailer bytes.
00183     *
00184     *  @param   bytes
00185     *           The number of bytes allocated for trailer information in the
00186     *           data set file.
00187     *
00188     *  @notify  This method notifies signalTrailerBytesChanged() if the given
00189     *           number of trailer bytes is different than the current number of
00190     *           trailer bytes.
00191     */
00192    virtual void setTrailerBytes(unsigned int bytes) = 0;
00193 
00194    /**
00195     *  Returns the number of file trailer bytes.
00196     *
00197     *  @return  The number of bytes allocated for trailer information in the
00198     *           data set file.
00199     */
00200    virtual unsigned int getTrailerBytes() const = 0;
00201 
00202    /**
00203     *  Sets the number of preline bytes.
00204     *
00205     *  Preline bytes refer to the number of bytes preceding each line of data
00206     *  values in the data file.  Preline bytes apply to files with data stored
00207     *  in any interleave format.
00208     *
00209     *  @param   bytes
00210     *           The number of bytes allocated preceding each line of data
00211     *           values in the data set file.
00212     *
00213     *  @notify  This method notifies signalPrelineBytesChanged() if the given
00214     *           number of preline bytes is different than the current number of
00215     *           preline bytes.
00216     */
00217    virtual void setPrelineBytes(unsigned int bytes) = 0;
00218 
00219    /**
00220     *  Returns the number of preline bytes.
00221     *
00222     *  Preline bytes refer to the number of bytes preceding each line of data
00223     *  values in the data file.  Preline bytes apply to files with data stored
00224     *  in any interleave format.
00225     *
00226     *  @return  The number of bytes allocated preceding each line of data
00227     *           values in the data set file.
00228     */
00229    virtual unsigned int getPrelineBytes() const = 0;
00230 
00231    /**
00232     *  Sets the number of postline bytes.
00233     *
00234     *  Postline bytes refer to the number of bytes following each line of data
00235     *  values in the data file.  Postline bytes apply to files with data stored
00236     *  in any interleave format.
00237     *
00238     *  @param   bytes
00239     *           The number of bytes allocated following each line of data
00240     *           values in the data set file.
00241     *
00242     *  @notify  This method notifies signalPostlineBytesChanged() if the given
00243     *           number of postline bytes is different than the current number of
00244     *           postline bytes.
00245     */
00246    virtual void setPostlineBytes(unsigned int bytes) = 0;
00247 
00248    /**
00249     *  Returns the number of postline bytes.
00250     *
00251     *  Postline bytes refer to the number of bytes following each line of data
00252     *  values in the data file.  Postline bytes apply to files with data stored
00253     *  in any interleave format.
00254     *
00255     *  @return  The number of bytes allocated following each line of data
00256     *           values in the data set file.
00257     */
00258    virtual unsigned int getPostlineBytes() const = 0;
00259 
00260    /**
00261     *  Sets the number of preband bytes.
00262     *
00263     *  Preband bytes refer to the number of bytes preceding each band of data
00264     *  values in the data file.  Preband bytes apply only to files with data
00265     *  stored in the BSQ interleave format with all bands stored in a single
00266     *  file.
00267     *
00268     *  @param   bytes
00269     *           The number of bytes allocated preceding each band of data
00270     *           values in the data set file.
00271     *
00272     *  @notify  This method notifies signalPrebandBytesChanged() if the given
00273     *           number of preband bytes is different than the current number of
00274     *           preband bytes.
00275     *
00276     *  @see     InterleaveFormatType
00277     */
00278    virtual void setPrebandBytes(unsigned int bytes) = 0;
00279 
00280    /**
00281     *  Returns the number of preband bytes.
00282     *
00283     *  Preband bytes refer to the number of bytes preceding each band of data
00284     *  values in the data file.  Preband bytes apply only to files with data
00285     *  stored in the BSQ interleave format with all bands stored in a single
00286     *  file.
00287     *
00288     *  @return  The number of bytes allocated preceding each band of data
00289     *           values in the data set file.
00290     *
00291     *  @see     InterleaveFormatType
00292     */
00293    virtual unsigned int getPrebandBytes() const = 0;
00294 
00295    /**
00296     *  Sets the number of postband bytes.
00297     *
00298     *  Postband bytes refer to the number of bytes following each band of data
00299     *  values in the data file.  Postband bytes apply only to files with data
00300     *  stored in the BSQ interleave format with all bands stored in a single
00301     *  file.
00302     *
00303     *  @param   bytes
00304     *           The number of bytes allocated following each band of data
00305     *           values in the data set file.
00306     *
00307     *  @notify  This method notifies signalPostbandBytesChanged() if the given
00308     *           number of postband bytes is different than the current number of
00309     *           postband bytes.
00310     *
00311     *  @see     InterleaveFormatType
00312     */
00313    virtual void setPostbandBytes(unsigned int bytes) = 0;
00314 
00315    /**
00316     *  Returns the number of postband bytes.
00317     *
00318     *  Postband bytes refer to the number of bytes following each band of data
00319     *  values in the data file.  Postband bytes apply only to files with data
00320     *  stored in the BSQ interleave format with all bands stored in a single
00321     *  file.
00322     *
00323     *  @return  The number of bytes allocated following each band of data
00324     *           values in the data set file.
00325     *
00326     *  @see     InterleaveFormatType
00327     */
00328    virtual unsigned int getPostbandBytes() const = 0;
00329 
00330    /**
00331     *  Sets the interleave format of the data.
00332     *
00333     *  @param   format
00334     *           The interleave format in which the values in the data set are
00335     *           stored in the file on disk.
00336     *
00337     *  @notify  This method notifies signalInterleaveFormatChanged() if the
00338     *           given interleave format is different than the current interleave
00339     *           format.
00340     */
00341    virtual void setInterleaveFormat(InterleaveFormatType format) = 0;
00342 
00343    /**
00344     *  Returns the interleave format of the data.
00345     *
00346     *  @return  The interleave format in which the values in the data set are
00347     *           stored in the file on disk.
00348     */
00349    virtual InterleaveFormatType getInterleaveFormat() const = 0;
00350 
00351    /**
00352     *  Sets the filenames for each band of a BSQ multiple-file data set.
00353     *
00354     *  Band files apply only to data sets stored in the BSQ interleave format
00355     *  with each band stored in a separate file.
00356     *
00357     *  This is a convenience method that calls the
00358     *  setBandFiles(const std::vector<const Filename*>&) method.
00359     *
00360     *  @param   bandFiles
00361     *           The filenames for each band of data of a BSQ multiple-file data
00362     *           set.
00363     *
00364     *  @notify  This method notifies signalBandFilesChanged() if the
00365     *           given band files are different than the current band files.
00366     *
00367     *  @see     InterleaveFormatType
00368     */
00369    virtual void setBandFiles(const std::vector<std::string>& bandFiles) = 0;
00370 
00371    /**
00372     *  Sets the filenames for each band of a BSQ multiple-file data set.
00373     *
00374     *  Band files apply only to data sets stored in the BSQ interleave format
00375     *  with each band stored in a separate file.
00376     *
00377     *  @param   bandFiles
00378     *           The filenames for each band of data of a BSQ multiple-file data
00379     *           set.
00380     *
00381     *  @notify  This method notifies signalBandFilesChanged() if the
00382     *           given band files are different than the current band files.
00383     *
00384     *  @see     InterleaveFormatType
00385     */
00386    virtual void setBandFiles(const std::vector<const Filename*>& bandFiles) = 0;
00387 
00388    /**
00389     *  Returns the filenames for each band of a BSQ multiple-file data set.
00390     *
00391     *  Band files apply only to data sets stored in the BSQ interleave format
00392     *  with each band stored in a separate file.
00393     *
00394     *  @return  The filenames for each band of data of a BSQ multiple-file data
00395     *           set.
00396     *
00397     *  @see     InterleaveFormatType
00398     */
00399    virtual const std::vector<const Filename*>& getBandFiles() const = 0;
00400 
00401    /**
00402     *  Sets the number of bits used for each pixel element value.
00403     *
00404     *  @param   numBits
00405     *           The number of bits per element.
00406     *
00407     *  @notify  This method notifies signalBitsPerElementChanged() if the given
00408     *           number of bits per element is different than the current number
00409     *           of bits per element.
00410     */
00411    virtual void setBitsPerElement(unsigned int numBits) = 0;
00412 
00413    /**
00414     *  Returns the number of bits used for each pixel element value.
00415     *
00416     *  @return  The number of bits per element.
00417     */
00418    virtual unsigned int getBitsPerElement() const = 0;
00419 
00420    /**
00421     *  Sets the rows for the data as they are stored in the file on disk.
00422     *
00423     *  These rows may differ from the rows in a corresponding
00424     *  RasterDataDescriptor in that they contain row objects for each row in
00425     *  the file on disk regardless of the imported rows.
00426     *
00427     *  @param   rows
00428     *           A vector of DimensionDescriptors containing one
00429     *           instance for each row of data in the file on disk.
00430     *
00431     *  @notify  This method notifies signalRowsChanged() if the given rows are
00432     *           different than the current rows.
00433     *
00434     *  @see     DimensionDescriptor
00435     */
00436    virtual void setRows(const std::vector<DimensionDescriptor>& rows) = 0;
00437 
00438    /**
00439     *  Returns the rows for the data as they are stored in the file on disk.
00440     *
00441     *  @return  A vector of DimensionDescriptors containing one
00442     *           instance for each row of data in the file on disk.
00443     */
00444    virtual const std::vector<DimensionDescriptor>& getRows() const = 0;
00445 
00446    /**
00447     *  Returns the row object containing a given original number.
00448     *
00449     *  @param   originalNumber
00450     *           The zero-based original number for which to get the row object.
00451     *
00452     *  @return  The row object that has the given original number.  An invalid
00453     *           DimensionDescriptor is returned if a row object does not exist
00454     *           with the given original number.
00455     */
00456    virtual DimensionDescriptor getOriginalRow(unsigned int originalNumber) const = 0;
00457 
00458    /**
00459     *  Returns the row object containing a given on-disk number.
00460     *
00461     *  @param   onDiskNumber
00462     *           The zero-based on-disk number for which to get the row object.
00463     *
00464     *  @return  The row object that has the given on-disk number.  An invalid 
00465     *           DimensionDescriptor is returned if a row object does not exist 
00466     *           with the given on-disk number.
00467     */
00468    virtual DimensionDescriptor getOnDiskRow(unsigned int onDiskNumber) const = 0;
00469 
00470    /**
00471     *  Returns the row object containing a given active number.
00472     *
00473     *  @param   activeNumber
00474     *           The zero-based active number for which to get the row object.
00475     *
00476     *  @return  The row object that has the given active number.  An invalid 
00477     *           DimensionDescriptor is returned if a row object does not exist 
00478     *           with the given active number.
00479     */
00480    virtual DimensionDescriptor getActiveRow(unsigned int activeNumber) const = 0;
00481 
00482    /**
00483     *  Returns the number of rows as they are stored in the file on disk.
00484     *
00485     *  This is a convenience method that returns getRows().size().
00486     *
00487     *  @return  The number of rows as they are stored in the file on disk.
00488     */
00489    virtual unsigned int getRowCount() const = 0;
00490 
00491    /**
00492     *  Sets the columns for the data as they are stored in the file on disk.
00493     *
00494     *  These columns may differ from the columns in a corresponding
00495     *  RasterDataDescriptor in that they contain columns objects for each column
00496     *  in the file on disk regardless of the imported columns.
00497     *
00498     *  @param   columns
00499     *           A vector of DimensionDescriptors containing one
00500     *           instance for each column of data in the file on disk.
00501     *
00502     *  @notify  This method notifies signalColumnsChanged() if the given columns
00503     *           are different than the current columns.
00504     *
00505     *  @see     DimensionDescriptor
00506     */
00507    virtual void setColumns(const std::vector<DimensionDescriptor>& columns) = 0;
00508 
00509    /**
00510     *  Returns the columns for the data as they are stored in the file on disk.
00511     *
00512     *  @return  A vector of DimensionDescriptors containing one
00513     *           instance for each column of data in the file on disk.
00514     */
00515    virtual const std::vector<DimensionDescriptor>& getColumns() const = 0;
00516 
00517    /**
00518     *  Returns the column object containing a given original number.
00519     *
00520     *  @param   originalNumber
00521     *           The zero-based original number for which to get the column
00522     *           object.
00523     *
00524     *  @return  The column object that has the given original number.  An invalid 
00525     *           DimensionDescriptor is returned if a column object does not exist 
00526     *           with the given original number.
00527     */
00528    virtual DimensionDescriptor getOriginalColumn(unsigned int originalNumber) const = 0;
00529 
00530    /**
00531     *  Returns the column object containing a given on-disk number.
00532     *
00533     *  @param   onDiskNumber
00534     *           The zero-based on-disk number for which to get the column
00535     *           object.
00536     *
00537     *  @return  The column object that has the given on-disk number.  An invalid 
00538     *           DimensionDescriptor is returned if a column object does not exist 
00539     *           with the given on-disk number.
00540     */
00541    virtual DimensionDescriptor getOnDiskColumn(unsigned int onDiskNumber) const = 0;
00542 
00543    /**
00544     *  Returns the column object containing a given active number.
00545     *
00546     *  @param   activeNumber
00547     *           The zero-based active number for which to get the column
00548     *           object.
00549     *
00550     *  @return  The column object that has the given active number.  An invalid 
00551     *           DimensionDescriptor is returned if a column object does not exist 
00552     *           with the given active number.
00553     */
00554    virtual DimensionDescriptor getActiveColumn(unsigned int activeNumber) const = 0;
00555 
00556    /**
00557     *  Returns the number of columns as they are stored in the file on disk.
00558     *
00559     *  This is a convenience method that returns getColumns().size().
00560     *
00561     *  @return  The number of columns as they are stored in the file on disk.
00562     */
00563    virtual unsigned int getColumnCount() const = 0;
00564 
00565    /**
00566     *  Sets the bands for the data as they are stored in the file on disk.
00567     *
00568     *  These bands may differ from the bands in a corresponding
00569     *  RasterDataDescriptor in that they contain band objects for each band in
00570     *  the file on disk regardless of the imported bands.
00571     *
00572     *  @param   bands
00573     *           A vector of DimensionDescriptors containing one
00574     *           instance for each band of data in the file on disk.
00575     *
00576     *  @notify  This method notifies signalBandsChanged() if the given bands
00577     *           are different than the current bands.
00578     *
00579     *  @see     DimensionDescriptor
00580     */
00581    virtual void setBands(const std::vector<DimensionDescriptor>& bands) = 0;
00582 
00583    /**
00584     *  Returns the bands for the data as they are stored in the file on disk.
00585     *
00586     *  @return  A vector of DimensionDescriptors containing one
00587     *           instance for each band of data in the file on disk.
00588     */
00589    virtual const std::vector<DimensionDescriptor>& getBands() const = 0;
00590 
00591    /**
00592     *  Returns the band object containing a given original number.
00593     *
00594     *  @param   originalNumber
00595     *           The zero-based original number for which to get the band
00596     *           object.
00597     *
00598     *  @return  The band object that has the given original number.  An invalid 
00599     *           DimensionDescriptor is returned if a band object does not exist 
00600     *           with the given original number.
00601     */
00602    virtual DimensionDescriptor getOriginalBand(unsigned int originalNumber) const = 0;
00603 
00604    /**
00605     *  Returns the band object containing a given on-disk number.
00606     *
00607     *  @param   onDiskNumber
00608     *           The zero-based on-disk number for which to get the band object.
00609     *
00610     *  @return  The band object that has the given on-disk number.  An invalid 
00611     *           DimensionDescriptor is returned if a band object does not exist 
00612     *           with the given on-disk number.
00613     */
00614    virtual DimensionDescriptor getOnDiskBand(unsigned int onDiskNumber) const = 0;
00615 
00616    /**
00617     *  Returns the band object containing a given active number.
00618     *
00619     *  @param   activeNumber
00620     *           The zero-based active number for which to get the band object.
00621     *
00622     *  @return  The band object that has the given active number.  An invalid 
00623     *           DimensionDescriptor is returned if a band object does not exist 
00624     *           with the given active number.
00625     */
00626    virtual DimensionDescriptor getActiveBand(unsigned int activeNumber) const = 0;
00627 
00628    /**
00629     *  Returns the number of bands as they are stored in the file on disk.
00630     *
00631     *  This is a convenience method that returns getBands().size().
00632     *
00633     *  @return  The number of bands as they are stored in the file on disk.
00634     */
00635    virtual unsigned int getBandCount() const = 0;
00636 
00637    /**
00638     *  Sets the pixel size of each column in the data set.
00639     *
00640     *  By default, each row and column has a pixel size of 1.0, thereby
00641     *  producing a size ratio of 1.0, which indicates that the pixel appears
00642     *  as a square in the view.  Calling this method with a value other than
00643     *  1.0 allows for non-square pixels, which may represent the true nature
00644     *  of the data.
00645     *
00646     *  @param   pixelSize
00647     *           The pixel size for each column in the data set.
00648     *
00649     *  @notify  This method notifies signalPixelSizeChanged() if the given
00650     *           column pixel size is different than the current column pixel
00651     *           size.
00652     */
00653    virtual void setXPixelSize(double pixelSize) = 0;
00654 
00655    /**
00656     *  Returns the pixel size of each column in the data set.
00657     *
00658     *  @return  The column pixel size.
00659     *
00660     *  @see     setXPixelSize()
00661     */
00662    virtual double getXPixelSize() const = 0;
00663 
00664    /**
00665     *  Sets the pixel size of each row in the data set.
00666     *
00667     *  By default, each row and column has a pixel size of 1.0, thereby
00668     *  producing a size ratio of 1.0, which indicates that the pixel appears
00669     *  as a square in the view.  Calling this method with a value other than
00670     *  1.0 allows for non-square pixels, which may represent the true nature
00671     *  of the data.
00672     *
00673     *  @param   pixelSize
00674     *           The pixel size for each row in the data set.
00675     *
00676     *  @notify  This method notifies signalPixelSizeChanged() if the given
00677     *           row pixel size is different than the current row pixel size.
00678     */
00679    virtual void setYPixelSize(double pixelSize) = 0;
00680 
00681    /**
00682     *  Returns the pixel size of each row in the data set.
00683     *
00684     *  @return  The row pixel size.
00685     *
00686     *  @see     setYPixelSize()
00687     */
00688    virtual double getYPixelSize() const = 0;
00689 
00690    /**
00691     *  Sets the units the values in the data set.
00692     *
00693     *  @param   pUnits
00694     *           The units of the values in the data set.
00695     *
00696     *  @notify  This method notifies Subject::signalModified() if the given
00697     *           units object is different than the current units object.
00698     */
00699    virtual void setUnits(const Units* pUnits) = 0;
00700 
00701    /**
00702     *  Returns a pointer to the data's units object.
00703     *
00704     *  @return  A pointer to the data's units object.
00705     */
00706    virtual Units* getUnits() = 0;
00707 
00708    /**
00709     *  Returns read-only access to the data's units object.
00710     *
00711     *  @return  A const pointer to the data's units object.  The units
00712     *           represented by the returned pointer should not be modified.  To
00713     *           modify the values, call the non-const version of getUnits().
00714     */
00715    virtual const Units* getUnits() const = 0;
00716 
00717    /**
00718     *  Sets GCPs associated with the data in the file on disk.
00719     *
00720     *  GCPs can be used to represent geocoordinate information for a particular
00721     *  data set.
00722     *
00723     *  On import, an importer will typically set the GCPs after reading
00724     *  geocoordinate information from a file.  Then, after importing is
00725     *  complete, if a SpatialDataView is created the GCPs are used to create a
00726     *  GcpList element and corresponding GcpLayer that is automatically
00727     *  displayed in the view.
00728     *
00729     *  On export, an object executing the exporter can set the geocoordinate
00730     *  information that the exporter should use when saving the data to disk.
00731     *
00732     *  @param   gcps
00733     *           The GCPs associated with the data.
00734     *
00735     *  @notify  This method notifies signalGcpsChanged() if the given GCPs are
00736     *           different than the current GCPs.
00737     */
00738    virtual void setGcps(const std::list<GcpPoint>& gcps) = 0;
00739 
00740    /**
00741     *  Returns the GCPs associated with the data.
00742     *
00743     *  @return  The GCPs associated with the data.
00744     */
00745    virtual const std::list<GcpPoint>& getGcps() const = 0;
00746 
00747 protected:
00748    /**
00749     * This should be destroyed by calling ObjectFactory::destroyObject.
00750     */
00751    virtual ~RasterFileDescriptor() {}
00752 };
00753 
00754 #endif

Software Development Kit - Opticks 4.9.0 Build 16218