183 lines
6.8 KiB
C++
183 lines
6.8 KiB
C++
|
|
#include "WindInverstorDialog.h"
|
|||
|
|
#include "WindInverseFunction.h"
|
|||
|
|
WindInverstorDialog::WindInverstorDialog(QWidget *parent)
|
|||
|
|
: QMainWindow(parent)
|
|||
|
|
{
|
|||
|
|
setupUI();
|
|||
|
|
connectSlots();
|
|||
|
|
setWindowTitle(u8"<EFBFBD><EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
setMinimumSize(800, 400);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
WindInverstorDialog::~WindInverstorDialog()
|
|||
|
|
{}
|
|||
|
|
|
|||
|
|
void WindInverstorDialog::browseWindDirFile()
|
|||
|
|
{
|
|||
|
|
QString file = QFileDialog::getOpenFileName(this, u8"ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>",
|
|||
|
|
windDirLineEdit->text(),
|
|||
|
|
"Binary files (*.bin);;All files (*.*)");
|
|||
|
|
if (!file.isEmpty()) {
|
|||
|
|
windDirLineEdit->setText(file);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
void WindInverstorDialog::setupUI()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>벿<EFBFBD><EBB2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
QWidget* centralWidget = new QWidget(this);
|
|||
|
|
setCentralWidget(centralWidget);
|
|||
|
|
|
|||
|
|
QVBoxLayout* mainLayout = new QVBoxLayout(centralWidget);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
QGroupBox* fileGroup = new QGroupBox(u8"<EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", this);
|
|||
|
|
QVBoxLayout* fileLayout = new QVBoxLayout(fileGroup);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
QHBoxLayout* windDirLayout = new QHBoxLayout();
|
|||
|
|
QLabel* windDirLabel = new QLabel(u8"<EFBFBD><EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>:", this);
|
|||
|
|
windDirLineEdit = new QLineEdit(this);
|
|||
|
|
windDirLineEdit->setText("D:\\Programs\\SpacetyLabelAIPlante\\Manual-Labeling-Tool\\WindSpeedModel\\TestData\\SAR_EC_20240801\\total_precipitation2024080110_resample.bin");
|
|||
|
|
windDirLineEdit->setMinimumWidth(400);
|
|||
|
|
browseWindDirBtn = new QPushButton(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", this);
|
|||
|
|
windDirLayout->addWidget(windDirLabel);
|
|||
|
|
windDirLayout->addWidget(windDirLineEdit);
|
|||
|
|
windDirLayout->addWidget(browseWindDirBtn);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
QHBoxLayout* incAngleLayout = new QHBoxLayout();
|
|||
|
|
QLabel* incAngleLabel = new QLabel(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>:", this);
|
|||
|
|
incAngleLineEdit = new QLineEdit(this);
|
|||
|
|
incAngleLineEdit->setText("D:\\Programs\\SpacetyLabelAIPlante\\Manual-Labeling-Tool\\WindSpeedModel\\TestData\\SAR_EC_20240801\\4254-DB-IncidenceAngle-GEO.bin");
|
|||
|
|
incAngleLineEdit->setMinimumWidth(400);
|
|||
|
|
browseIncAngleBtn = new QPushButton(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", this);
|
|||
|
|
incAngleLayout->addWidget(incAngleLabel);
|
|||
|
|
incAngleLayout->addWidget(incAngleLineEdit);
|
|||
|
|
incAngleLayout->addWidget(browseIncAngleBtn);
|
|||
|
|
|
|||
|
|
// SAR sigma0<61>ļ<EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
QHBoxLayout* sarSigmaLayout = new QHBoxLayout();
|
|||
|
|
QLabel* sarSigmaLabel = new QLabel(u8"SAR sigma0<61>ļ<EFBFBD>:", this);
|
|||
|
|
sarSigmaLineEdit = new QLineEdit(this);
|
|||
|
|
sarSigmaLineEdit->setText("D:\\Programs\\SpacetyLabelAIPlante\\Manual-Labeling-Tool\\WindSpeedModel\\TestData\\SAR_EC_20240801\\4254-DB-GEO.bin");
|
|||
|
|
sarSigmaLineEdit->setMinimumWidth(400);
|
|||
|
|
browseSarSigmaBtn = new QPushButton(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", this);
|
|||
|
|
sarSigmaLayout->addWidget(sarSigmaLabel);
|
|||
|
|
sarSigmaLayout->addWidget(sarSigmaLineEdit);
|
|||
|
|
sarSigmaLayout->addWidget(browseSarSigmaBtn);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1>
|
|||
|
|
QHBoxLayout* outputLayout = new QHBoxLayout();
|
|||
|
|
QLabel* outputLabel = new QLabel(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>:", this);
|
|||
|
|
outputLineEdit = new QLineEdit(this);
|
|||
|
|
outputLineEdit->setText("D:\\Programs\\SpacetyLabelAIPlante\\Manual-Labeling-Tool\\WindSpeedModel\\TestData\\InverserWindSpeed.bin");
|
|||
|
|
outputLineEdit->setMinimumWidth(400);
|
|||
|
|
browseOutputBtn = new QPushButton(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>...", this);
|
|||
|
|
outputLayout->addWidget(outputLabel);
|
|||
|
|
outputLayout->addWidget(outputLineEdit);
|
|||
|
|
outputLayout->addWidget(browseOutputBtn);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD>
|
|||
|
|
fileLayout->addLayout(windDirLayout);
|
|||
|
|
fileLayout->addLayout(incAngleLayout);
|
|||
|
|
fileLayout->addLayout(sarSigmaLayout);
|
|||
|
|
fileLayout->addLayout(outputLayout);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť<EFBFBD><C5A5>
|
|||
|
|
QHBoxLayout* buttonLayout = new QHBoxLayout();
|
|||
|
|
startBtn = new QPushButton(u8"<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", this);
|
|||
|
|
cancelBtn = new QPushButton(u8"ȡ<EFBFBD><EFBFBD>", this);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ð<EFBFBD>ť<EFBFBD><C5A5>ʽ
|
|||
|
|
startBtn->setStyleSheet("QPushButton { background-color: #4CAF50; color: white; font-weight: bold; padding: 8px 16px; }");
|
|||
|
|
cancelBtn->setStyleSheet("QPushButton { background-color: #f44336; color: white; font-weight: bold; padding: 8px 16px; }");
|
|||
|
|
|
|||
|
|
buttonLayout->addStretch();
|
|||
|
|
buttonLayout->addWidget(startBtn);
|
|||
|
|
buttonLayout->addWidget(cancelBtn);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
mainLayout->addWidget(fileGroup);
|
|||
|
|
mainLayout->addStretch();
|
|||
|
|
mainLayout->addLayout(buttonLayout);
|
|||
|
|
}
|
|||
|
|
void WindInverstorDialog::browseIncAngleFile()
|
|||
|
|
{
|
|||
|
|
QString file = QFileDialog::getOpenFileName(this, u8"ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>",
|
|||
|
|
incAngleLineEdit->text(),
|
|||
|
|
"Binary files (*.bin);;All files (*.*)");
|
|||
|
|
if (!file.isEmpty()) {
|
|||
|
|
incAngleLineEdit->setText(file);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WindInverstorDialog::browseSarSigmaFile()
|
|||
|
|
{
|
|||
|
|
QString file = QFileDialog::getOpenFileName(this, u8"ѡ<EFBFBD><EFBFBD>SAR sigma0<61>ļ<EFBFBD>",
|
|||
|
|
sarSigmaLineEdit->text(),
|
|||
|
|
"Binary files (*.bin);;All files (*.*)");
|
|||
|
|
if (!file.isEmpty()) {
|
|||
|
|
sarSigmaLineEdit->setText(file);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WindInverstorDialog::browseOutputFile()
|
|||
|
|
{
|
|||
|
|
QString file = QFileDialog::getSaveFileName(this, u8"ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>",
|
|||
|
|
outputLineEdit->text(),
|
|||
|
|
"Binary files (*.bin);;All files (*.*)");
|
|||
|
|
if (!file.isEmpty()) {
|
|||
|
|
outputLineEdit->setText(file);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WindInverstorDialog::startInversion()
|
|||
|
|
{
|
|||
|
|
// <20><>֤<EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
|
|||
|
|
if (windDirLineEdit->text().isEmpty() ||
|
|||
|
|
incAngleLineEdit->text().isEmpty() ||
|
|||
|
|
sarSigmaLineEdit->text().isEmpty() ||
|
|||
|
|
outputLineEdit->text().isEmpty()) {
|
|||
|
|
QMessageBox::warning(this, u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
QString in_wind_dir_path = windDirLineEdit->text();
|
|||
|
|
QString in_inc_angle_path = incAngleLineEdit->text();
|
|||
|
|
QString in_sar_sigma0_path = sarSigmaLineEdit->text();
|
|||
|
|
QString out_wind_speed_path = outputLineEdit->text();
|
|||
|
|
windSpeedInversionProcess(in_wind_dir_path,
|
|||
|
|
in_inc_angle_path,
|
|||
|
|
in_sar_sigma0_path,
|
|||
|
|
out_wind_speed_path);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD><D3B7>ٷ<EFBFBD><D9B7>ݵĺ<DDB5><C4BA>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
QMessageBox::information(this, u8"<EFBFBD><EFBFBD>ʾ", u8"<EFBFBD><EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD>ݴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: " +
|
|||
|
|
windDirLineEdit->text() +
|
|||
|
|
u8"\n<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>: " + outputLineEdit->text());
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WindInverstorDialog::closeApplication()
|
|||
|
|
{
|
|||
|
|
QMessageBox::StandardButton reply;
|
|||
|
|
reply = QMessageBox::question(this, u8"ȷ<EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD>", u8"ȷ<EFBFBD><EFBFBD>Ҫ<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
|
|||
|
|
QMessageBox::Yes | QMessageBox::No);
|
|||
|
|
if (reply == QMessageBox::Yes) {
|
|||
|
|
close();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void WindInverstorDialog::connectSlots()
|
|||
|
|
{
|
|||
|
|
connect(browseWindDirBtn, &QPushButton::clicked, this, &WindInverstorDialog::browseWindDirFile);
|
|||
|
|
connect(browseIncAngleBtn, &QPushButton::clicked, this, &WindInverstorDialog::browseIncAngleFile);
|
|||
|
|
connect(browseSarSigmaBtn, &QPushButton::clicked, this, &WindInverstorDialog::browseSarSigmaFile);
|
|||
|
|
connect(browseOutputBtn, &QPushButton::clicked, this, &WindInverstorDialog::browseOutputFile);
|
|||
|
|
connect(startBtn, &QPushButton::clicked, this, &WindInverstorDialog::startInversion);
|
|||
|
|
connect(cancelBtn, &QPushButton::clicked, this, &WindInverstorDialog::closeApplication);
|
|||
|
|
}
|
|||
|
|
|