473 lines
14 KiB
C++
473 lines
14 KiB
C++
|
|
#include "ManualLabelToolWidget.h"
|
|||
|
|
#include <qdockwidget.h>
|
|||
|
|
#include <qgslayertreeview.h>
|
|||
|
|
#include <qgslayertreemodel.h>
|
|||
|
|
#include <qgslayertreemapcanvasbridge.h>
|
|||
|
|
#include <qlabel.h>
|
|||
|
|
#include <qstatusbar.h>
|
|||
|
|
#include <QMenuBar>
|
|||
|
|
#include <QToolBar>
|
|||
|
|
#include <qgsmapcanvas.h>
|
|||
|
|
#include <qgsrasterlayer.h>
|
|||
|
|
#include <qgsmaptoolpan.h>
|
|||
|
|
#include <qgsunittypes.h>
|
|||
|
|
#include <QString>
|
|||
|
|
#include <qgis.h>
|
|||
|
|
#include <QgsMapSettings.h>
|
|||
|
|
#include <QFile>
|
|||
|
|
#include <QFileDialog>
|
|||
|
|
#include <QDialog>
|
|||
|
|
#include <QApplication>
|
|||
|
|
#include <QScreen>
|
|||
|
|
#include <QString>
|
|||
|
|
#include <qfileinfo.h>
|
|||
|
|
#include <qdir.h>
|
|||
|
|
#include <qgsmaplayer.h>
|
|||
|
|
#include <qgsproject.h>
|
|||
|
|
#include "WidgetSettingClass.h"
|
|||
|
|
#include "LAMPDataManagerDialog.h"
|
|||
|
|
#include <qgsproviderregistry.h>
|
|||
|
|
#include <qgsapplication.h>
|
|||
|
|
//#include <qgslayertreeview.h>
|
|||
|
|
#include <qgslayertree.h>
|
|||
|
|
#include <qgslayerpropertiesdialog.h>
|
|||
|
|
#include "QBatchStaticEchoDialog.h"
|
|||
|
|
#include "QImageCursorWidget.h"
|
|||
|
|
#include <QToolButton.h>
|
|||
|
|
#include <QgsMapToolZoom.h>
|
|||
|
|
#include <QgsMapToolIdentify.h>
|
|||
|
|
#include "CustomCursorTool.h"
|
|||
|
|
#include "qgslayerpropertiesdialog.h"
|
|||
|
|
#include "windLayerTreeViewMenuProvider.h"
|
|||
|
|
//QgsUnitTypes
|
|||
|
|
|
|||
|
|
|
|||
|
|
ManualLabelToolWidget::ManualLabelToolWidget(QWidget* parent)
|
|||
|
|
: QMainWindow(parent)
|
|||
|
|
{
|
|||
|
|
this->init_UI();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ManualLabelToolWidget::~ManualLabelToolWidget()
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::init_UI()
|
|||
|
|
{
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC>С
|
|||
|
|
{
|
|||
|
|
this->setWindowTitle(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ļ<EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2A3A8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
QRect availableGeometry = QApplication::primaryScreen()->availableGeometry();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4>ڴ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>80%
|
|||
|
|
int width = availableGeometry.width() * 0.8;
|
|||
|
|
int height = availableGeometry.height() * 0.8;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>С
|
|||
|
|
resize(width, height);
|
|||
|
|
|
|||
|
|
// <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>
|
|||
|
|
move(availableGeometry.center() - rect().center());
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
{
|
|||
|
|
datamanagerDialog = new LampDataManager(this);
|
|||
|
|
onshowDatamanagerActionTriggered();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//<2F><>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
// 1. inti map canvas
|
|||
|
|
this->map_canvas = new QgsMapCanvas(this);
|
|||
|
|
this->setCentralWidget((this->map_canvas));
|
|||
|
|
|
|||
|
|
// 2. map tool pan
|
|||
|
|
this->map_tool_pan = new QgsMapToolPan(this->map_canvas);
|
|||
|
|
this->map_canvas->setMapTool(this->map_tool_pan);
|
|||
|
|
// <20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD>
|
|||
|
|
map_canvas->setCachingEnabled(true); // <20><><EFBFBD>û<EFBFBD><C3BB>棬<EFBFBD><E6A3AC><EFBFBD><EFBFBD>ʵ<EFBFBD>ַֿ<D6B7><D6BF><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>Ĺؼ<C4B9>[citation:6][citation:8]
|
|||
|
|
map_canvas->setParallelRenderingEnabled(true); // <20><><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>Ⱦ<EFBFBD><C8BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[citation:6]
|
|||
|
|
// 3. map layer manager
|
|||
|
|
this->map_layerTreeView = new QgsLayerTreeView(this);
|
|||
|
|
// 4. create map model
|
|||
|
|
this->map_layerModel = new QgsLayerTreeModel(QgsProject::instance()->layerTreeRoot(), this);
|
|||
|
|
this->map_layerModel->setFlag(QgsLayerTreeModel::AllowNodeRename); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
this->map_layerModel->setFlag(QgsLayerTreeModel::AllowNodeReorder); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˳<EFBFBD><CBB3>
|
|||
|
|
this->map_layerModel->setFlag(QgsLayerTreeModel::AllowNodeChangeVisibility); // <20><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ɼ<EFBFBD><C9BC><EFBFBD>
|
|||
|
|
this->map_layerModel->setFlag(QgsLayerTreeModel::ShowLegendAsTree); // <20><><EFBFBD><EFBFBD>״ͼ<D7B4><CDBC>ʾͼ<CABE><CDBC>
|
|||
|
|
this->map_layerModel->setAutoCollapseLegendNodes(10); // <20>Զ<EFBFBD><D4B6>۵<EFBFBD><DBB5><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
this->map_layerTreeView->setModel(this->map_layerModel);
|
|||
|
|
this->map_layer_Bridge = new QgsLayerTreeMapCanvasBridge(QgsProject::instance()->layerTreeRoot(), this->map_canvas, this);
|
|||
|
|
this->layerTreeDock = new QDockWidget(tr(u8"ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);
|
|||
|
|
this->layerTreeDock->setWidget(this->map_layerTreeView);
|
|||
|
|
layerTreeDock->setWidget(this->map_layerTreeView);
|
|||
|
|
layerTreeDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
|||
|
|
this->addDockWidget(Qt::LeftDockWidgetArea, this->layerTreeDock);
|
|||
|
|
|
|||
|
|
windLayerTreeViewMenuProvider* mLayerTreeViewMenuProvider = new windLayerTreeViewMenuProvider(map_layerTreeView, map_canvas, this);
|
|||
|
|
|
|||
|
|
this->map_layerTreeView->setMenuProvider(mLayerTreeViewMenuProvider);
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
appStatusBar = this->statusBar(); // <20><>ȡ<EFBFBD><EFBFBD>״̬<D7B4><CCAC>
|
|||
|
|
|
|||
|
|
scaleLabel = new QLabel(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>"));
|
|||
|
|
CoordinaryTextLabel = new QLabel(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>"));
|
|||
|
|
PointXYLabel = new QLabel(tr(u8"<EFBFBD><EFBFBD><EFBFBD>꣺"));
|
|||
|
|
UnitLabel = new QLabel(tr(u8"<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>"));
|
|||
|
|
appStatusBar->addPermanentWidget(PointXYLabel); //
|
|||
|
|
appStatusBar->addPermanentWidget(scaleLabel); //
|
|||
|
|
appStatusBar->addPermanentWidget(UnitLabel); //
|
|||
|
|
appStatusBar->addPermanentWidget(CoordinaryTextLabel); //
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ӱ<EFBFBD><D3B1><EFBFBD><EFBFBD>߱仯<DFB1>ź<EFBFBD>
|
|||
|
|
connect(map_canvas, SIGNAL(scaleChanged(double)), this, SLOT(updateScaleLabel(double)));
|
|||
|
|
connect(map_canvas, SIGNAL(xyCoordinates(const QgsPointXY&)), this, SLOT(updateCoordinateLabel(const QgsPointXY&)));
|
|||
|
|
connect(map_canvas, SIGNAL(extentsChanged()), this, SLOT(onMapExtentsChanged()));
|
|||
|
|
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>˵<EFBFBD><CBB5><EFBFBD>
|
|||
|
|
{
|
|||
|
|
menubar = this->menuBar();
|
|||
|
|
|
|||
|
|
// <20>ڲ˵<DAB2><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"<22>ļ<EFBFBD>"<22><>"<22>༭"<22>˵<EFBFBD>
|
|||
|
|
fileMenu = menubar->addMenu(tr(u8"<EFBFBD>ļ<EFBFBD>"));
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><>"<22>ļ<EFBFBD>"<22>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӳ˵<D3B2><CBB5>QAction<6F><6E>
|
|||
|
|
newAction = fileMenu->addAction(tr(u8"<EFBFBD>½<EFBFBD>"));
|
|||
|
|
fileMenu->addSeparator(); // <20><><EFBFBD>ӷָ<D3B7><D6B8><EFBFBD>[1,5](@ref)
|
|||
|
|
openMenu = fileMenu->addMenu(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
|
|||
|
|
openRasterFolderAction = openMenu->addAction(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
openRasterAction = openMenu->addAction(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>"));
|
|||
|
|
openSLCRasterAction = openMenu->addAction(tr(u8"SLCӰ<EFBFBD><EFBFBD>"));
|
|||
|
|
openLampWindDataAction = openMenu->addAction(tr(u8"<EFBFBD>糡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
|
|||
|
|
// <20>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
QObject::connect(this->openRasterAction, SIGNAL(triggered()), this, SLOT(openRaster()));
|
|||
|
|
QObject::connect(this->openLampWindDataAction, SIGNAL(triggered()), this->datamanagerDialog, SLOT(openLampWindDataFile()));
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
editMenu = menubar->addMenu(tr(u8"<EFBFBD>༭"));
|
|||
|
|
SARWindInversionMenu = menubar->addMenu(tr(u8"SAR<EFBFBD>糡<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
SARImageImportAction = SARWindInversionMenu->addAction(tr(u8"SAR<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
SARInversionAtion = SARWindInversionMenu->addAction(tr(u8"SAR<EFBFBD>糡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
SARInversionResulutShowAtion = SARWindInversionMenu->addAction(tr(u8"<EFBFBD>糡<EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD>չʾ"));
|
|||
|
|
|
|||
|
|
//SARWindAysysMenu = SARWindInversionMenu->addMenu(tr(u8"<22>糡<EFBFBD><E7B3A1><EFBFBD><EFBFBD>"));
|
|||
|
|
//SARImageAysysAction = SARWindAysysMenu->addAction(tr(u8"Ŀ<><C4BF>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>"));
|
|||
|
|
QObject::connect(SARInversionAtion, SIGNAL(triggered()), this, SLOT(onshowSARInversionAtionTriggered()));
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ͼ<><EFBFBD>
|
|||
|
|
{
|
|||
|
|
datatoolbar = new QToolBar(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
showDatamanagerAction = datatoolbar->addAction(tr(u8"<EFBFBD><EFBFBD><EFBFBD>ݹ<EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
|
|||
|
|
|
|||
|
|
mapToolActionGroup = new QActionGroup(this);
|
|||
|
|
ZoomInToolbtn = new QAction(tr(u8"<EFBFBD>Ŵ<EFBFBD>"));
|
|||
|
|
ZoomInToolbtn->setCheckable(true);
|
|||
|
|
mapToolActionGroup->addAction(ZoomInToolbtn);
|
|||
|
|
ZoomOutToolbtn = new QAction(tr(u8"<EFBFBD><EFBFBD>С"));
|
|||
|
|
ZoomOutToolbtn->setCheckable(true);
|
|||
|
|
mapToolActionGroup->addAction(ZoomOutToolbtn);
|
|||
|
|
MapPanToolbtn = new QAction(tr(u8"ƽ<EFBFBD><EFBFBD>"));
|
|||
|
|
MapPanToolbtn->setCheckable(true);
|
|||
|
|
MapPanToolbtn->setChecked(true);
|
|||
|
|
mapToolActionGroup->addAction(MapPanToolbtn);
|
|||
|
|
IdentifyToolbtn = new QAction(tr(u8"ʶ<EFBFBD><EFBFBD>"));
|
|||
|
|
IdentifyToolbtn->setCheckable(true);
|
|||
|
|
mapToolActionGroup->addAction(IdentifyToolbtn);
|
|||
|
|
cursorAction = new QAction(tr(u8"<EFBFBD>α<EFBFBD>"));
|
|||
|
|
cursorAction->setCheckable(true);
|
|||
|
|
mapToolActionGroup->addAction(cursorAction);
|
|||
|
|
|
|||
|
|
datatoolbar->addAction(ZoomInToolbtn);
|
|||
|
|
datatoolbar->addAction(ZoomOutToolbtn);
|
|||
|
|
datatoolbar->addAction(MapPanToolbtn);
|
|||
|
|
datatoolbar->addAction(cursorAction);
|
|||
|
|
|
|||
|
|
|
|||
|
|
m_mapToolPan = new QgsMapToolPan(this->map_canvas);
|
|||
|
|
m_mapToolZoomIn = new QgsMapToolZoom(this->map_canvas, false);
|
|||
|
|
m_mapToolZoomOut = new QgsMapToolZoom(this->map_canvas, true);
|
|||
|
|
m_mapIdentifyToolPan = new QgsMapToolIdentify(this->map_canvas);
|
|||
|
|
m_CustomCursorTool = new CustomCursorTool(this->map_canvas);
|
|||
|
|
ZoomInToolbtn->setText(u8"<EFBFBD>Ŵ<EFBFBD>");
|
|||
|
|
ZoomOutToolbtn->setText(u8"<EFBFBD><EFBFBD>С");
|
|||
|
|
MapPanToolbtn->setText(u8"ƽ<EFBFBD><EFBFBD>");
|
|||
|
|
IdentifyToolbtn->setText(u8"ʶ<EFBFBD><EFBFBD>");
|
|||
|
|
connect(mapToolActionGroup, &QActionGroup::triggered, this, &ManualLabelToolWidget::onMapToolActionTriggered);
|
|||
|
|
|
|||
|
|
//QObject::connect(cursorAction, SIGNAL(triggered()), this, SLOT(onCursorImageToolTriggered()));
|
|||
|
|
QObject::connect(showDatamanagerAction, SIGNAL(triggered()), this, SLOT(onshowDatamanagerActionTriggered()));
|
|||
|
|
|
|||
|
|
|
|||
|
|
this->addToolBar(Qt::TopToolBarArea, datatoolbar);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// AI<41><49>ע<EFBFBD><D7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
AiLabelToolBar = new QToolBar(tr(u8"AI<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"), this);
|
|||
|
|
this->addToolBar(Qt::LeftToolBarArea, AiLabelToolBar);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
{
|
|||
|
|
QString qgisPrefixPath = WidgetSettingClass::instance().getExeDirectionApplicationPath();
|
|||
|
|
// 3. <20><>ʽ<EFBFBD><CABD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD>Ŀ¼<C4BF><C2BC>ȷ<EFBFBD><C8B7>QGIS<49><53><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>̬<EFBFBD>ṩ<EFBFBD><E1B9A9>
|
|||
|
|
QString pluginPath = qgisPrefixPath + "/plugins";
|
|||
|
|
QgsApplication::setPluginPath(pluginPath);
|
|||
|
|
|
|||
|
|
// 4. <20><><EFBFBD><EFBFBD>QGIS<49>Ĺ<EFBFBD><C4B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ¼<C4BF><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>proj.db<64>ȣ<EFBFBD>
|
|||
|
|
QString pkgDataPath = qgisPrefixPath + "/share/qgis";
|
|||
|
|
QgsApplication::setPkgDataPath(pkgDataPath);
|
|||
|
|
QgsApplication::initQgis();
|
|||
|
|
|
|||
|
|
QStringList providers = QgsProviderRegistry::instance()->providerList();
|
|||
|
|
qDebug() << u8"<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD><EFBFBD>:" << providers;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD> "mesh_memory" <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD> "mdal" <20>ṩ<EFBFBD><E1B9A9><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if (providers.contains("mesh_memory")) {
|
|||
|
|
qDebug() << u8"'mesh_memory' <20>ṩ<EFBFBD>߿<EFBFBD><DFBF>á<EFBFBD>";
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
qDebug() << u8"<EFBFBD><EFBFBD><EFBFBD>棺δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>ߡ<EFBFBD>";
|
|||
|
|
}
|
|||
|
|
if (providers.contains("mdal")) {
|
|||
|
|
qDebug() << u8"'mdal' <20>ṩ<EFBFBD>߿<EFBFBD><DFBF>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܰ<EFBFBD><DCB0><EFBFBD><EFBFBD><EFBFBD> 'mdal' <20>С<EFBFBD>";
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
qDebug() << u8"<EFBFBD><EFBFBD><EFBFBD>棺δ<EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṩ<EFBFBD>ߡ<EFBFBD>";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::open()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::openRaster()
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
|
|||
|
|
QString lastFileDialogPath = WidgetSettingClass::instance().getLastFileDialogPath();
|
|||
|
|
if (lastFileDialogPath.isEmpty()) {
|
|||
|
|
lastFileDialogPath = ".";
|
|||
|
|
}
|
|||
|
|
// <20><><EFBFBD><EFBFBD>Ӱ<EFBFBD><D3B0>
|
|||
|
|
// 2. ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
QString lampwindPath = QFileDialog::getOpenFileName(
|
|||
|
|
this,
|
|||
|
|
tr(u8"<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>"),
|
|||
|
|
lastFileDialogPath,
|
|||
|
|
tr(LAMPWINDDATAFILEFILTER)
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
QString filename = QFileInfo(lampwindPath).fileName();
|
|||
|
|
|
|||
|
|
QgsRasterLayer* rasterLayer = new QgsRasterLayer(lampwindPath, filename);
|
|||
|
|
if (!rasterLayer->isValid()) {
|
|||
|
|
qDebug() << "Failed to load raster layer!";
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
this->AddLayers(rasterLayer);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::updateCoordinateLabel(const QgsPointXY& point)
|
|||
|
|
{
|
|||
|
|
QString coordText = QString(tr(u8"<EFBFBD><EFBFBD><EFBFBD>꣺X:%1 Y:%2")).arg(QString::number(point.x(), 'f', 2)).arg(QString::number(point.y(), 'f', 2));
|
|||
|
|
PointXYLabel->setText(coordText);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::onMapExtentsChanged()
|
|||
|
|
{
|
|||
|
|
QgsRectangle currentExtent = map_canvas->extent();
|
|||
|
|
|
|||
|
|
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7>Ϣ<EFBFBD>ˣ<EFBFBD><CBA3><EFBFBD><EFBFBD>磺
|
|||
|
|
//// 1. <20><>ӡ<EFBFBD><D3A1>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD>
|
|||
|
|
//qDebug() << "<22>·<EFBFBD>Χ - Xmin:" << currentExtent.xMinimum()
|
|||
|
|
// << "Ymin:" << currentExtent.yMinimum()
|
|||
|
|
// << "Xmax:" << currentExtent.xMaximum()
|
|||
|
|
// << "Ymax:" << currentExtent.yMaximum();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::AddLayers(QgsMapLayer* layer)
|
|||
|
|
{
|
|||
|
|
if (!layer || !layer->isValid()) {
|
|||
|
|
qDebug() << "<EFBFBD><EFBFBD>Чͼ<EFBFBD>㣬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>";
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (QgsProject::instance()->mapLayers().size() == 0) {
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч<EFBFBD><D0A7>ӵ<EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ
|
|||
|
|
if (layer && layer->isValid() && layer->crs().isValid()) {
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ͼ<EFBFBD><CDBC>һ<EFBFBD><D2BB>
|
|||
|
|
map_canvas->mapSettings().setDestinationCrs(layer->crs());
|
|||
|
|
// <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Χ<EFBFBD><CEA7><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD>õij<C3B5>ʼ<EFBFBD><CABC>ͼ
|
|||
|
|
map_canvas->setExtent(layer->extent());
|
|||
|
|
// ˢ<>»<EFBFBD><C2BB><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч
|
|||
|
|
map_canvas->refresh();
|
|||
|
|
qDebug() << "ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" << layer->crs().description();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
QgsProject::instance()->addMapLayer(layer);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::updateScaleLabel(double scale)
|
|||
|
|
{
|
|||
|
|
QString scaleText = QString(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>1:%1")).arg(QString::number(scale, 'f', 0));
|
|||
|
|
scaleLabel->setText(scaleText);
|
|||
|
|
|
|||
|
|
Qgis::DistanceUnit unit = map_canvas->mapUnits();
|
|||
|
|
QString unitString;
|
|||
|
|
if (unit == Qgis::DistanceUnit::Meters) {
|
|||
|
|
unitString = tr(u8"<EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
else if (unit == Qgis::DistanceUnit::Degrees) {
|
|||
|
|
unitString = tr(u8"<EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
else if (unit == Qgis::DistanceUnit::Feet) {
|
|||
|
|
unitString = tr(u8"Ӣ<EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
unitString = tr(u8"δ֪");
|
|||
|
|
}
|
|||
|
|
UnitLabel->setText(QString(tr(u8"<EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>%1")).arg(unitString));
|
|||
|
|
|
|||
|
|
QgsCoordinateReferenceSystem currentCrs = map_canvas->mapSettings().destinationCrs();
|
|||
|
|
|
|||
|
|
QString description = currentCrs.description();
|
|||
|
|
QString authid = currentCrs.authid();
|
|||
|
|
|
|||
|
|
if (description == "") {
|
|||
|
|
CoordinaryTextLabel->setText(QString(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>δ֪")));
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
CoordinaryTextLabel->setText(QString(tr(u8"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>%1")).arg(description));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::onshowDatamanagerActionTriggered()
|
|||
|
|
{
|
|||
|
|
if (nullptr == datamanagerDialog) {
|
|||
|
|
datamanagerDialog = new LampDataManager(this);
|
|||
|
|
}
|
|||
|
|
else {}
|
|||
|
|
|
|||
|
|
QRect parentGeometry = this->geometry();
|
|||
|
|
QSize dialogSize = datamanagerDialog->size();
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
int x = parentGeometry.x() + (parentGeometry.width() - dialogSize.width()) / 2;
|
|||
|
|
int y = parentGeometry.y() + (parentGeometry.height() - dialogSize.height()) / 2;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>öԻ<C3B6><D4BB><EFBFBD>λ<EFBFBD><CEBB>
|
|||
|
|
datamanagerDialog->move(x, y);
|
|||
|
|
datamanagerDialog->show();
|
|||
|
|
datamanagerDialog->raise(); // ȷ<><C8B7><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0>
|
|||
|
|
datamanagerDialog->activateWindow(); // <20><><EFBFBD><EFBFBD><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::setupLayerTreeContextMenu()
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ˵<C4B2>
|
|||
|
|
this->map_layerTreeView->setMenuProvider(this->map_layerTreeView->menuProvider());
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>˵<EFBFBD>
|
|||
|
|
this->map_layerTreeView->setContextMenuPolicy(Qt::CustomContextMenu);
|
|||
|
|
connect(this->map_layerTreeView, &QgsLayerTreeView::customContextMenuRequested,
|
|||
|
|
this, &ManualLabelToolWidget::onLayerTreeContextMenu);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::onLayerTreeContextMenu(const QPoint& pos)
|
|||
|
|
{
|
|||
|
|
QModelIndex index = map_layerTreeView->indexAt(pos);
|
|||
|
|
if (!index.isValid())
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
QgsLayerTreeNode* node = map_layerTreeView->layerTreeModel()->index2node(index);
|
|||
|
|
if (!node)
|
|||
|
|
return;
|
|||
|
|
|
|||
|
|
QMenu* menu = new QMenu(this);
|
|||
|
|
|
|||
|
|
if (QgsLayerTree::isLayer(node))
|
|||
|
|
{
|
|||
|
|
QgsMapLayer* layer = QgsLayerTree::toLayer(node)->layer();
|
|||
|
|
if (layer)
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1>˵<EFBFBD><CBB5><EFBFBD>
|
|||
|
|
QAction* attributeTableAction = menu->addAction(tr("<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD>"));
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>Բ˵<D4B2><CBB5><EFBFBD>
|
|||
|
|
QAction* layerPropertiesAction = menu->addAction(tr("ͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
menu->exec(map_layerTreeView->mapToGlobal(pos));
|
|||
|
|
delete menu;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::onshowSARInversionAtionTriggered()
|
|||
|
|
{
|
|||
|
|
QBatchStaticEchoDialog* d = new QBatchStaticEchoDialog(this);
|
|||
|
|
d->show();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void ManualLabelToolWidget::onMapToolActionTriggered(QAction* action)
|
|||
|
|
{
|
|||
|
|
if (action == ZoomInToolbtn) {
|
|||
|
|
this->map_canvas->setMapTool(m_mapToolZoomIn);
|
|||
|
|
}
|
|||
|
|
else if (action == ZoomOutToolbtn) {
|
|||
|
|
this->map_canvas->setMapTool(m_mapToolZoomOut);
|
|||
|
|
}
|
|||
|
|
else if (action == MapPanToolbtn) {
|
|||
|
|
this->map_canvas->setMapTool(m_mapToolPan);
|
|||
|
|
}
|
|||
|
|
else if (action == IdentifyToolbtn) {
|
|||
|
|
this->map_canvas->setMapTool(m_mapIdentifyToolPan);
|
|||
|
|
}
|
|||
|
|
else if (action == cursorAction) {
|
|||
|
|
this->map_canvas->setMapTool(m_CustomCursorTool);
|
|||
|
|
if (!cursorInfoDialog)
|
|||
|
|
{
|
|||
|
|
cursorInfoDialog = new QImageCursorWidget(this); // <20>α<EFBFBD><CEB1><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
QObject::connect(m_CustomCursorTool, &CustomCursorTool::identifyResultChange, cursorInfoDialog, &QImageCursorWidget::showCursor, Qt::ConnectionType::AutoConnection);
|
|||
|
|
cursorInfoDialog->show();
|
|||
|
|
map_canvas->setCursor(Qt::CrossCursor);
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
map_canvas->setCursor(Qt::CursorShape::ArrowCursor);
|
|||
|
|
}
|
|||
|
|
}
|