GDAL库进度信息编写示例
来源:互联网 发布:sql count用法详解 编辑:程序博客网 时间:2024/05/30 23:02
GDAL进度信息编写
GDAL库中的算法以及读写数据的时候一般都会提供两个与进度信息相关的参数,下面分别进行描述:
- GDALProgressFunc pfnProgress
- void * pProgressArg
GDALProgressFunc pfnProgress
GDALProgressFunc pfnProgress这个是一个回调函数,GDALProgressFunc的定义如下所示:
typedef int (CPL_STDCALL *GDALProgressFunc)(double dfComplete, const char *pszMessage, void *pProgressArg);
该回调函数接口中共声明了三个参数,分别是:
- dfComplete 处理进度信息,0~1之间的数字
- pszMessage 处理进度消息,用于显示在进度控件上
- pProgressArg 回调函数参数
void * pProgressArg
pProgressArg直接会作为回调函数的第三个参数,传入回调函数中。关于这个函数参数的使用请参考我之前的相关博客
一个简单的进度示例
/*** @brief 示例函数* @param pszSrcFile 输入数据* @param pszDstFie 输出数据* @param pfnProgress 进度信息回调函数* @param pProgressArg 进度信息回调函数参数* @return 返回值,处理成功返回CE_None*/CPLErr TestFunction(const char* pszSrcFile, const char* pszDstFile, GDALProgressFunc pfnProgress = NULL, void * pProgressArg = NULL) { // 如果没有指定进度条回调函数,使用GDAL库中的默认回调函数 if(pfnProgress == NULL) pfnProgress = GDALDummyProgress; // 设置进度信息以及初值为0,可同时设置处理信息 if(!pfnProgress(0.0, "Start ....", pProgressArg)) { CPLError(CE_Failure, CPLE_UserInterrupt, "User terminated"); return CE_Failure; } // 一个示例的循环,里面描述了更新进度信息 for (int i=0; i<100; i++) { //do something if(!pfnProgress((i+1.0)/100, "Processing ....", pProgressArg)) { CPLError(CE_Failure, CPLE_UserInterrupt, "User terminated"); return CE_Failure; } } // 处理完成,将进度信息更新为1,可同时设置处理信息 if(!pfnProgress(1.0, "End ....", pProgressArg)) { CPLError(CE_Failure, CPLErnterrupt, "User terminated"); retun CE_Failure; } return CE_None;}
在调用时与调用GDAL其他的进度信息一致,下面是一个简单的调用示例:
void main(){ //进度条回调函数,这里使用GDAL自带的一个控制台进度函数 GDALProgressFunc pfnProgress = GDALTermProgress; //进度条回调函数参数,该参数需与回调函数配合使用 void * pProgressArg = NULL; const char *pszSrcFile = "input.tif"; const char *pszDstFile = "Output.tif"; CPLErr Err = TestFunction(pszSrcFile, pszDstFile, pfnProgress, pProgressArg); return;}
0 0
- GDAL库进度信息编写示例
- C#调用GDAL算法进度信息传递
- C#下GDAL算法进度显示
- GDAL插值使用示例
- GDAL常用函数及示例
- 使用GDAL进行栅格数据读取示例
- GDAL\OGR读取数据示例 C#版本
- GDAL工具使用示例(一)
- GDAL工具使用示例(一)
- GDAL\OGR读取数据示例 C#版本
- Gdal 2.1.0 示例工具的二次开发
- 我的J2ME编写进度
- gdal 生成影像的统计信息(ComputeStatistics)
- GDAL库的编译
- 自定义编译gdal库
- c++ 编译GDAL库
- 编译GDAL静态库
- GDAL库初学
- 百度地图为啥定位不了
- 支持向量机—线性可分支持向量机与硬间隔最大化
- 第四周项目3①-小学生算术能力测试系统
- CF_6D_LizardsAndBasements_2
- STM32 串口采用DMA方式收发
- GDAL库进度信息编写示例
- 分享一个linux指令手册指南
- zoj3228(AC自动机进阶)
- shell教程三:基本语法
- SecureCRT远程连接到虚拟机Ubuntu Linux上
- Spring 3.x中三种Bean配置方式比较
- 关键帧的边缘检测
- 共享内存 与 mmap
- Spring--AOP的实现