Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

Raster3D.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 //
00003 //  Thomas Berger (main author), Pepijn Schreinemachers, and Thorsten Arnold
00004 //
00005 //
00006 //  Hohenheim University (490d)
00007 //  Professorship for Land Use Economics in the Tropics and Subtropics
00008 //
00009 //  May not be distributed without permission by main author
00010 //
00011 //  File:       Raster3D.h (formerly Raster3D.h)
00012 //
00013 //  Contents:   Auxiliary class, handles stack of 2-dimensional raster
00014 //
00015 //
00016 //
00017 //------------------------------------------------------------------------------
00018 
00019 
00020 #ifndef _Raster3D_h
00021 #define _Raster3D_h
00022 
00023 
00024 #include <stdio.h>
00025 #include <iostream>
00026 using namespace std;
00027 #include <fstream>
00028 #include <string.h>
00029 #include "BasicEnums.h"
00030 #include "Raster2D.h"
00031 
00033 // INCLUDE TDT FUNTIONS INTO FILE - ONLY POSSIBLE UNDER LINUX
00035 #ifdef DO_TDT
00036    extern "C" {
00037    #include "tdt.h"
00038    }
00039 #endif
00040 
00041 class Raster3D
00042 {
00043    protected:
00044       Raster2D* gis3D;
00045       int _layers;
00046       string* fnames;
00047       int month;
00048       int year;
00049 
00050       virtual void setLayers(int z);
00051       virtual void initEmpty();
00052 
00053 
00054    public:
00055       // Allocate as empty
00056       Raster3D(void);
00057 
00058       Raster3D(int z);
00059       // initializes z layers with same info as gisType,
00060       // and sets all values to 'gisType.getNoData()'
00061       Raster3D(int z, Raster2D& gisType);
00062 
00063       virtual ~Raster3D(void);
00064 
00065       // Operator "="
00066       const Raster3D& operator = (const Raster3D& );
00067 
00068       // a) Copy Constructur for Raster2D
00069       Raster3D(const Raster3D& gisOrig) ;
00070       virtual void initCopy(const Raster3D& RHS);
00071       
00072 //      virtual void initCopy(Raster2D& gis);
00073 
00074       virtual void deallocate();
00075        virtual void allocate();
00076       virtual void allocate(int z);
00077       virtual void allocate(int z, Raster2D& gisType);
00078       virtual void allocate(const Raster3D& RHS);
00079 
00080 
00081 
00082       virtual double getValue(int z, int r, int c);
00083       // writes gisZ into new gis which was passed
00084       // Returns number of layers
00085       virtual int getLayers();
00086       virtual int getLayers() const;
00087       // Returns number of layers
00088       virtual int  getMonth();
00089       virtual int getYear();
00090       //virtual int getLayerFromCont(Content cont);
00091 
00092       virtual string getFilename(int z);
00093       virtual void getCopyRaster_2D(int z, Raster2D& gis);
00094       virtual void getCopyRaster_2D(int z, Raster2D& gis) const;
00095       virtual Raster2D& getGisPointer(int z);
00096 
00097       // -------------------------------------- //
00098       // ACCESS FUNCTIONS
00099       // returns number of columns  of FIRST gis3D
00100       virtual int getCols();
00101       virtual int cols() const;  //For consistency with MatrixDouble-class
00102       virtual int cols() ;
00103       // returns number of rows
00104       virtual int getRows();
00105       virtual int rows() const;
00106       virtual int rows() ;
00107 
00108       // Returns content of layer
00109       virtual Content getContent(int z);
00110       // Returns layer with content
00111       virtual int checkForContent(Content cont);
00112 
00113       virtual void setValue(int z, int r, int c, double val);
00114       virtual void setFilename(int z, string fn);
00115       // Expects string-array of same size as Raster2D
00116       virtual void setFilenameAll(string* fn);
00117       virtual void resetLayers();// sets layers to zero
00118       virtual void setContent(int z, Content cont);
00119 
00120 
00121 
00122       virtual void setMonth(int m);
00123       virtual void setYear(int y);
00124 
00125       // Sets all values of layer z to value 'val'
00126       virtual void setAllVal(int z, double val);
00127 
00128       //
00129       virtual void setGislayer(int z, Raster2D& gisIn);
00130 
00132       //  OUTPUT TO SCREEN
00133 
00134       virtual void printHeader();
00135                 virtual void printAllHeaders();
00136       virtual void printToScreen();
00137       virtual void printToScreen(int z);
00138       virtual void printToScreen_compact();
00139       virtual void printToScreen_compact(int z);
00140 
00142       //  FILES:  WRITING AND READING
00143       virtual void writeToFiles(string fn, string DIR);
00144       virtual void writeDescriptionFile(string fn);
00145 
00146       virtual void writeToFiles(string fn, string DIR, int m, int y);
00147       virtual void writeDescriptionFile(string fn, int m, int y);
00148 
00149       virtual void readFromFiles(string fn, string DIR);
00150       virtual bool readDescriptionFile(string fn, MatrixDouble& mat);
00151 
00153       //  MATH: SIMPLE ARITHMETICS
00154       virtual void add(Raster3D& g3D, Raster3D& g3D2);
00155       virtual void subtract(Raster3D& g3D, Raster3D& g3D2);
00156       virtual void mult(Raster3D& g3D, Raster3D& g3D2);
00157       virtual void divide(Raster3D& g3D, Raster3D& g3D2);
00158       
00159       virtual double log_2(double x);
00160 
00162       //  EXTRACTING POSITION MATRIOX TO TABLE
00163 
00164       virtual void table_getFullTable(Raster2D& gis_L, MatrixDouble& tab);
00165 
00166       virtual void table_getFullTable(MatrixDouble& posMat, MatrixDouble& tab);
00167 
00168       virtual void table_getOneLayerPos(int z, MatrixDouble& posMat, MatrixDouble& tabRow);
00169 
00170       virtual void table_appendFilteredToFile(int z, MatrixDouble& posMat, string fn);
00171       virtual void table_appendFilteredToFile(int z, MatrixDouble& posMat, char* fn);
00172 
00173 
00174 
00175 
00177       virtual void sendViaTDT_extract(string configfile, MatrixDouble& extractVec);
00178       virtual void sendViaTDT_extract(char* configfile, MatrixDouble& extract);
00179 
00180       virtual void sendViaTDT(string configfile);
00181       virtual void sendViaTDT(char* configfile);
00182                 
00183       virtual void receiveViaTDT(char* configfile);
00184                 virtual void receiveViaTDT(string configfile);
00185 
00186       virtual void rescale_C2f(
00187                Raster2D& gis_L,        // data
00188                int Y_shift_C2G,   // data
00189                int X_shift_C2G,    // data
00190                Raster3D& gis3DTarget     // reference to final data struct
00191                );
00192 
00193       virtual void rescale_C2f_extract(
00194                MatrixDouble& extract,
00195                Raster2D& gis_L,        // data
00196                int Y_shift_C2G,   // data
00197                int X_shift_C2G,    // data
00198                Raster3D& gis3DTarget     // reference to final data struct
00199                );
00200                
00202 
00203           void writeerror(char *dateiname,int fehler);
00204      int readstackfromfile(char *dateiname);
00205      void printstackfile(char *dateiname,float ***stack,int levels);
00206      
00207      int readFromBinary(char *dateiname);
00208      void writeStackAsTableCpp(string filename);
00209      void writeStackAsTable(string filename);
00210           
00211 
00212         void free_drei_d_matrix(float ***m,int  nrl,int nrh,int ncl,int  nch,int levels);
00213         float ***drei_d_matrix(int nrl,int nrh,int ncl,int nch,int levels);
00214         float **matrix(int nrl,int nrh,int ncl,int nch);
00215         void free_d_matrix(double **m,int nrl,int nrh,int ncl,int nch);
00216         void free_matrix(float **m,int nrl,int nrh,int ncl,int nch);
00217 
00218 
00219 
00220      virtual void extractTable_eachOneFile(MatrixDouble& extract, MatrixDouble& posMat, string trunk);
00221      virtual void extractTable_OneFile(MatrixDouble& extract, MatrixDouble& posMat, string trunk);
00222           
00223      virtual void writeLogfileTDT(string fn, char*  configFile, int type, bool dolong);
00224 
00225      virtual void writeDescriptionFile_open(ofstream& streamData);
00226           
00227           
00228 };
00229 
00230 
00231 #endif
00232 

Generated on Thu Aug 28 12:38:45 2008 for MPMAS by  doxygen 1.3.9.1