00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
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
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
00056 Raster3D(void);
00057
00058 Raster3D(int z);
00059
00060
00061 Raster3D(int z, Raster2D& gisType);
00062
00063 virtual ~Raster3D(void);
00064
00065
00066 const Raster3D& operator = (const Raster3D& );
00067
00068
00069 Raster3D(const Raster3D& gisOrig) ;
00070 virtual void initCopy(const Raster3D& RHS);
00071
00072
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
00084
00085 virtual int getLayers();
00086 virtual int getLayers() const;
00087
00088 virtual int getMonth();
00089 virtual int getYear();
00090
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
00099
00100 virtual int getCols();
00101 virtual int cols() const;
00102 virtual int cols() ;
00103
00104 virtual int getRows();
00105 virtual int rows() const;
00106 virtual int rows() ;
00107
00108
00109 virtual Content getContent(int z);
00110
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
00116 virtual void setFilenameAll(string* fn);
00117 virtual void resetLayers();
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
00126 virtual void setAllVal(int z, double val);
00127
00128
00129 virtual void setGislayer(int z, Raster2D& gisIn);
00130
00132
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
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
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
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,
00188 int Y_shift_C2G,
00189 int X_shift_C2G,
00190 Raster3D& gis3DTarget
00191 );
00192
00193 virtual void rescale_C2f_extract(
00194 MatrixDouble& extract,
00195 Raster2D& gis_L,
00196 int Y_shift_C2G,
00197 int X_shift_C2G,
00198 Raster3D& gis3DTarget
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