00001
00021 #ifndef INC_SPATMOD_IMAGESOURCEGDAL_H
00022 #define INC_SPATMOD_IMAGESOURCEGDAL_H
00023
00024 #ifndef INC_SPATMOD_IMAGESOURCEFILE_H
00025 #include <spatmod/imagesourcefile.h>
00026 #endif
00027
00028 #ifndef INC_MI32_FILEPATH_H
00029 #include <mi32/filepath.h>
00030 #endif
00031
00032 #ifndef INC_SPATMOD_IMAGEHELPERRVC_H
00033 #include <spatmod/imagehelperrvc.h>
00034 #endif
00035
00036 #ifndef GDAL_H_INCLUDED
00037 #include <contrib/gdal/gdal.h>
00038 #endif
00039
00040 #ifndef GDAL_PRIV_H_INCLUDED
00041 #include <contrib/gdal/gdal_priv.h>
00042 #endif
00043
00044 namespace SPATMOD {
00045 namespace IMAGE {
00046
00047
00048
00050 class SOURCE_GDAL : public SOURCE_FILE {
00051 public:
00052
00053 enum DRIVER {
00054 DRIVER_ESRIArcGrid,
00055 DRIVER_ENVISAT,
00056 DRIVER_ERDASImagine,
00057 DRIVER_GIF,
00058 DRIVER_GMTNetCDF,
00059 DRIVER_NetCDF,
00060 DRIVER_NITF,
00061 DRIVER_PCI
00062 };
00063
00065 explicit SOURCE_GDAL (
00066 const FILEPATH& FilePath,
00067 const char *DriverName = 0
00068 );
00069
00072 SOURCE_GDAL (
00073 const FILEPATH& FilePath,
00074 DRIVER Driver
00075 );
00076
00078 explicit SOURCE_GDAL (
00079 SIMPLE_ARRAY<UINT8>& MemBuffer,
00080 const char *DriverName = 0
00081 );
00082
00085 SOURCE_GDAL (
00086 SIMPLE_ARRAY<UINT8>& MemBuffer,
00087 DRIVER Driver
00088 );
00089
00091 virtual ~SOURCE_GDAL ();
00092
00093 private:
00094 #ifndef GENERATING_DOXYGEN_OUTPUT
00095 GDALDataset *m_pDataset;
00096 const char *m_DriverName;
00097 bool m_DoingPull;
00098
00101 RVC::IMAGE::CELLTYPE GetColorCompCellType (
00102 GDALDataset *pDataset
00103 ) const;
00104
00106 RVC::IMAGE::CELLTYPE GetCellType (
00107 GDALDataType datatype
00108 ) const;
00109
00110 void SetDriver (DRIVER driver);
00111
00112
00113 virtual ERRVALUE v_GetDimensions (DIMENSIONS& dimensions, double zoom) const;
00114 virtual ZOOMABILITY v_GetZoomAbility (SIMPLE_ARRAY<double>& ZoomsAllowed) const;
00115 virtual float v_QueryIterator (const SECTION_ITERATOR& iterator) const;
00116
00117
00118 virtual ERRVALUE v_Initialize ();
00119 virtual ERRVALUE v_PullBegin (const SECTION_ITERATOR& iterator);
00120 virtual ERRVALUE v_PullEnd ();
00121 virtual ERRVALUE v_PullSubSection (const SECTION& SubSection, BUFFER& buffer);
00122
00123
00124 SOURCE_GDAL (const SOURCE_GDAL&);
00125 SOURCE_GDAL& operator= (const SOURCE_GDAL&);
00126 #endif // GENERATING_DOXYGEN_OUTPUT
00127
00128 };
00129
00130
00131
00132 }
00133 }
00134
00135 #endif // INC_SPATMOD_IMAGESOURCEGDAL_H
00136