首页 / 浏览问题 / 组件GIS / 问题详情
iObjects C++导入数据时如何显示进度条呢?
26EXP 2023年04月19日

在iobjects C++ 11i中,使用UGDataExchange导入DEM的tif文件时,加载时间有点长,请问可以设置那些参数以加快加载速度呢?如何显示进度条呢,设置了tiffImportParams.SetShowProgress(true);也没用,是需要配合其他使用吗?

    UGDataExchange exchange = UGDataExchange();
    int issu = exchange.AttachDataSource(pDataSource);
    //导入参数设置
    UGGTiffImportParams tiffImportParams;
    tiffImportParams.SetDestDTName(datasetName);  //设置目标数据集名称
    tiffImportParams.SetFilePathName(Translator::QStr2UGStr(importPath));
    tiffImportParams.SetDestCoordSys(UGPrjCoordSys (4326));  //设置坐标系
    tiffImportParams.SetBuildPyramid(true); //开启影像金字塔
    tiffImportParams.SetImportMode(UGImportParams::ModeGrid);//设置导入数据类型
    tiffImportParams.SetDatasetEncType(UGDataCodec::encLZW);
    tiffImportParams.SetShowProgress(true);
    tiffImportParams.SetOverWrite(true); //设置强制覆盖
    tiffImportParams.SetEnableMultiThread(true); //开启多线程

    UGint ii = tiffImportParams.GetFileType();
    int ss = UGExchangeParamsManager::IsValidImportParams(ii, tiffImportParams);
    UGint issucceed = exchange.Import(tiffImportParams);

1个回答

这个需要上层去实现,要结合上层的进度条控件,控件使用用法之类的网上有很多的资源,可以参考一下

https://blog.csdn.net/Mr_robot_strange/article/details/104851063

c++组件数据导入进度,需要自行去调用进度条的回调函数:具体的回调函数在:Toolkit/UGProgress.h中

static void SetProgressProc(ProgressProc pProgressFun, void* pParam=NULL);    

4,620EXP 2023年04月19日

你好,还是没太懂怎么使用进度条。像UGDataExchange::Import(const UGImportParams &importParams)直接就导入文件了,也没有看到有什么回调函数返回中间的过程信息,只导入一个文件的话,我也不知道文件导入的进度,这怎么和UGProgress关联起来呢?

你可以看一下Toolkit/UGProgress.h中的讲解,前面有介绍,c++组件会比较麻烦一些,不像.net或者是java,已经封装好了,直接调用
...