做网站有什么专业术语,网络热词排行榜,设计官网论坛,百度推广怎么运营C/C使用GDAL库编程窍门之——通用可移植性库#xff08;Common Portability Library, CPL#xff09;
CPL简介
GDAL全称地理空间数据抽象库#xff08;Geospatial Data Abstraction Library#xff09;#xff0c;是一个强大的地理栅格空间数据转换库#xff0c;支持众…C/C使用GDAL库编程窍门之——通用可移植性库Common Portability Library, CPL
CPL简介
GDAL全称地理空间数据抽象库Geospatial Data Abstraction Library是一个强大的地理栅格空间数据转换库支持众多的栅格和矢量的地理空间数据格式跨平台性好、提供C/C、python等语言的API简单易用。 CPL(Common Portability Library)即通用可移植性库是GDAL的组件之一用于增强GDAL的可移植性。用户只需调用其中的函数而不需要针对不同平台去更改代码例如创建文件夹、获取当前程序运行路径等。
常用功能总结
在代码中包含了gdal_priv.h和gdal_utils.h之后即可使用CPL大多数的函数
CPLSetConfigOption(GDAL_FILENAME_IS_UTF8, NO);/// 默认文件名字符串的编码是UTF-8不支持中文路径设置此行代码后支持中文路径
char strDir[256];
CPLGetExecPath(strDir, 256);// 获取当前exe全路径
const char* path CPLGetPath(strDir);// 从输入字符串提取文件夹路径xxx\yyy.tif提取为xxx
string strInputImg;
cinstrInputImg;
const char* pExtIn CPLGetExtension(strInputImg.c_str());// 获取文件扩展名不带..
char strOutDir[256];
strcpy(strOutDir, E:/new_dir/new_subdir);
VSIMkdirRecursive(strOutDir, 0755);// 递归地创建文件夹即如果父文件夹不存在亦创建之。第二个参数是文件夹访问权限默认给0755即可。
VSIStatBufL stat;
if (VSIStatExL(strInputImg, stat, VSI_STAT_EXISTS_FLAG)-1)//VSIStatExL函数用于获取文件的状态信息包括修改时间、文件大小等获取失败时也即文件不存在返回-1
{return;//如果文件不存在CPLprintf(File %s not exist., strInputImg.c_str());// CPLprintf用法完全同printf
}
string strOutputImg;
cinstrOutputImg;
CPLCopyFile(strOutputImg, strInputImg);//拷贝文件 注意第一个参数是新文件路径第二个参数是原始文件路径
更多接口也可查看GDAL库的include路径下以cpl_开头的多个头文件如cpl_conv.h,cpl_port.h,cpl_vsi.h等。 更多用法请参考中文文档。 PS: GDAL的功能过于强大很多东西都需要从文档学习、自己大胆尝试、问Google。