RasterProcessing/StreamPolyLine/streampolyline.cpp

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

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