ExtractData/mshFile/mshfile.cpp

Go to the documentation of this file.
00001 #include <QtGui>
00002 #include "mshfile.h"
00003 
00004 #include <iomanip>
00005 #include <fstream>
00006 using namespace std;
00007 
00008 #include "../../pihmLIBS/pickGridValue.h"
00009 #include "../../pihmLIBS/helpDialog/helpdialog.h"
00010 
00011 mshFileDlg::mshFileDlg(QWidget *parent)
00012 {
00013         setupUi(this);
00014         connect(eleFileButton, SIGNAL(clicked()), this, SLOT(eleBrowse()));
00015         connect(nodeFileButton, SIGNAL(clicked()), this, SLOT(nodeBrowse()));
00016         connect(neighFileButton, SIGNAL(clicked()), this, SLOT(neighBrowse()));
00017         connect(sElevFileButton, SIGNAL(clicked()), this, SLOT(sEleBrowse()));
00018         connect(bElevFileButton, SIGNAL(clicked()), this, SLOT(bEleBrowse()));
00019         connect(mshFileButton, SIGNAL(clicked()), this, SLOT(mshBrowse()));
00020         connect(runButton, SIGNAL(clicked()), this, SLOT(run()));
00021         connect(helpButton, SIGNAL(clicked()), this, SLOT(help()));
00022         connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
00023 }
00024 
00025 void mshFileDlg::eleBrowse()
00026 {
00027         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","ele File(*.ele *.ELE)");
00028         eleFileLineEdit->setText(str);
00029 }
00030 
00031 void mshFileDlg::nodeBrowse()
00032 {
00033         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","node File(*.node *.NODE)");
00034         nodeFileLineEdit->setText(str);
00035 }
00036 
00037 void mshFileDlg::neighBrowse()
00038 {
00039         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","neigh File(*.neigh *.NEIGH)");
00040         neighFileLineEdit->setText(str);
00041 }
00042 
00043 void mshFileDlg::sEleBrowse()
00044 {
00045         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","Surface Elev File(*.adf *.ADF)");
00046         sElevFileLineEdit->setText(str);
00047 }
00048 
00049 void mshFileDlg::bEleBrowse()
00050 {
00051         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","Bed Elev File(*.adf *.ADF)");
00052         bElevFileLineEdit->setText(str);
00053 }
00054 
00055 void mshFileDlg::mshBrowse()
00056 {
00057         QString temp = QFileDialog::getSaveFileName(this, "Choose File", "~/","mesh File(*.mesh *.MESH)");
00058         QString tmp = temp;
00059         if(!(tmp.toLower()).endsWith(".mesh")){
00060                 tmp.append(".mesh");
00061                 temp = tmp;
00062         }
00063         mshFileLineEdit->setText(temp);
00064 }
00065 
00066 void mshFileDlg::run()
00067 {
00068 
00069         QString logFileName("c:\log.html");
00070         ofstream log;
00071         log.open(logFileName.ascii());
00072         log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>";
00073         log.close();
00074         MessageLog->setSource(logFileName);
00075         MessageLog->setFocus();
00076         MessageLog->setModified(TRUE);
00077 
00078         ifstream ele, node, neigh, sele, bele;
00079         ofstream mesh;
00080 
00081         ele.open((eleFileLineEdit->text()).ascii());
00082         node.open((nodeFileLineEdit->text()).ascii());
00083         neigh.open((neighFileLineEdit->text()).ascii());
00084         sele.open((sElevFileLineEdit->text()).ascii());
00085         bele.open((bElevFileLineEdit->text()).ascii());
00086         mesh.open((mshFileLineEdit->text()).ascii(), ios::out);
00087 
00088         int runFlag = 1;
00089 /*
00090         if(ele==NULL){
00091                 qWarning("\n%s doesn't exist!", (eleFileLineEdit->text()).ascii());
00092                 runFlag=0;
00093         }
00094         if(node==NULL){
00095                 qWarning("\n%s doesn't exist!", (nodeFileLineEdit->text()).ascii());
00096                 runFlag=0;
00097         }
00098         if(neigh==NULL){
00099                 qWarning("\n%s doesn't exist!", (neighFileLineEdit->text()).ascii());
00100                 runFlag=0;
00101         }
00102         if(sele==NULL){
00103                 qWarning("\n%s doesn't exist!", (sElevFileLineEdit->text()).ascii());
00104                 runFlag=0;
00105         }
00106         if(bele==NULL){
00107                 qWarning("\n%s doesn't exist!", (bElevFileLineEdit->text()).ascii());
00108                 runFlag=0;
00109         }
00110         if(mesh==NULL){
00111                 qWarning("\n Please Enter mesh file name");
00112                 runFlag=0;
00113         }
00114 */
00115 
00116         log.open(logFileName.ascii(), ios::app);
00117         if((eleFileLineEdit->text()).length()==0){
00118                 log<<"<p><font size=3 color=red> Error! Please input .ele Input File</p>";
00119                 runFlag = 0;
00120         }
00121         else{
00122                 log<<"<p>Checking... "<<(eleFileLineEdit->text()).ascii()<<"... ";
00123                 if(ele == NULL){
00124                         log<<"<font size=3 color=red> Error!</p>";
00125                         //qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00126                         runFlag = 0;
00127                 }
00128                 else
00129                         log<<"Done!</p>";
00130         }
00131         log.close();
00132         MessageLog->reload();
00133         QApplication::processEvents();
00134 
00135         
00136         log.open(logFileName.ascii(), ios::app);
00137         if((nodeFileLineEdit->text()).length()==0){
00138                 log<<"<p><font size=3 color=red> Error! Please input .node Input File</p>";
00139                 runFlag = 0;
00140         }
00141         else{
00142                 log<<"<p>Checking... "<<(nodeFileLineEdit->text()).ascii()<<"... ";
00143                 if(ele == NULL){
00144                         log<<"<font size=3 color=red> Error!</p>";
00145                         //qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00146                         runFlag = 0;
00147                 }
00148                 else
00149                         log<<"Done!</p>";
00150         }
00151         log.close();
00152         MessageLog->reload();
00153         QApplication::processEvents();
00154 
00155         
00156         log.open(logFileName.ascii(), ios::app);
00157         if((neighFileLineEdit->text()).length()==0){
00158                 log<<"<p><font size=3 color=red> Error! Please input .neigh Input File</p>";
00159                 runFlag = 0;
00160         }
00161         else{
00162                 log<<"<p>Checking... "<<(neighFileLineEdit->text()).ascii()<<"... ";
00163                 if(neigh == NULL){
00164                         log<<"<font size=3 color=red> Error!</p>";
00165                         //qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00166                         runFlag = 0;
00167                 }
00168                 else
00169                         log<<"Done!</p>";
00170         }
00171         log.close();
00172         MessageLog->reload();
00173         QApplication::processEvents();
00174 
00175 
00176         log.open(logFileName.ascii(), ios::app);
00177         if((sElevFileLineEdit->text()).length()==0){
00178                 log<<"<p><font size=3 color=red> Error! Please input Surface Elev. Input File</p>";
00179                 runFlag = 0;
00180         }
00181         else{
00182                 log<<"<p>Checking... "<<(sElevFileLineEdit->text()).ascii()<<"... ";
00183                 if(sele == NULL){
00184                         log<<"<font size=3 color=red> Error!</p>";
00185                         //qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00186                         runFlag = 0;
00187                 }
00188                 else
00189                         log<<"Done!</p>";
00190         }
00191         log.close();
00192         MessageLog->reload();
00193         QApplication::processEvents();
00194 
00195 
00196         log.open(logFileName.ascii(), ios::app);
00197         if((bElevFileLineEdit->text()).length()==0){
00198                 log<<"<p><font size=3 color=red> Error! Please input Bed Elev. Input File</p>";
00199                 runFlag = 0;
00200         }
00201         else{
00202                 log<<"<p>Checking... "<<(bElevFileLineEdit->text()).ascii()<<"... ";
00203                 if(bele == NULL){
00204                         log<<"<font size=3 color=red> Error!</p>";
00205                         //qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00206                         runFlag = 0;
00207                 }
00208                 else
00209                         log<<"Done!</p>";
00210         }
00211         log.close();
00212         MessageLog->reload();
00213         QApplication::processEvents();
00214 
00215 
00216         log.open(logFileName.ascii(), ios::app);
00217         if((mshFileLineEdit->text()).length()==0){
00218                 log<<"<p><font size=3 color=red> Error! Please input .mesh Output File</p>";
00219                 runFlag = 0;
00220         }
00221         else{
00222                 log<<"<p>Checking... "<<(mshFileLineEdit->text()).ascii()<<"... ";
00223                 if(mesh == NULL){
00224                         log<<"<font size=3 color=red> Error!</p>";
00225                         qWarning("\nCan not open output file name");
00226                         runFlag = 0;
00227                 }
00228                 else
00229                         log<<"Done!</p>";
00230         }
00231         log.close();
00232         MessageLog->reload();
00233         QApplication::processEvents();
00234 
00235 
00236         if(runFlag == 1){
00237 
00238                 log.open(logFileName.ascii(), ios::app);
00239                 log<<"<p>Running...";
00240                 log.close();
00241                 MessageLog->reload();
00242                 QApplication::processEvents();
00243 
00244                 GDALDataset *sElev, *bElev;
00245                 double sRanges[6], bRanges[6];
00246                 GDALAllRegister();
00247                 sElev = (GDALDataset *)GDALOpen((sElevFileLineEdit->text()).ascii(), GA_ReadOnly);
00248                 bElev = (GDALDataset *)GDALOpen((bElevFileLineEdit->text()).ascii(), GA_ReadOnly);
00249                 getExtent(sElev, sRanges);
00250                 getExtent(bElev, bRanges);
00251 
00252 
00253                 int temp;
00254                 int numEle, numNode, numNeigh;
00255                 ele>>numEle; ele>>temp; ele>>temp;
00256                 node>>numNode; node>>temp; node>>temp; node>>temp;
00257                 neigh>>numNeigh; neigh>>temp;
00258 
00259                 mesh<<numEle<<"\t"<<numNode;
00260                 int index;
00261                 int node0, node1, node2, nabr0, nabr1, nabr2;
00262                 for(int i=0; i<numEle; i++){
00263                         ele>>index; ele>>node0; ele>>node1; ele>>node2;
00264                         neigh>>temp; neigh>>nabr0; neigh>>nabr1; neigh>>nabr2;
00265                         mesh<<"\n"<<index<<"\t"<<node0<<"\t"<<node1<<"\t"<<node2<<"\t"<<(nabr0<0?0:nabr0)<<"\t"<<(nabr1<0?0:nabr1)<<"\t"<<(nabr2<0?0:nabr2);
00266                 }
00267                 double X, Y, Zmin, Zmax;
00268                 for(int i=0; i<numNode; i++){
00269                         node>>index; node>>X; node>>Y; node>>temp;
00270                         Zmin = getRasterValue(bElev, 1, X, Y, bRanges);
00271                         Zmax = getRasterValue(sElev, 1, X, Y, sRanges);
00272                         mesh<<"\n"<<index<<"\t"<<setprecision(20)<<X<<"\t"<<setprecision(20)<<Y<<"\t"<<setprecision(15)<<Zmin<<"\t"<<setprecision(15)<<Zmax;
00273                 }
00274 
00275                 log.open(logFileName.ascii(), ios::app);
00276                 log<<" Done!</p>";
00277                 log.close();
00278                 MessageLog->reload();
00279                 QApplication::processEvents();
00280 
00281         }       
00282 }
00283                         
00284 void mshFileDlg::help()
00285 {
00286         helpDialog* hlpDlg = new helpDialog(this, "Mesh File", 1, "helpFiles/meshfile.html", "Help :: Mesh File");
00287         hlpDlg->show(); 
00288 }

Generated on Sun Aug 5 17:33:58 2007 for PIHMgis by  doxygen 1.5.2