#include "loadscenedatathread.h" #include "Scene/UGLayer3D.h" #include "geofileparser.h" #include "qfileinfo.h" #include "qthread.h" #include "translator.h" #include #include LoadSceneDataThread::LoadSceneDataThread(QObject *parent) : QObject{parent} { } void LoadSceneDataThread::working() { qDebug() << "当前子线程对象的地址: " << QThread::currentThread(); GeoFileParser geoFileParser; UGString ugImageLayerName; UGLayer3D* pLayer = NULL; UGString ugTerrianLayerName; UGTerrainAccessor* tm = NULL; int imageTotalCount = imagePathList.size(); int terrianTotalCount = terrianPathList.size(); int i = 0; int j = 0; //导入影像数据 if(!imagePathList.isEmpty()) { // ShowProgressDialog* progressDlg = new ShowProgressDialog(); // connect(this,&MainWindow::closedProgressDialog,progressDlg,&ShowProgressDialog::closedProgressDialog); // QThreadPool::globalInstance()->start(progressDlg); // qDebug()<<"*****************activeThreadCount:"<activeThreadCount(); // QTimer* timer = new QTimer(); // connect(timer, &QTimer::timeout, progressDlg, &ShowProgressDialog::updateProgressDialog); // timer->start(100);//开启一个没有终点的定时器 for(i;isetLabelText("影像文件(" + QString::number(i+1) + "/" + QString::number(imagePathList.size()) + ")导入中..."); QFileInfo fileInfo(imagePathList.at(i)); UGString imageName = Translator::QStr2UGStr(fileInfo.baseName()); QElapsedTimer mstimer; mstimer.start(); bool ss = geoFileParser.importTiffData(pDataSource,imageName,imagePathList.at(i),true); float time = (double)mstimer.nsecsElapsed() / (double)1000000; qDebug() << "ImageTime:::" << time/1000; if(ss) { ugImageLayerName = imageName + _U("@") + datasourceName; // 数据集名@数据源名,图层默认命名格式,也是通过该格式的名称获得关联数据 // m_mutex.lock(); pLayer = pSceneControl->GetSceneEditWnd()->GetScene3D()->m_Layers.AddLayer(ugImageLayerName); // m_mutex.unlock(); } // emit sendTaskName(Translator::UGStr2QStr(imageName)); emit sendTaskFinishedCount(i+1,imageTotalCount,j,terrianTotalCount); } // emit closedProgressDialog(); } //导入地形数据 if(!terrianPathList.isEmpty()) { for(j;jsetLabelText("地形文件(" + QString::number(j+1) + "/" + QString::number(terrianPathList.size()) + ")导入中..."); QFileInfo fileInfo(terrianPathList.at(j)); UGString terrianName = Translator::QStr2UGStr(fileInfo.baseName()); QElapsedTimer mstimer; mstimer.start(); bool ss = geoFileParser.importTiffData(pDataSource,terrianName,terrianPathList.at(j),true, UGImportParams::ModeGrid,UGDataCodec::encLZW); float time = (double)mstimer.nsecsElapsed() / (double)1000000; qDebug() << "TerrianTime:::" << time/1000; if(ss) { qDebug()<<"*********************LoadTerrainSuccessed"; ugTerrianLayerName = terrianName + _U("@") + datasourceName; // 数据集名@数据源名,图层默认命名格式,也是通过该格式的名称获得关联数据 tm = pSceneControl->GetSceneEditWnd()->GetScene3D()->m_TerrainLayer3Ds.AddTerrainLayer(ugTerrianLayerName,terrianName); } // emit sendTaskName(Translator::UGStr2QStr(terrianName)); // emit sendTaskName(terrianPathList.at(j)); qDebug()<<"*********************TerrainFinished"; emit sendTaskFinishedCount(i,imageTotalCount,j+1,terrianTotalCount); } } // if(!imagePathList.isEmpty()) // { // pSceneControl->ViewToLayer(pLayer); // } pLayer = NULL; tm = NULL; pSceneControl = NULL; pDataSource = NULL; // emit taskFinish(); } void LoadSceneDataThread::receiveFileList(SceneControl *pSceneControl, UGDataSource *pDataSource, QStringList imagePathList, QStringList terrianPathList) { this->pSceneControl = pSceneControl; this->pDataSource = pDataSource; this->imagePathList = imagePathList; this->terrianPathList = terrianPathList; this->datasourceName = pDataSource->GetAlias(); working(); }