diff --git a/Toolbox/SimulationSARTool/SARImage/ImageNetOperator.cpp b/Toolbox/SimulationSARTool/SARImage/ImageNetOperator.cpp index 44f98c9..4f013c4 100644 --- a/Toolbox/SimulationSARTool/SARImage/ImageNetOperator.cpp +++ b/Toolbox/SimulationSARTool/SARImage/ImageNetOperator.cpp @@ -787,11 +787,118 @@ int ReflectTable_WGS2Range(QString dem_rc_path,QString outOriSimTiffPath,QStrin int ResampleEChoDataFromGeoEcho(QString L2echodataPath, QString RangeLooktablePath, QString L1AEchoDataPath) { gdalImageComplex echodata(L2echodataPath); gdalImage looktable(RangeLooktablePath); + gdalImageComplex l1adata = CreategdalImageComplexNoProj(L1AEchoDataPath, looktable.height, looktable.width, 1, true); + + Eigen::MatrixXd imglonArr = looktable.getData(0, 0, looktable.height, looktable.width, 1); + Eigen::MatrixXd imglatArr = looktable.getData(0, 0, looktable.height, looktable.width, 2); + + Eigen::MatrixXcd echoArr = echodata.getDataComplex(0, 0, echodata.height, echodata.width, 1); + Eigen::MatrixXcd l1aArr= l1adata.getDataComplex(0, 0, l1adata.height, l1adata.width, 1); + l1aArr = l1aArr.array() * 0; + long imgheight = looktable.height; + long imgwidth = looktable.width; + for (long i = 0; i < imgheight; i++) { + //printf("\rprocess:%f precent\t\t\t",i*100.0/imgheight); + for (long j = 0; j < imgwidth; j++) { + double lon = imglonArr(i, j); + double lat = imglatArr(i, j); + Landpoint point = echodata.getRow_Col(lon, lat); + if (point.lon<1 || point.lon>echodata.width - 2 || point.lat < 1 || point.lat >echodata.height - 2) { + continue; + } + else {} + // 实部插值 + { + Landpoint p0, p11, p21, p12, p22; + p0.lon = point.lon; + p0.lat = point.lat; + + p11.lon = floor(p0.lon); + p11.lat = floor(p0.lat); + p11.ati = echoArr(long(p11.lat), long(p11.lon)).real(); + + p12.lon = ceil(p0.lon); + p12.lat = floor(p0.lat); + p12.ati = echoArr(long(p12.lat), long(p12.lon)).real(); + + p21.lon = floor(p0.lon); + p21.lat = ceil(p0.lat); + p21.ati = echoArr(long(p21.lat), long(p21.lon)).real(); + + p22.lon = ceil(p0.lon); + p22.lat = ceil(p0.lat); + p22.ati = echoArr(long(p22.lat), long(p22.lon)).real(); + + p0.lon = p0.lon - p11.lon; + p0.lat = p0.lat - p11.lat; + + p12.lon = p12.lon - p11.lon; + p12.lat = p12.lat - p11.lat; + + p21.lon = p21.lon - p11.lon; + p21.lat = p21.lat - p11.lat; + + p22.lon = p22.lon - p11.lon; + p22.lat = p22.lat - p11.lat; + + p11.lon = p11.lon - p11.lon; + p11.lat = p11.lat - p11.lat; + + p0.ati = Bilinear_interpolation(p0, p11, p21, p12, p22); + l1aArr(i, j).real(p0.ati); + } + //虚部插值 + { + Landpoint p0, p11, p21, p12, p22; + + p0.lon = point.lon; + p0.lat = point.lat; + + p11.lon = floor(p0.lon); + p11.lat = floor(p0.lat); + p11.ati = echoArr(long(p11.lat), long(p11.lon)).imag(); + + p12.lon = ceil(p0.lon); + p12.lat = floor(p0.lat); + p12.ati = echoArr(long(p12.lat), long(p12.lon)).imag(); + + p21.lon = floor(p0.lon); + p21.lat = ceil(p0.lat); + p21.ati = echoArr(long(p21.lat), long(p21.lon)).imag(); + + p22.lon = ceil(p0.lon); + p22.lat = ceil(p0.lat); + p22.ati = echoArr(long(p22.lat), long(p22.lon)).imag(); + + p0.lon = p0.lon - p11.lon; + p0.lat = p0.lat - p11.lat; + + p12.lon = p12.lon - p11.lon; + p12.lat = p12.lat - p11.lat; + + p21.lon = p21.lon - p11.lon; + p21.lat = p21.lat - p11.lat; + + p22.lon = p22.lon - p11.lon; + p22.lat = p22.lat - p11.lat; + + p11.lon = p11.lon - p11.lon; + p11.lat = p11.lat - p11.lat; + + p0.ati = Bilinear_interpolation(p0, p11, p21, p12, p22); + l1aArr(i, j).imag(p0.ati); + } + + } + } + + l1adata.saveImage(l1aArr, 0, 0, 1); + return 0; } diff --git a/Toolbox/SimulationSARTool/SARImage/QSARSimulationComplexEchoDataDialog.cpp b/Toolbox/SimulationSARTool/SARImage/QSARSimulationComplexEchoDataDialog.cpp index b1057d2..48a8d51 100644 --- a/Toolbox/SimulationSARTool/SARImage/QSARSimulationComplexEchoDataDialog.cpp +++ b/Toolbox/SimulationSARTool/SARImage/QSARSimulationComplexEchoDataDialog.cpp @@ -90,8 +90,8 @@ void QSARSimulationComplexEchoDataDialog::onbuttonBox_accepted() QString l1AEchoDataPath = this->ui->lineEditL1AEchoDataPath->text().trimmed(); - - + ResampleEChoDataFromGeoEcho(echoDataPath, RangelookTablePath, l1AEchoDataPath); + QMessageBox::information(this, tr(u8"提示"), tr(u8"没有选择任何文件。")); } void QSARSimulationComplexEchoDataDialog::onbuttonBox_rejected() diff --git a/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.cpp b/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.cpp new file mode 100644 index 0000000..aade224 --- /dev/null +++ b/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.cpp @@ -0,0 +1,138 @@ +#include "QSimulationBPImageMultiProduction.h" +#include +#include +#include "TBPImageAlgCls.h" +#include "EchoDataFormat.h" +#include +#include +#include "ui_QSimulationBPImageMultiProduction.h" + + +QSimulationBPImageMultiProduction::QSimulationBPImageMultiProduction(QWidget *parent) + : QDialog(parent),ui(new Ui::QSimulationBPImageMultiProductionClass) +{ + ui->setupUi(this); + ui->checkBox->setEnabled(false); + ui->checkBox->setCheckable(true); + ui->checkBox->setChecked(true); + + QObject::connect(ui->pushButtonEchoSelect, SIGNAL(clicked()), this, SLOT(onpushButtonEchoSelectClicked())); + QObject::connect(ui->pushButtonImageSelect, SIGNAL(clicked()), this, SLOT(onpushButtonImageSelectClicked())); + QObject::connect(ui->GridNetBtn, SIGNAL(clicked()), this, SLOT(onpushButtonGridNetSelectClicked())); + QObject::connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(onbtnaccepted())); + QObject::connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(onbtnrejected())); + QObject::connect(ui->checkBox, SIGNAL(stateChanged(int)), this, SLOT(oncheckboxTrigged(int))); + + + + +} + +QSimulationBPImageMultiProduction::~QSimulationBPImageMultiProduction() +{} + +void QSimulationBPImageMultiProduction::onpushButtonEchoSelectClicked() +{ + QString fileNames = QFileDialog::getOpenFileName( + this, // 父窗口 + tr(u8"选择影像文件"), // 标题 + QString(), // 默认路径 + tr(u8"xml Files (*.xml);;All Files (*)") // 文件过滤器 + ); + + // 如果用户选择了文件 + if (!fileNames.isEmpty()) { + QString message = "选择的文件有:\n"; + this->ui->lineEditEchoPath->setText(fileNames); + } + else { + QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。")); + } +} + +void QSimulationBPImageMultiProduction::onpushButtonImageSelectClicked() +{ + QString fileNames = QFileDialog::getSaveFileName( + this, // 父窗口 + tr(u8"选择影像文件"), // 标题 + QString(), // 默认路径 + tr(u8"All Files(*)") // 文件过滤器 + ); + + // 如果用户选择了文件 + if (!fileNames.isEmpty()) { + this->ui->lineEditImagePath->setText(fileNames); + } + else { + QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。")); + } +} + +void QSimulationBPImageMultiProduction::onbtnaccepted() +{ + this->hide(); + QString echofile = this->ui->lineEditEchoPath->text().trimmed(); + QString outImageFolder = getParantFromPath(this->ui->lineEditImagePath->text().trimmed()); + QString imagename = getFileNameFromPath(this->ui->lineEditImagePath->text().trimmed()); + std::shared_ptr echoL0ds(new EchoL0Dataset); + echoL0ds->Open(echofile); + + std::shared_ptr< SARSimulationImageL1Dataset> imagL1(new SARSimulationImageL1Dataset); + imagL1->setCenterAngle(echoL0ds->getCenterAngle()); + imagL1->setCenterFreq(echoL0ds->getCenterFreq()); + imagL1->setNearRange(echoL0ds->getNearRange()); + imagL1->setRefRange((echoL0ds->getNearRange() + echoL0ds->getFarRange()) / 2); + imagL1->setFarRange(echoL0ds->getFarRange()); + imagL1->setFs(echoL0ds->getFs()); + imagL1->setLookSide(echoL0ds->getLookSide()); + + if (ui->checkBox->isChecked()) { + gdalImage imgxyzimg(ui->lineEdit->text().trimmed()); + imagL1->OpenOrNew(outImageFolder, imagename, imgxyzimg.height, imgxyzimg.width); + } + else { + imagL1->OpenOrNew(outImageFolder, imagename, echoL0ds->getPluseCount(), echoL0ds->getPlusePoints()); + } + + + TBPImageAlgCls TBPimag; + TBPimag.setEchoL0(echoL0ds); + TBPimag.setImageL1(imagL1); + long cpucore_num = std::thread::hardware_concurrency(); + TBPimag.setGPU(true); + TBPimag.ProcessWithGridNet(cpucore_num,ui->lineEdit->text().trimmed()); + + this->show(); + QMessageBox::information(this,u8"成像",u8"成像结束"); + +} + +void QSimulationBPImageMultiProduction::onbtnrejected() +{ + this->close(); +} + +void QSimulationBPImageMultiProduction::oncheckboxTrigged(int) +{ + this->ui->lineEdit->setEnabled(this->ui->checkBox->isChecked()); + this->ui->GridNetBtn->setEnabled(this->ui->checkBox->isChecked()); + +} + +void QSimulationBPImageMultiProduction::onpushButtonGridNetSelectClicked( ) +{ + QString fileNames = QFileDialog::getOpenFileName( + this, // 父窗口 + tr(u8"选择影像文件"), // 标题 + QString(), // 默认路径 + tr(u8"All Files(*);;dat(*.dat);;tif(*.tif);;tiff(*.tiff)") // 文件过滤器 + ); + + // 如果用户选择了文件 + if (!fileNames.isEmpty()) { + this->ui->lineEdit->setText(fileNames); + } + else { + QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。")); + } +} diff --git a/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.h b/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.h new file mode 100644 index 0000000..dc84ee7 --- /dev/null +++ b/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.h @@ -0,0 +1,31 @@ +#pragma once +#include "simulationsartool_global.h" +#include + +namespace Ui { + class QSimulationBPImageMultiProductionClass; +} + + + +class SIMULATIONSARTOOL_EXPORT QSimulationBPImageMultiProduction : public QDialog +{ + Q_OBJECT + +public: + QSimulationBPImageMultiProduction(QWidget *parent = nullptr); + ~QSimulationBPImageMultiProduction(); + + +public slots: + void onpushButtonEchoSelectClicked(); + void onpushButtonImageSelectClicked(); + void onbtnaccepted(); + void onbtnrejected(); + + void oncheckboxTrigged(int); + void onpushButtonGridNetSelectClicked( ); + +private: + Ui::QSimulationBPImageMultiProductionClass* ui; +}; diff --git a/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.ui b/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.ui new file mode 100644 index 0000000..a3e110a --- /dev/null +++ b/Toolbox/SimulationSARTool/SARImage/QSimulationBPImageMultiProduction.ui @@ -0,0 +1,210 @@ + + + QSimulationBPImageMultiProductionClass + + + + 0 + 0 + 813 + 400 + + + + 浠跨湡鍥惧儚TimeBP鏂规硶 + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 30 + + + + 鍥炴尝鍦板潃锛 + + + + + + + + 0 + 30 + + + + D:\Programme\vs2022\RasterMergeTest\LAMPCAE_SCANE-all-scane\GF3_Simulation.xml + + + + + + + + 0 + 30 + + + + 閫夋嫨 + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 30 + + + + 鍥惧儚缃戞牸 + + + true + + + + + + + true + + + + 0 + 30 + + + + D:\Programme\vs2022\RasterMergeTest\simulationData\demdataset\demxyz.bin + + + + + + + true + + + + 0 + 30 + + + + 閫夋嫨 + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + 0 + 30 + + + + 浠跨湡鍥惧儚锛 + + + + + + + + 0 + 30 + + + + D:\Programme\vs2022\RasterMergeTest\LAMPCAE_SCANE-all-scane\BPImage\GF3BPImage + + + + + + + + 0 + 30 + + + + 閫夋嫨 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 0 + 30 + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + diff --git a/Toolbox/SimulationSARTool/SimulationSAR/QSimulationBPImage.ui b/Toolbox/SimulationSARTool/SimulationSAR/QSimulationBPImage.ui index 39d7fa4..79f3686 100644 --- a/Toolbox/SimulationSARTool/SimulationSAR/QSimulationBPImage.ui +++ b/Toolbox/SimulationSARTool/SimulationSAR/QSimulationBPImage.ui @@ -6,7 +6,7 @@ 0 0 - 995 + 813 400 diff --git a/Toolbox/SimulationSARTool/SimulationSARTool.cpp b/Toolbox/SimulationSARTool/SimulationSARTool.cpp index bf4d73d..a9b9d11 100644 --- a/Toolbox/SimulationSARTool/SimulationSARTool.cpp +++ b/Toolbox/SimulationSARTool/SimulationSARTool.cpp @@ -11,6 +11,7 @@ #include "ImagePlaneAtiInterpDialog.h" #include "QCreateInSARImagePlaneXYZRDialog.h" #include "QLookTableResampleFromWGS84ToRange.h" +#include "QSARSimulationComplexEchoDataDialog.h" SARSimlulationRFPCToolButton::SARSimlulationRFPCToolButton(QWidget* parent) @@ -73,7 +74,7 @@ void QSimulationSAROrbitModelToolButton::excute() void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWidget* toolbox) { - emit toolbox->addBoxToolItemSIGNAL(new SARSimlulationRFPCToolButton(toolbox)); + emit toolbox->addBoxToolItemSIGNAL(new SARSimlulationRFPCToolButton(toolbox)); // 300 emit toolbox->addBoxToolItemSIGNAL(new SARSimulationTBPImageToolButton(toolbox)); emit toolbox->addBoxToolItemSIGNAL(new QSimulationSAROrbitModelToolButton(toolbox)); emit toolbox->addBoxToolItemSIGNAL(new LookTableComputerClassToolButton(toolbox)); @@ -85,6 +86,8 @@ void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWi emit toolbox->addBoxToolItemSIGNAL(new QCreateInSARImagePlaneXYZRToolButton(toolbox)); emit toolbox->addBoxToolItemSIGNAL(new QInSARBPImageToolButton(toolbox)); emit toolbox->addBoxToolItemSIGNAL(new QLookTableResampleFromWGS84ToRangeToolButton(toolbox)); + emit toolbox->addBoxToolItemSIGNAL(new QSARSimulationComplexEchoDataDialogToolButton(toolbox)); + } LookTableComputerClassToolButton::LookTableComputerClassToolButton(QWidget* parent) @@ -236,3 +239,25 @@ void QLookTableResampleFromWGS84ToRangeToolButton::run() QLookTableResampleFromWGS84ToRange* dialog = new QLookTableResampleFromWGS84ToRange; dialog->show(); } + + + + +//QSARSimulationComplexEchoDataDialog + +QSARSimulationComplexEchoDataDialogToolButton::QSARSimulationComplexEchoDataDialogToolButton(QWidget* parent) +{ + this->toolPath = QVector(0); + this->toolPath.push_back(u8"成像工具库"); + this->toolname = QString(u8"回波反采样工具(测试)"); +} + +QSARSimulationComplexEchoDataDialogToolButton::~QSARSimulationComplexEchoDataDialogToolButton() +{ +} + +void QSARSimulationComplexEchoDataDialogToolButton::run() +{ + QSARSimulationComplexEchoDataDialog* dialog = new QSARSimulationComplexEchoDataDialog; + dialog->show(); +} diff --git a/Toolbox/SimulationSARTool/SimulationSARTool.h b/Toolbox/SimulationSARTool/SimulationSARTool.h index 93725cc..1a6212c 100644 --- a/Toolbox/SimulationSARTool/SimulationSARTool.h +++ b/Toolbox/SimulationSARTool/SimulationSARTool.h @@ -13,6 +13,10 @@ namespace LAMPMainWidget { class ToolBoxWidget; +extern "C" SIMULATIONSARTOOL_EXPORT void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWidget* toolbox); + + + class SIMULATIONSARTOOL_EXPORT SARSimlulationRFPCToolButton : public QToolAbstract { Q_OBJECT @@ -150,6 +154,15 @@ public: }; -extern "C" SIMULATIONSARTOOL_EXPORT void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWidget* toolbox); + +class SIMULATIONSARTOOL_EXPORT QSARSimulationComplexEchoDataDialogToolButton : public QToolAbstract { + Q_OBJECT +public: + QSARSimulationComplexEchoDataDialogToolButton(QWidget* parent = nullptr); + ~QSARSimulationComplexEchoDataDialogToolButton(); +public: + virtual void run() override; + +}; diff --git a/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj b/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj index 34f3688..b228c81 100644 --- a/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj +++ b/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj @@ -220,6 +220,7 @@ + @@ -252,6 +253,7 @@ + @@ -292,6 +294,7 @@ + diff --git a/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj.filters b/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj.filters index 1516d1b..e53b120 100644 --- a/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj.filters +++ b/Toolbox/SimulationSARTool/SimulationSARTool.vcxproj.filters @@ -154,6 +154,9 @@ SARImage + + SARImage + @@ -201,6 +204,9 @@ SARImage + + SARImage + @@ -251,6 +257,9 @@ SARImage + + SARImage +