From fe5c3f41491dd706682cf9fa2e1eda772bee2bbe Mon Sep 17 00:00:00 2001 From: chenzenghui <3045316072@qq.com> Date: Tue, 20 May 2025 15:18:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GF3CalibrationAndGeocodingClass.cpp | 2 +- .../GF3CalibrationAndGeocodingClass.h | 1 - .../GF3CalibrationAndOrthLib.cpp | 71 ++---- .../GF3CalibrationAndOrthLib.h | 4 +- .../GF3CalibrationAndOrthLib.vcxproj | 24 +- .../GF3CalibrationAndOrthLib.vcxproj.filters | 6 + .../GF3CalibrationGeoCodingFunCUDA.cu | 9 +- .../GF3CalibrationGeoCodingFunCUDA.cuh | 18 ++ GF3CalibrationAndOrthLib/GF3Util.cpp | 1 + GF3CalibrationAndOrthLib/GF3Util.h | 13 + .../gf3calibrationandorthlib_global.h | 3 +- GF3StripPatchProcess/GF3RDZProcess.cu | 0 .../GF3StripPatchProcess.vcxproj | 18 +- .../GF3StripPatchProcess.vcxproj.filters | 14 +- .../QGF3StripBatchProcessDialog.cpp | 105 ++++++++ .../QGF3StripBatchProcessDialog.h | 40 +++ .../QGF3StripBatchProcessDialog.ui | 238 ++++++++++++++++++ GF3StripPatchProcess/main.cpp | 12 +- 18 files changed, 503 insertions(+), 76 deletions(-) create mode 100644 GF3CalibrationAndOrthLib/GF3Util.cpp create mode 100644 GF3CalibrationAndOrthLib/GF3Util.h delete mode 100644 GF3StripPatchProcess/GF3RDZProcess.cu create mode 100644 GF3StripPatchProcess/QGF3StripBatchProcessDialog.cpp create mode 100644 GF3StripPatchProcess/QGF3StripBatchProcessDialog.h create mode 100644 GF3StripPatchProcess/QGF3StripBatchProcessDialog.ui diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.cpp b/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.cpp index 2abf020..ff95b19 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.cpp +++ b/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.cpp @@ -18,7 +18,7 @@ ErrorCode GF3CalibrationRaster(QString inRasterPath, QString outRasterPath, doub gdalImageComplex outraster(outRasterPath); - long blocklines = Memory1GB * 2 / 8 / imgraster.width; + long blocklines = Memory1GB / 8 / imgraster.width*2; blocklines = blocklines < 100 ? 100 : blocklines; Eigen::MatrixXd imgArrb1 = Eigen::MatrixXd::Zero(blocklines, imgraster.width); Eigen::MatrixXd imgArrb2 = Eigen::MatrixXd::Zero(blocklines, imgraster.width); diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.h b/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.h index 8cb29bb..4bdc907 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.h +++ b/GF3CalibrationAndOrthLib/GF3CalibrationAndGeocodingClass.h @@ -24,7 +24,6 @@ ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT ImportGF3L1AProcess(QString inMetaxml // RD 算法类 ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT RD_PSTN(double& refrange,double& lamda, double& timeR, double& R, double& tx, double& ty, double& tz, double& slopex, double& slopey, double& slopez, GF3PolyfitSatelliteOribtModel& polyfitmodel, SatelliteOribtNode& node,double& d0,double& d1, double& d2, double& d3, double& d4); - //创建查找表 ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT GF3RDCreateLookTable(QString inxmlPath, QString indemPath, QString outworkdir, QString outlooktablePath, QString outLocalIncidenceAnglePath, bool localincAngleFlag=false); ErrorCode GF3CALIBRATIONANDORTHLIB_EXPORT GF3OrthSLC( QString inRasterPath, QString inlooktablePath, QString outRasterPath); diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.cpp b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.cpp index 3377076..fb9d2d8 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.cpp +++ b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.cpp @@ -8,9 +8,18 @@ #include "FileOperator.h" #include "GPUBaseTool.h" #include "GPUTool.cuh" +#include +// GPU相关的代码 +#include "GF3CalibrationGeoCodingFunCUDA.cuh" - -GF3CALIBRATIONANDORTHLIB_EXPORT int GF3_Sigma0_HH2VV(QString in_SigmaHHRasterPath, QString in_IncidencAngleRasterPath, QString out_SigmaVVRasterPath) +/// +/// 将HH极化转换为VV极化 +/// +/// +/// +/// +/// +int GF3_Sigma0_HH2VV(QString in_SigmaHHRasterPath, QString in_IncidencAngleRasterPath, QString out_SigmaVVRasterPath) { // step 1 检查输入合法性 { @@ -63,61 +72,23 @@ GF3CALIBRATIONANDORTHLIB_EXPORT int GF3_Sigma0_HH2VV(QString in_SigmaHHRasterPat std::shared_ptr sigmaHHRasterData = readDataArr(inSigmaHHRaster, 0, 0, height, width, 1, GDALREADARRCOPYMETHOD::VARIABLEMETHOD); std::shared_ptr incidenceAngleData = readDataArr(inIncidencAngleRaster, 0, 0, height, width, 1, GDALREADARRCOPYMETHOD::VARIABLEMETHOD); std::shared_ptr outSigmaVVRasterData = readDataArr(outSigmaVVRaster, 0, 0, height, width, 1, GDALREADARRCOPYMETHOD::VARIABLEMETHOD); - - // 分块执行数据 - int64_t block_count = Memory1MB / 8 * 500; // 500M内存 作为数据分块大小 - - // 创建交换内存 - - //double* sigmaHHRasterDataPtr_H = (double*)mallocCUDAHost(sizeof(double) * block_count); // 主机内存 - double* sigmaHHRasterDataPtr_D = (double*)mallocCUDADevice(sizeof(double) * block_count);// 设备内存 - - //double* incidenceAngleDataPtr_H = (double*)mallocCUDAHost(sizeof(double) * block_count); // 主机内存 - double* incidenceAngleDataPtr_D = (double*)mallocCUDADevice(sizeof(double) * block_count);// 设备内存 - - //double* outSigmaVVRasterDataPtr_H = (double*)mallocCUDAHost(sizeof(double) * block_count); // 主机内存 - double* outSigmaVVRasterDataPtr_D = (double*)mallocCUDADevice(sizeof(double) * block_count);// 设备内存 - - for (int64_t i = 0; i < pixel_count64; i += block_count) + +#pragma omp parallel for + for (int64_t i = 0; i < pixel_count64; i++) { - int64_t block_size = (i + block_count) > pixel_count64 ? pixel_count64 - i : block_count; - //采用内存拷贝 从主内存到分块内存 - HostToDevice(sigmaHHRasterDataPtr_D, sigmaHHRasterData.get() + i, sizeof(double) * block_size); - HostToDevice(incidenceAngleDataPtr_D, incidenceAngleData.get() + i, sizeof(double) * block_size); - // 执行GPU计算 - - - - - - // 从设备内存到主机内存 - DeviceToHost(outSigmaVVRasterDataPtr_D, outSigmaVVRasterData.get() + i, sizeof(double) * block_size); - + double sigmaHH = sigmaHHRasterData.get()[i]; + double incidenceAngle = incidenceAngleData.get()[i]; + double sigmaVV = sigmaHH * polartionConver_d(sigmaHH, incidenceAngle, 1.0, false); + outSigmaVVRasterData.get()[i] = sigmaVV; } - - - - // 强制释放内存 - - FreeCUDADevice(sigmaHHRasterDataPtr_D); - //FreeCUDAHost(sigmaHHRasterDataPtr_H); - FreeCUDADevice(incidenceAngleDataPtr_D); - //FreeCUDAHost(incidenceAngleDataPtr_H); - FreeCUDADevice(outSigmaVVRasterDataPtr_D); - //FreeCUDAHost(outSigmaVVRasterDataPtr_H); - + // 保存输出影像数据 + outSigmaVVRaster.saveImage(outSigmaVVRasterData,0,0,height,width,1); + // 释放内存 sigmaHHRasterData.reset(); incidenceAngleData.reset(); outSigmaVVRasterData.reset(); } - - - - - - - return -1;// 代表执行成功 } diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.h b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.h index 578f899..cf3e4be 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.h +++ b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.h @@ -23,10 +23,10 @@ /// /// /// -extern "C" GF3CALIBRATIONANDORTHLIB_EXPORT int GF3_Sigma0_HH2VV(QString in_SigmaHHRasterPath,QString in_IncidencAngleRasterPath,QString out_SigmaVVRasterPath); - +int GF3CALIBRATIONANDORTHLIB_EXPORT GF3_Sigma0_HH2VV(QString in_SigmaHHRasterPath,QString in_IncidencAngleRasterPath,QString out_SigmaVVRasterPath); + diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj index 19af8ab..e36338a 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj +++ b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj @@ -66,6 +66,26 @@ .;..\GPUBaseLib\GPUTool;..\GPUBaseLib;..\BaseCommonLibrary\ToolAbstract;..\BaseCommonLibrary\BaseTool;..\BaseCommonLibrary;$(IncludePath) + + + true + + + + + compute_86,sm_86 + true + + + true + true + stdcpp14 + stdc11 + + + cufft.lib;cudart.lib;cudadevrt.lib;%(AdditionalDependencies) + + true @@ -82,7 +102,7 @@ true - GF3CALIBRATIONANDORTHLIB_LIB;%(PreprocessorDefinitions) + GF3CALIBRATIONANDORTHLIB_LIB;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) Level3 true true @@ -98,6 +118,7 @@ + @@ -107,6 +128,7 @@ + diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj.filters b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj.filters index 583d053..95b5125 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj.filters +++ b/GF3CalibrationAndOrthLib/GF3CalibrationAndOrthLib.vcxproj.filters @@ -47,6 +47,9 @@ Header Files + + Header Files + @@ -65,5 +68,8 @@ Source Files + + Source Files + \ No newline at end of file diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cu b/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cu index 06c8b1e..62578b9 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cu +++ b/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cu @@ -49,7 +49,7 @@ __device__ __host__ double Computrer_polartionConver_rpol_d(double inangle, doub return rpol; } -__host__ __device__ float polartionConver_f(float insig, float inangle, float alpha = 1.0, bool isvv = true) +__host__ __device__ float polartionConver_f(float insig, float inangle, float alpha , bool isvv ) { float rpol = Computrer_polartionConver_rpol_f(inangle, alpha); @@ -69,8 +69,7 @@ __host__ __device__ float polartionConver_f(float insig, float inangle, float al } - -__host__ __device__ double polartionConver_d(double insig, double inangle, double alpha = 1.0, bool isvv = true) +__host__ __device__ double polartionConver_d(double insig, double inangle, double alpha , bool isvv ) { double rpol = Computrer_polartionConver_rpol_d(inangle, alpha); @@ -88,6 +87,10 @@ __host__ __device__ double polartionConver_d(double insig, double inangle, doubl } } +/** 核函数部分 ******************************************************************************************************************************/ + +/** 对外调用函数部分 ******************************************************************************************************************************/ + diff --git a/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cuh b/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cuh index b29228d..b4e6fab 100644 --- a/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cuh +++ b/GF3CalibrationAndOrthLib/GF3CalibrationGeoCodingFunCUDA.cuh @@ -10,6 +10,7 @@ #include #include +/** 核函数 *********************************************************************************************************************/ /// /// 计算极化转换系数(float) /// @@ -50,5 +51,22 @@ extern __host__ __device__ float polartionConver_f(float insig, float inangle, f + +/** 对外调用函数部分 ******************************************************************************************************************************/ + +extern "C" void GPUComputePolarizationConver_f( + float* insig, float* inangle, float* alpha, + bool isvv, int count, + float* outsig +); +extern "C" void GPUComputePolarizationConver_d( + double* insig, double* inangle, double* alpha, + bool isvv, int count, + double* outsig +); + + + + #endif diff --git a/GF3CalibrationAndOrthLib/GF3Util.cpp b/GF3CalibrationAndOrthLib/GF3Util.cpp new file mode 100644 index 0000000..2ef785f --- /dev/null +++ b/GF3CalibrationAndOrthLib/GF3Util.cpp @@ -0,0 +1 @@ +#include "GF3Util.h" diff --git a/GF3CalibrationAndOrthLib/GF3Util.h b/GF3CalibrationAndOrthLib/GF3Util.h new file mode 100644 index 0000000..dbe3ae3 --- /dev/null +++ b/GF3CalibrationAndOrthLib/GF3Util.h @@ -0,0 +1,13 @@ +#pragma once +#ifndef __GF3UTIL_H__ +#define __GF3UTIL_H__ +#include "gf3calibrationandorthlib_global.h" + + + + + + + + +#endif \ No newline at end of file diff --git a/GF3CalibrationAndOrthLib/gf3calibrationandorthlib_global.h b/GF3CalibrationAndOrthLib/gf3calibrationandorthlib_global.h index d28cac9..a423e18 100644 --- a/GF3CalibrationAndOrthLib/gf3calibrationandorthlib_global.h +++ b/GF3CalibrationAndOrthLib/gf3calibrationandorthlib_global.h @@ -1,8 +1,7 @@ #pragma once #ifndef __GF3CALIBRATIONANDORTHLIB_GLOBAL_H__ #define __GF3CALIBRATIONANDORTHLIB_GLOBAL_H__ -#include - + #ifdef GF3CALIBRATIONANDORTHLIB_LIB #define GF3CALIBRATIONANDORTHLIB_EXPORT __declspec(dllexport) diff --git a/GF3StripPatchProcess/GF3RDZProcess.cu b/GF3StripPatchProcess/GF3RDZProcess.cu deleted file mode 100644 index e69de29..0000000 diff --git a/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj b/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj index 678b921..32b3550 100644 --- a/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj +++ b/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj @@ -37,12 +37,12 @@ tools_qt5 - core + core;gui;widgets debug tools_qt5 - core + core;xml;sql;opengl;gui;widgets;location;dbus;charts;datavisualization release @@ -62,10 +62,14 @@ + true + true + true + true - cufft.lib;cudart.lib;cudadevrt.lib;%(AdditionalDependencies) + %(AdditionalDependencies) @@ -91,16 +95,20 @@ Console - false + DebugFull true true + - + + + + diff --git a/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj.filters b/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj.filters index a6c33a5..341be1e 100644 --- a/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj.filters +++ b/GF3StripPatchProcess/GF3StripPatchProcess.vcxproj.filters @@ -29,10 +29,18 @@ Source Files + + Source Files + - - GPULib - + + Header Files + + + + + Form Files + \ No newline at end of file diff --git a/GF3StripPatchProcess/QGF3StripBatchProcessDialog.cpp b/GF3StripPatchProcess/QGF3StripBatchProcessDialog.cpp new file mode 100644 index 0000000..8ab374b --- /dev/null +++ b/GF3StripPatchProcess/QGF3StripBatchProcessDialog.cpp @@ -0,0 +1,105 @@ +#include "QGF3StripBatchProcessDialog.h" +#include "ui_QGF3StripBatchProcessDialog.h" +#include +#include + +QGF3StripBatchProcessDialog::QGF3StripBatchProcessDialog(QWidget *parent) + : QDialog(parent), ui(new Ui::QGF3StripBatchProcessDialogClass) +{ + ui->setupUi(this); + + QObject::connect(ui->pushButtonAdd, SIGNAL(clicked(bool)), this, SLOT(onpushButtonAddClicked(bool))); + QObject::connect(ui->pushButtonRemove, SIGNAL(clicked(bool)), this, SLOT(onpushButtonRemoveClicked(bool))); + QObject::connect(ui->pushButtonWorkSpace, SIGNAL(clicked(bool)), this, SLOT(onpushButtonWorkSpaceClicked(bool))); + QObject::connect(ui->checkBoxDEM, SIGNAL(stateChanged(int)), this, SLOT(ontstateChanged(int))); + QObject::connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(onreject())); + QObject::connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(onaccept())); + + + +} + +QGF3StripBatchProcessDialog::~QGF3StripBatchProcessDialog() +{} + +void QGF3StripBatchProcessDialog::onaccept() +{ + +} + +void QGF3StripBatchProcessDialog::onreject() +{ + this->close(); +} + +void QGF3StripBatchProcessDialog::onpushButtonAddClicked(bool) +{ + QStringList fileNames = QFileDialog::getOpenFileNames( + this, // 父窗口 + tr(u8"选择GF3条带L1A压缩包"), // 标题 + QString(), // 默认路径 + tr(u8"tar.gz (*.tar.gz);;tar (*.tar);;All Files (*)") // 文件过滤器 + ); + + // 如果用户选择了文件 + if (!fileNames.isEmpty()) { + QString message = "选择的文件有:\n"; + for (const QString& fileName : fileNames) { + this->ui->listWidgetMetaxml->addItem(fileName); + } + } + else { + QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。")); + } +} + +void QGF3StripBatchProcessDialog::onpushButtonRemoveClicked(bool) +{ + QList selectedItems = this->ui->listWidgetMetaxml->selectedItems(); + for (QListWidgetItem* item : selectedItems) { + delete this->ui->listWidgetMetaxml->takeItem(this->ui->listWidgetMetaxml->row(item)); + } +} + +void QGF3StripBatchProcessDialog::onpushButtonWorkSpaceClicked(bool) +{ + // 调用文件选择对话框并选择一个 .tif 文件 + QString fileName = QFileDialog::getExistingDirectory(this, u8"选择工作空间路径", ""); + + if (!fileName.isEmpty()) { + ui->lineEditWorkDir->setText(fileName); + } + else { + QMessageBox::information(this, u8"没有选择文件夹", u8"没有选择任何文件夹"); + } +} + +void QGF3StripBatchProcessDialog::ontstateChanged(int checked) +{ + bool checkedflag = ui->checkBoxDEM->isChecked(); + if (!checkedflag) { + ui->pushButton_lineDEM->setEnabled(true); + ui->lineEdit_DEM->setEnabled(true); + } + else { + ui->pushButton_lineDEM->setEnabled(false); + ui->lineEdit_DEM->setEnabled(false); + } +} + +void showQGF3StripBatchProcessDialog(QWidget* parent) +{ + QGF3StripBatchProcessDialog* dialog = new QGF3StripBatchProcessDialog(parent); + dialog->setWindowTitle(u8"GF3条带影像正射批量处理"); + dialog->setAttribute(Qt::WA_DeleteOnClose); + dialog->show(); +} + +QString getDefaultDEMFilePath() +{ + QString fileName = QFileDialog::getOpenFileName(nullptr, u8"选择DEM文件", "", u8"tif (*.tif);;All Files (*)"); + return QString(); +} + + + diff --git a/GF3StripPatchProcess/QGF3StripBatchProcessDialog.h b/GF3StripPatchProcess/QGF3StripBatchProcessDialog.h new file mode 100644 index 0000000..634bab9 --- /dev/null +++ b/GF3StripPatchProcess/QGF3StripBatchProcessDialog.h @@ -0,0 +1,40 @@ +#pragma once +#ifndef __QGF3STRIPBATCHPROCESSDIALOG_H__ +#define __QGF3STRIPBATCHPROCESSDIALOG_H__ + +#include + +namespace Ui{ + class QGF3StripBatchProcessDialogClass; +} + +class QGF3StripBatchProcessDialog : public QDialog +{ + Q_OBJECT + +public: + QGF3StripBatchProcessDialog(QWidget *parent = nullptr); + ~QGF3StripBatchProcessDialog(); + +public slots: + void onaccept(); + void onreject(); + void onpushButtonAddClicked(bool); + void onpushButtonRemoveClicked(bool); + void onpushButtonWorkSpaceClicked(bool); + + void ontstateChanged(int checked); + + +private: + Ui::QGF3StripBatchProcessDialogClass* ui; +}; + + +// 模块显示调用 +void showQGF3StripBatchProcessDialog(QWidget* parent = nullptr); +QString getDefaultDEMFilePath(); + + + +#endif diff --git a/GF3StripPatchProcess/QGF3StripBatchProcessDialog.ui b/GF3StripPatchProcess/QGF3StripBatchProcessDialog.ui new file mode 100644 index 0000000..229548d --- /dev/null +++ b/GF3StripPatchProcess/QGF3StripBatchProcessDialog.ui @@ -0,0 +1,238 @@ + + + QGF3StripBatchProcessDialogClass + + + + 0 + 0 + 787 + 580 + + + + QGF3StripBatchProcessDialog + + + + + + + + + 12 + + + + GF3鏉″甫鍒楄〃锛圠1A锛 + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QAbstractItemView::MultiSelection + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 30 + + + + 閫夋嫨 + + + + + + + + 0 + 30 + + + + 鍒犻櫎 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + 鍙傛暟 + + + + + + + 0 + 30 + + + + 閫夋嫨 + + + + + + + 鍒嗚鲸鐜囷紙m锛 + + + + + + + 榛樿DEM + + + + + + + + 0 + 30 + + + + + + + + DEM鏂囦欢鍦板潃锛 + + + + + + + + 0 + 30 + + + + 100000.000000000000000 + + + + + + + + + + + + + 0 + 30 + + + + 杈撳嚭宸ヤ綔绌洪棿锛 + + + + + + + + 0 + 30 + + + + + + + + + 0 + 30 + + + + 閫夋嫨 + + + + + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + diff --git a/GF3StripPatchProcess/main.cpp b/GF3StripPatchProcess/main.cpp index 3b390a8..dbc1845 100644 --- a/GF3StripPatchProcess/main.cpp +++ b/GF3StripPatchProcess/main.cpp @@ -7,18 +7,14 @@ * @version 1.0 */ #include - - +#include "QGF3StripBatchProcessDialog.h" +#include int main(int argc, char *argv[]) { - QCoreApplication a(argc, argv); - - - - - + QApplication a(argc, argv); + showQGF3StripBatchProcessDialog(nullptr); return a.exec(); }