RasterProcessTool/LAMPSARProcessProgram/ToolBox/BaseToolbox/QClipRasterByRowCols.cpp

111 lines
3.1 KiB
C++

#include "QClipRasterByRowCols.h"
#include <QFileDialog>
#include <QMessageBox>
#include "ImageOperatorBase.h"
QClipRasterByRowCols::QClipRasterByRowCols(QWidget *parent)
: QDialog(parent)
{
ui.setupUi(this);
connect(this->ui.accepBtn, SIGNAL(accepted()), this, SLOT(accepBtnaccept()));
connect(this->ui.accepBtn, SIGNAL(rejected()), this, SLOT(accepBtnreject()));
connect(this->ui.InRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onInRasterBtnClicked(bool)));
connect(this->ui.OutRasterBtn, SIGNAL(clicked(bool)), this, SLOT(onOutRasterBtnClicked(bool)));
}
QClipRasterByRowCols::~QClipRasterByRowCols()
{
}
void QClipRasterByRowCols::accepBtnaccept()
{
QString inRasterPath = this->ui.lineEdit_InRaster->text();
QString outRasterPath = this->ui.lineEdit_OutRaster->text();
long minRow = this->ui.lineEdit_topRow->value();
long maxRow = this->ui.lineEdit_bottomRow->value();
long minCol = this->ui.lineEdit_LeftCol->value();
long maxCol = this->ui.lineEdit_RightCol->value();
if (maxCol < minCol || maxRow < minRow) {
QMessageBox::warning(nullptr, u8"警告", u8"裁剪行列范围填写错误");
return;
}
else {}
// 图像裁剪
this->ui.progressBar->setValue(10);
clipRaster(inRasterPath, outRasterPath, minRow, maxRow, minCol, maxCol);
this->ui.progressBar->setValue(100);
QMessageBox::information(nullptr, u8"信息", u8"影像处理完成");
this->ui.progressBar->setValue(0);
}
void QClipRasterByRowCols::accepBtnreject()
{
this->close();
}
void QClipRasterByRowCols::onInRasterBtnClicked(bool)
{
QString fileName = QFileDialog::getOpenFileName(
this, // 父窗口
tr(u8"选择xml文件"), // 标题
QString(), // 默认路径
tr(u8"tiff Files (*.tiff);;tif Files (*.tif);;dat Files (*.dat);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
QString message = "选择的文件有:\n";
this->ui.lineEdit_InRaster->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件"));
}
if (!fileName.isEmpty()) {
gdalImage inRaster(this->ui.lineEdit_InRaster->text());
this->ui.lineEdit_topRow->setMinimum(0);
this->ui.lineEdit_bottomRow->setMinimum(0);
this->ui.lineEdit_LeftCol->setMinimum(0);
this->ui.lineEdit_RightCol->setMinimum(0);
this->ui.lineEdit_topRow->setMaximum(inRaster.height);
this->ui.lineEdit_bottomRow->setMaximum(inRaster.height);
this->ui.lineEdit_LeftCol->setMaximum(inRaster.width);
this->ui.lineEdit_RightCol->setMaximum(inRaster.width);
}
}
void QClipRasterByRowCols::onOutRasterBtnClicked(bool)
{
QString fileName = QFileDialog::getSaveFileName(
this, // 父窗口
tr(u8"选择xml文件"), // 标题
QString(), // 默认路径
tr(u8"dat Files (*.dat);;bin Files (*.bin);;All Files (*)") // 文件过滤器
);
// 如果用户选择了文件
if (!fileName.isEmpty()) {
QString message = "选择的文件有:\n";
this->ui.lineEdit_OutRaster->setText(fileName);
}
else {
QMessageBox::information(this, tr(u8"没有选择文件"), tr(u8"没有选择任何文件。"));
}
}