RasterProcessTool/Toolbox/SimulationSARTool/PowerSimulationIncoherent/QtSimulationGeoSARSigma0Dia...

172 lines
5.8 KiB
C++
Raw Normal View History

2025-03-12 04:15:26 +00:00
#include "QtSimulationGeoSARSigma0Dialog.h"
#include "ui_QtSimulationGeoSARSigma0Dialog.h"
#include <QFileDialog>
#include <QMessageBox>
#include "BaseTool.h"
#include "SigmaDatabase.h"
#include <ImageOperatorBase.h>
QtSimulationGeoSARSigma0Dialog::QtSimulationGeoSARSigma0Dialog(QWidget *parent)
: QDialog(parent), ui(new Ui::QtSimulationGeoSARSigma0DialogClass)
{
ui->setupUi(this);
// <20><><EFBFBD><EFBFBD><EFBFBD>źźͲ<C5BA>
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(onbtnaccepted()));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(onbtnrejected()));
connect(ui->InputIncAngleRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonIncAngleRasterClicked(bool)));
connect(ui->InputLandClsRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonLandClsRasterClicked(bool)));
connect(ui->InputClsWeightRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonClsWeightRasterClicked(bool)));
connect(ui->OutputTerrianRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonOutputTerrianRasterClicked(bool)));
connect(ui->OutputClsSARRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onpushButtonOutputClsSARRasterClicked(bool)));
}
QtSimulationGeoSARSigma0Dialog::~QtSimulationGeoSARSigma0Dialog()
{}
void QtSimulationGeoSARSigma0Dialog::onpushButtonIncAngleRasterClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tr(u8"ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>"), // <20><><EFBFBD><EFBFBD>
QString(), // Ĭ<><C4AC>·<EFBFBD><C2B7>
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
);
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (!fileName.isEmpty()) {
this->ui->InputIncAngleRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonLandClsRasterClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tr(u8"ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>"), // <20><><EFBFBD><EFBFBD>
QString(), // Ĭ<><C4AC>·<EFBFBD><C2B7>
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
);
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (!fileName.isEmpty()) {
this->ui->InputLandClsRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonClsWeightRasterClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tr(u8"ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>"), // <20><><EFBFBD><EFBFBD>
QString(), // Ĭ<><C4AC>·<EFBFBD><C2B7>
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
);
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (!fileName.isEmpty()) {
this->ui->InputClsWeightRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonOutputTerrianRasterClicked(bool)
{
QString fileName = QFileDialog::getSaveFileName(
this, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tr(u8"ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>"), // <20><><EFBFBD><EFBFBD>
QString(), // Ĭ<><C4AC>·<EFBFBD><C2B7>
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
);
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (!fileName.isEmpty()) {
this->ui->OutputTerrianRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
void QtSimulationGeoSARSigma0Dialog::onpushButtonOutputClsSARRasterClicked(bool)
{
QString fileName = QFileDialog::getSaveFileName(
this, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
tr(u8"ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>"), // <20><><EFBFBD><EFBFBD>
QString(), // Ĭ<><C4AC>·<EFBFBD><C2B7>
tr(u8"tif Files (*.tif);;data Files (*.data);;bin Files (*.bin);;All Files (*)") // <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
);
// <20><><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
if (!fileName.isEmpty()) {
this->ui->OutputClsSARRasterLineEdit->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"), tr(u8"û<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
void QtSimulationGeoSARSigma0Dialog::onbtnaccepted()
{
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
QString IncAngleRaster = this->ui->InputIncAngleRasterLineEdit->text(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
QString LandClsRaster = this->ui->InputLandClsRasterLineEdit->text(); // <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ļ<EFBFBD>
QString ClsWeightRaster = this->ui->InputClsWeightRasterLineEdit->text();// <20><><EFBFBD><EFBFBD> SigmaDatabase Ȩ<><C8A8><EFBFBD>ļ<EFBFBD>
QString OutputTerrianRaster = this->ui->OutputTerrianRasterLineEdit->text(); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>SAR<41>ļ<EFBFBD>
QString OutputClsSARRaster = this->ui->OutputClsSARRasterLineEdit->text();// <20><><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD><D8B1><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SAR<41>ļ<EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ĵ<EFBFBD>Сһ<D0A1>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD>
gdalImage IncAngle(IncAngleRaster);
gdalImage LandCls(LandClsRaster);
SigmaDatabase sigmads;
sigmads.readParamsFromFile(ClsWeightRaster.toStdString());
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
QFile::copy(IncAngleRaster, OutputTerrianRaster);
QFile::copy(IncAngleRaster, OutputClsSARRaster);
gdalImage OutputTerrian(OutputTerrianRaster);
gdalImage OutputClsSAR(OutputClsSARRaster);
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
Eigen::MatrixXd IncAngleData = IncAngle.getData(0, 0, IncAngle.height, IncAngle.width, 0);
Eigen::MatrixXd LandClsData = LandCls.getData(0, 0, LandCls.height, LandCls.width, 0);
Eigen::MatrixXd SigmaSARData = MuhlemanSigmaArray(IncAngleData);
Eigen::MatrixXd SigmaSARDataCls = SigmaSARData;
OutputTerrian.saveImage(SigmaSARData, 0, 0, 1);
for (long i = 0; i < LandClsData.rows(); i++)
{
for (long j = 0; j < LandClsData.cols(); j++)
{
double weight = sigmads.getAmpHH(LandClsData(i, j),IncAngleData(i,j)*d2r);
SigmaSARDataCls(i, j) = std::pow(10.0, weight/20.0);
}
}
OutputClsSAR.saveImage(SigmaSARDataCls, 0, 0, 1);
QMessageBox::information(nullptr, u8"<EFBFBD><EFBFBD>ʾ", u8"completed!!!");
}
void QtSimulationGeoSARSigma0Dialog::onbtnrejected()
{
this->close();
}