00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _GridCellHandler_h
00021 #define _GridCellHandler_h
00022 #include <iostream>
00023 using namespace std;
00024 #include <fstream>
00025 #include <string>
00026
00027 #include "CropSoil.h"
00028 #include "AgentParcel.h"
00029 #include "MainAuxiliaryFunctions.h"
00030 #include "MatrixDouble.h"
00031 class Raster3D;
00032 class Raster2D;
00033
00034
00035
00036 typedef struct {
00037 int x;
00038 int y;
00039 } coord;
00040
00041
00042 class cell
00043 {
00044 protected:
00045 bool isInitializedWithData;
00046
00047 int cellFarmID;
00048 int cellAgentID;
00049 double cellDistanceHome;
00050 int cellFlagIdentifiedByOwner;
00051 int cellSoilType;
00052 int cellUser;
00053 int colr;
00054
00055 int cellPopID;
00056 int cellCluID;
00057 int cellNetwID;
00058 int cellSectorID;
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070 soilC* sCon;
00071
00072
00073
00074
00075 int cropAct;
00076 MatrixDouble monthlyIrrigationQuantity;
00077
00078
00079
00080
00081
00082
00083 public:
00084 cell();
00085 virtual ~cell();
00086 virtual void deallocate(void);
00087 virtual void setEmptyAll();
00088
00089 virtual void setEmptyBasic(void);
00090 virtual void setEmptyIrrig(void);
00091 virtual void setEmptyTSPC(void);
00092
00093
00094
00095
00097
00098 virtual void printToScreen(void);
00099 virtual void printToScreenBasic(void);
00100 virtual void printOnScreenCropped(void);
00101 virtual void printOnScreenIrrig(void);
00102 virtual void printOnScreenTSPC(void);
00103
00104 bool isInitialized (void)
00105 { return isInitializedWithData;};
00106
00107
00108
00109
00110
00111 virtual void setByContent(Content cont, int val);
00112 virtual void setByContent(Content cont, double val);
00113
00114 virtual double getByContent(Content cont);
00115
00116
00117
00118
00119
00120
00121
00122 virtual void setMonthlyIrrigationQuantity(int mTot, double monthlyIrrigVal);
00123 virtual double getMonthlyIrrigationQuantity(int mTot);
00124
00125
00126 virtual int getFaID(void);
00127 virtual int getAGID(void);
00128
00129 virtual double getDistanceFromHome(void);
00130 virtual int getFlagOwnerOK(void);
00131 virtual int getType(void);
00132 virtual int getUser(void);
00133
00134
00135 virtual int getPpID(void);
00136 virtual int getClustID(void);
00137 virtual int getNetwID(void);
00138 virtual int getSectorID(void);
00139
00140 virtual void setSectorID(double in);
00141 virtual void setSectorID(int in);
00142
00143 virtual void setFaID(int cellFarmID);
00144 virtual void set_aID(int cellAgentID);
00145
00146 virtual void setDistanceFromHome(double cellDistanceHome);
00147 virtual void setFlagOwnerOK(int cellFlagIdentifiedByOwner);
00148 virtual void setSoilType(int cellSoilType);
00149 virtual void setUser(int usID);
00150 virtual void setColr(int colr);
00151
00152 virtual void setPpID(int ppID);
00153 virtual void setClusterID(int cellCluID);
00154 virtual void setNetworkID(int nwID);
00155
00156
00157 virtual soilC* getSCon(void);
00158 virtual void setSCon(soilC* sCon);
00159
00160 virtual double getSoilN(void);
00161 virtual double getSoilP(void);
00162 virtual double getSoilK(void);
00163 virtual double getSoilA(void);
00164 virtual double getSoilC(void);
00165 virtual double getSoilSl(void);
00166 virtual double getSoilSe(void);
00167
00168 virtual void setSoilN(double);
00169 virtual void setSoilP(double);
00170 virtual void setSoilK(double);
00171 virtual void setSoilA(double);
00172 virtual void setSoilC(double);
00173 virtual void setSoilSl(double);
00174 virtual void setSoilSe(double);
00175
00176
00177 virtual int getCropActivityID(void);
00178 virtual void setCropActivityID(int crA);
00179 };
00180
00181
00182
00183 class ldscape
00184 {
00185 protected:
00186
00187 int gRows;
00188 int gCols;
00189 int gridAlloc;
00190
00191 double xcoord;
00192 double ycoord;
00193 double cellsize;
00194 int noData;
00195
00196
00197 int numAg;
00198
00199 MatrixDouble agentIDs;
00200
00201 public:
00202
00203
00204 cell*** grid;
00205
00206
00208
00209 ldscape();
00210 virtual ~ldscape();
00211
00212 virtual void allocateGrid(int Rows, int Cols);
00213 virtual void deallocGrid();
00214 virtual void deallocate(int r, int c);
00215
00216 virtual int getGridAlloc();
00217
00218
00220
00221
00222
00223 virtual void writeLayerToOpenFile(FILE* file, Content cont);
00224
00225
00227
00228 virtual void printToScreen(int r, int c);
00229 virtual void printOnScreenAll(void);
00230 virtual void printOnScreenAllCropped(void);
00231
00232
00234
00235 virtual int getGRows();
00236 virtual int getGCols();
00237 virtual int rows();
00238 virtual int cols();
00239
00240 void setXcoord(double xc) {xcoord = xc;};
00241 void setYcoord(double yc) {ycoord = yc;};
00242 double getXcoord() {return xcoord;}
00243 double getYcoord() {return ycoord;}
00244
00245 virtual bool isInitialized(int r, int c);
00246
00248 virtual void provideCellContentViaGisStruct( Content cont, Raster2D& gisCont);
00249 virtual void setCellContentViaGisStruct( Content cont, Raster2D& gisCont);
00250
00251
00252 virtual void exportBasicCellContentToRaster3D(Raster3D& raster3);
00253 virtual void exportTSPCCellContentToRaster3D(Raster3D& raster3);
00254 virtual void exportIrrigCellContentToRaster3D(Raster3D& raster3);
00255 virtual void exportAnyCellContentToRaster3D(
00256 Raster3D& raster3Dcell,
00257 int startContVal, int stopContVal);
00258 virtual double getValueInCell(int r, int c, Content cont, bool supressOutputs);
00259
00260
00261
00262
00263 virtual void setValueInCell(int r, int c, Content cont, double value);
00264 virtual double getValueInCell(int r, int c, Content cont);
00265
00266 virtual bool updateCell(int r, int c, Content cont, double value);
00267
00268 virtual bool updateCellMonthly(int r, int c, int mTot, Content cont, double newVal);
00269
00270
00271
00273
00274
00275
00276 virtual void setFoundAndPlotDistances(int fr, int fc);
00277
00278
00279
00280 virtual void setFoundForPlot(int r, int c);
00281 virtual void makeAgentVector(int nAg);
00282 virtual void setAgentID(int i, int val);
00283 virtual int getNumAgents();
00284
00285
00287
00288
00289 virtual int getFound(int r, int c);
00290 virtual void setFound(int r, int c, int);
00291
00292 virtual soilC* getSoilCond(int r, int c);
00293
00294 virtual void setSoilCond(int r, int c, soilC*&);
00295 virtual void updSoilCond(int r, int c, soilC*&);
00296
00297
00298 virtual int getFstID(int i);
00299 virtual int getPopID(int i);
00300 virtual int getCluID(int i);
00301 virtual int getNetID(int i);
00302 virtual int getNumPl(int i);
00303
00304
00305
00306 virtual double getMonthlyIrrigationQuantity( int r, int c, int m);
00307 virtual void setMonthlyIrrigationQuantity(int r, int c, int m, double newVal);
00308
00309 };
00310
00311
00312 #endif
00313