00001 #ifndef _WINC_UPADATA
00002 #define _WINC_UPADATA
00003
00004 #include <WXP/Date.h>
00005 #include <WXP/UpaLevel.h>
00006 #include <WXP/VCoord.h>
00007
00008 namespace WXP {
00009
00010
00011
00012 class UpaData {
00013 int type;
00014 Date date;
00015 int fhour;
00016 char gen_name[20];
00017 char id[20];
00018 char area[20];
00019 int wmo;
00020 float lat;
00021 float lon;
00022 float elev;
00023 public:
00024 static const int MAXLEV = 300;
00025
00026 UpaLevel lev[MAXLEV];
00027 int num;
00028 int sfc;
00029 int maxwnd;
00030 int trop;
00031
00032 public:
00033 UpaData();
00034 int init();
00035 int print();
00036 int addLevel( UpaLevel &level );
00037 int delLevel( int ind );
00038 int updateLevel( int ind, UpaLevel &level );
00039 int setNum( int val );
00040 bool isSfc();
00041 bool isLevelMandatory( int ind );
00042 int sortPres();
00043 int sortHeight();
00044 int calcHeight();
00045 int calcPres();
00046 int interpTemps();
00047 int interpWinds();
00048 int interp( int coord, float val, UpaLevel &level );
00049 int interp( VCoord coord, UpaLevel &level );
00050
00051 inline int setType( int rtype ){ type = rtype; return 1; };
00052 inline int getType(){ return type; };
00053 int setId( const char *rid );
00054 inline const char *getId(){ return id; };
00055 int setArea( const char *rarea );
00056 inline const char *getGenName(){ return gen_name; };
00057 int setGenName( const char *str );
00058 inline int setFhour( int val ){ fhour = val; return 1; };
00059 inline int getFhour(){ return fhour; };
00060 inline const char *getArea(){ return area; };
00061 inline int setDate( Date &rdate ){ date = rdate; return 1; };
00062 inline Date getDate(){ return date; };
00063 inline int getDate( Date &rdate ){ rdate = date; return 1; };
00064 inline int setWmo( int rwmo ){ wmo = rwmo; return 1; };
00065 inline int getWmo(){ return wmo; };
00066 inline int setLoc( float rlat, float rlon ){ lat = rlat; lon = rlon; return 1; };
00067 inline float getLat(){ return lat; };
00068 inline float getLon(){ return lon; };
00069 int setElev( float relev );
00070 inline float getElev(){ return elev; };
00071
00072 inline int setSfc( int ind ){ sfc = ind; return 1; };
00073 inline int getSfc(){ return sfc; };
00074 inline int setMaxWnd( int ind ){ maxwnd = ind; return 1; };
00075 inline int getMaxWnd(){ return maxwnd; };
00076 inline int setTrop( int ind ){ trop = ind; return 1; };
00077 inline int getTrop(){ return trop; };
00078
00079 int getSfc( UpaLevel &lev );
00080 float getSfcPres();
00081 int setSfcHght( float val );
00082 float getSfcHght();
00083 int getTrop( UpaLevel &lev );
00084 int getMaxWnd( UpaLevel &lev );
00085
00086 inline int getNum(){ return num; };
00087 UpaLevel getLevel( int level );
00088 int setType( int level, int val );
00089 int getType( int level );
00090 int setPres( int level, float val );
00091 float getPres( int level );
00092 int setHght( int level, float val );
00093 float getHght( int level );
00094 int setTemp( int level, float val );
00095 float getTemp( int level );
00096 float getTempK( int level );
00097 int setDewp( int level, float val );
00098 float getDewp( int level );
00099 float getDewpK( int level );
00100 int setSpd( int level, float val );
00101 float getSpd( int level );
00102 int setDir( int level, float val );
00103 float getDir( int level );
00104 bool validPres( int level );
00105 bool validHght( int level );
00106 bool validTemp( int level );
00107 bool validDewp( int level );
00108 bool validDir( int level );
00109 bool validSpd( int level );
00110
00111 friend class UpaDataTool;
00112 };
00113 }
00114 #endif
00115