RasterProcessing/FlowGrid/flowgrid.cpp

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

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