RasterProcessing/FillPits/fillpits.cpp

Go to the documentation of this file.
00001 #include <QtGui>
00002 #include "fillpits.h"
00003 #include "../../pihmRasterLIBS/flood.h"
00004 #include "../../pihmLIBS/helpDialog/helpdialog.h"
00005 
00006 #include "../../pihmLIBS/homeDir.h"
00007 
00008 #include <fstream>
00009 using namespace std;
00010 
00011 fillpitsDlg::fillpitsDlg(QWidget *parent)
00012 {
00013         setupUi(this);
00014         connect(inputBrowseButton, SIGNAL(clicked()), this, SLOT(inputBrowse()));
00015         connect(outputBrowseButton, SIGNAL(clicked()), this, SLOT(outputBrowse()));
00016         connect(runButton, SIGNAL(clicked()), this, SLOT(run()));
00017         connect(helpButton, SIGNAL(clicked()), this, SLOT(help()));
00018         connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
00019 }
00020 
00021 void fillpitsDlg::inputBrowse()
00022 {
00023         QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","DEM Grid File(*.adf *.asc)");
00024         inputFileLineEdit->setText(str);
00025 }
00026 
00027 void fillpitsDlg::outputBrowse()
00028 {
00029         QString temp = QFileDialog::getSaveFileName(this, "Choose File", "~/","DEM Grid File(*.adf *.asc)");
00030         QString tmp = temp;
00031         if(!(tmp.toLower()).endsWith(".asc")){
00032         tmp.append(".asc");
00033         temp = tmp;
00034         }
00035         
00036         outputFileLineEdit->setText(temp);
00037 }
00038 
00039 void fillpitsDlg::run()
00040 {
00041         QString inputFileName((inputFileLineEdit->text()));
00042         QString outputFileName((outputFileLineEdit->text()));
00043         
00044         QString logFileName("c:\log.html");
00045         ofstream log;
00046         log.open(logFileName.ascii());
00047         log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>";
00048         log.close();
00049         messageLog->setSource(logFileName);
00050         messageLog->setFocus();
00051         messageLog->setModified(TRUE);  
00052         
00053         ifstream inFile;   inFile.open((inputFileLineEdit->text()).ascii());
00054         ofstream outFile; outFile.open((outputFileLineEdit->text()).ascii());
00055         int runFlag = 1;
00056         
00057         log.open(logFileName.ascii(), ios::app);
00058         if(inputFileName.length()==0){
00059                 log<<"<p><font size=3 color=red> Error! Please input DEM File</p>";
00060                 runFlag = 0;
00061         }
00062         else{
00063                 log<<"</p>Checking... "<<inputFileName.ascii()<<"... ";
00064                 if(inFile == NULL){
00065                         log<<"<font size=3 color=red> Error!";
00066                         qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00067                         runFlag = 0;
00068                 }
00069                 else
00070                         log<<"Done!";
00071         }
00072         log.close();
00073         messageLog->reload();
00074         QApplication::processEvents();
00075         
00076         log.open(logFileName.ascii(), ios::app);
00077         if(outputFileName.length()==0){
00078                 log<<"<p><font size=3 color=red> Error! Please input Output File</p>";
00079                 runFlag = 0;
00080         }
00081         else{
00082                 log<<"</p><p>Checking... "<<outputFileName.ascii()<<"... ";
00083                 if(outFile == NULL){
00084                         log<<"<font size=3 color=red> Error!";
00085                         qWarning("\nCan not open output file name");
00086                         runFlag = 0;
00087                 }
00088                 else
00089                         log<<"Done!";
00090         }
00091         log.close();
00092         messageLog->reload();
00093         QApplication::processEvents();
00094 
00095         
00096         if(runFlag == 1){
00097                 
00098                 log.open(logFileName.ascii(), ios::app);
00099                 log<<"<p>Running Fill Pits...";
00100                 log.close();
00101                 messageLog->reload();
00102                 QApplication::processEvents();
00103                 
00104                 int err = flood((char *)inputFileName.ascii(), "dummy", (char *)outputFileName.ascii() );
00105                 
00106                 log.open(logFileName.ascii(), ios::app);
00107                 log<<" Done!";
00108                 log.close();
00109                 messageLog->reload();
00110                 QApplication::processEvents();
00111                 
00112                 if(showPF_DFrame->isChecked() == 1){
00113                         //qWarning("here");
00114                         applicationPointer->addRasterLayer(QStringList(outputFileName));
00115                         //QgsRasterLayer *tempLayer = new QgsRasterLayer("/backup/pihm/RasterProcessing/FillPits", "morgedem.asc");
00116                 }
00117         }
00118 }
00119 
00120 void fillpitsDlg::help()
00121 {
00122         helpDialog* hlpDlg = new helpDialog(this, "Fill Pits", 1, "helpFiles/fillpits.html", "Help :: Fill Pits");
00123         hlpDlg->show(); 
00124 }
00125 
00126 void fillpitsDlg::setApplicationPointer(QgisApp* appPtr){
00127     applicationPointer = appPtr;
00128 }

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