RasterProcessing/LinkGrid/linkgrid.cpp

Go to the documentation of this file.
00001 #include <QtGui>
00002 #include "linkgrid.h"
00003 #include "../../pihmRasterLIBS/lsm.h"
00004 #include "../../pihmRasterLIBS/flood.h"
00005 #include "../../pihmRasterLIBS/setdir.h"
00006 #include "../../pihmRasterLIBS/aread8.h"
00007 #include "../../pihmRasterLIBS/streamSegmentation.h"
00008 
00009 #include "../../pihmLIBS/helpDialog/helpdialog.h"
00010 
00011 #include <fstream>
00012 using namespace std;
00013 
00014 LinkGridDlg::LinkGridDlg(QWidget *parent)
00015 {
00016         setupUi(this);
00017         connect(inputSTRBrowseButton, SIGNAL(clicked()), this, SLOT(inputSTRBrowse()));
00018         connect(inputFDRBrowseButton, SIGNAL(clicked()), this, SLOT(inputFDRBrowse()));
00019         connect(outputBrowseButton, SIGNAL(clicked()), this, SLOT(outputBrowse()));
00020         connect(runButton, SIGNAL(clicked()), this, SLOT(run()));
00021         connect(helpButton, SIGNAL(clicked()), this, SLOT(help()));
00022         connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
00023 }
00024 
00025 void LinkGridDlg::inputSTRBrowse()
00026 {
00027         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","Stream Grid File(*.adf *.asc)");
00028         inputSTRFileLineEdit->setText(str);
00029 }
00030 
00031 void LinkGridDlg::inputFDRBrowse()
00032 {
00033         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","Flow Dir Grid File(*.adf *.asc)");
00034         inputFDRFileLineEdit->setText(str);
00035 }
00036 
00037 void LinkGridDlg::outputBrowse()
00038 {
00039         QString temp = QFileDialog::getSaveFileName(this, "Choose File", "~/","Link Grid File(*.adf *.asc)");
00040         QString tmp = temp;
00041         if(!(tmp.toLower()).endsWith(".asc")){
00042         tmp.append(".asc");
00043         temp = tmp;
00044         }
00045         
00046         outputFileLineEdit->setText(temp);
00047 }
00048 
00049 
00050 void LinkGridDlg::run()
00051 {
00052         QString logFileName("c:\log.html");
00053         ofstream log;
00054         log.open(logFileName.ascii());
00055         log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>";
00056         log.close();
00057         messageLog->setSource(logFileName);
00058         messageLog->setFocus();
00059         messageLog->setModified(TRUE);
00060 
00061         QString inputSTRFileName((inputSTRFileLineEdit->text()));
00062         QString inputFDRFileName((inputFDRFileLineEdit->text()));
00063         QString outputFileName((outputFileLineEdit->text()));
00064 
00065         ifstream STRinFile;      STRinFile.open((inputSTRFileLineEdit->text()).ascii());
00066         ifstream FDRinFile;      FDRinFile.open((inputFDRFileLineEdit->text()).ascii());
00067         ofstream outFile;    outFile.open((outputFileLineEdit->text()).ascii());
00068         int runFlag = 1;
00069 
00070         log.open(logFileName.ascii(), ios::app);
00071         if(inputSTRFileName.length()==0){
00072                 log<<"<p><font size=3 color=red> Error! Please input Stream Grid Input File</p>";
00073                 runFlag = 0;
00074         }
00075         else{
00076                 log<<"</p><p>Checking... "<<inputSTRFileName.ascii()<<"... ";
00077                 if(STRinFile == NULL){
00078                         log<<"<font size=3 color=red> Error!</p>";
00079                         qWarning("\n%s doesn't exist!", (inputSTRFileLineEdit->text()).ascii());
00080                         runFlag = 0;
00081                 }
00082                 else
00083                         log<<"Done!</p>";
00084         }
00085         log.close();
00086         messageLog->reload();
00087         QApplication::processEvents();
00088 
00089         log.open(logFileName.ascii(), ios::app);
00090         if(inputFDRFileName.length()==0){
00091                 log<<"<p><font size=3 color=red> Error! Please input Flow Dir. Grid Input File</p>";
00092                 runFlag = 0;
00093         }
00094         else{
00095                 log<<"</p><p>Checking... "<<inputFDRFileName.ascii()<<"... ";
00096                 if(FDRinFile == NULL){
00097                         log<<"<font size=3 color=red> Error!</p>";
00098                         qWarning("\n%s doesn't exist!", (inputFDRFileLineEdit->text()).ascii());
00099                         runFlag = 0;
00100                 }
00101                 else
00102                         log<<"Done!</p>";
00103         }
00104         log.close();
00105         messageLog->reload();
00106         QApplication::processEvents();
00107 
00108         log.open(logFileName.ascii(), ios::app);
00109         if(outputFileName.length()==0){
00110                 log<<"<p><font size=3 color=red> Error! Please input Link Grid Output File</p>";
00111                 runFlag = 0;
00112         }
00113         else{
00114                 log<<"</p><p>Checking... "<<outputFileName.ascii()<<"... ";
00115                 if(outFile == NULL){
00116                         log<<"<font size=3 color=red> Error!</p>";
00117                         qWarning("\nCan not open output file name");
00118                         runFlag = 0;
00119                 }
00120                 else
00121                         log<<"Done!</p>";
00122         }
00123         log.close();
00124         messageLog->reload();
00125         QApplication::processEvents();
00126 
00127         if(runFlag == 1){
00128                 
00129                 log.open(logFileName.ascii(), ios::app);
00130                 log<<"<p>Running...";
00131                 log.close();
00132                 messageLog->reload();
00133                 QApplication::processEvents();
00134                         
00135                 int err1 = streamSegmentation((char *)inputSTRFileName.ascii(), (char *)inputFDRFileName.ascii(), (char *)outputFileName.ascii(), "node.dat" );
00136 
00137                 log.open(logFileName.ascii(), ios::app);
00138                 log<<" Done!</p>";
00139                 log.close();
00140                 messageLog->reload();
00141                 QApplication::processEvents();
00142 
00143                 if(showSG_DFrame->isChecked() == 1){
00144                         //QgsRasterLayer *tempLayer = new QgsRasterLayer("/backup/pihm/RasterProcessing/FillPits", "morgedem.asc");
00145                         applicationPointer->addRasterLayer(QStringList(outputFileName));
00146                 }
00147         }
00148 }
00149 
00150 void LinkGridDlg::help()
00151 {
00152         helpDialog* hlpDlg = new helpDialog(this, "Link Grid", 1, "helpFiles/linkgrid.html", "Help :: Link Grid");
00153         hlpDlg->show(); 
00154 
00155 }
00156 
00157 void LinkGridDlg::setApplicationPointer(QgisApp* appPtr){
00158     applicationPointer = appPtr;
00159 }

Generated on Sun Aug 5 17:34:00 2007 for PIHMgis by  doxygen 1.5.2