当前位置: 首页 > news >正文

C/C++使用GDAL库编程窍门之——通用可移植性库(Common Portability Library, CPL)

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.hgdal_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;
cin>>strInputImg;
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;
cin>>strOutputImg;
CPLCopyFile(strOutputImg, strInputImg);//拷贝文件 注意第一个参数是新文件路径,第二个参数是原始文件路径

更多接口,也可查看GDAL库的include路径下以cpl_开头的多个头文件,如cpl_conv.h,cpl_port.h,cpl_vsi.h等。
更多用法,请参考中文文档。

PS: GDAL的功能过于强大,很多东西都需要从文档学习、自己大胆尝试问Google

http://www.lryc.cn/news/157998.html

相关文章:

  • Linux container_of() 宏定义
  • 详解python中的序列类型---列表list
  • Unity 引擎中国版 “团结引擎” 发布
  • MindsDB为许多不支持内置机器学习的数据库带来了机器学习功能
  • 世界级黑客丨电脑犯罪界的汉尼拔
  • 【Matlab】Matlab实现数据的动态显示方法
  • 【Android】SDK安装及配置
  • ETCD详解
  • React笔记(五)hook
  • vue3中使用viewerjs实现图片预览效果
  • Erlang:Linux下使用observer、debugger进行调试
  • 2023 年高教社杯全国大学生数学建模竞赛-E 题 黄河水沙监测数据分析详解+思路+Python代码
  • 一生一芯10——verilator v5.008环境搭建
  • 信息化发展27
  • leetcode做题笔记129. 求根节点到叶节点数字之和
  • 任务管理系统所需功能概述
  • 一文学会K8s集群搭建
  • Win10右键 nvidia rtx desktop manager 怎么删除(最新)
  • MySQL加密的几种常见方式
  • Android文字识别-阿里云OCR调用
  • 度矩阵、邻接矩阵
  • 20个经典巧妙电路合集
  • 2023全国大学生数学建模ABCDE选题建议,思路模型,小白要怎么选?难度怎么样
  • 【力扣每日一题】2023.9.5 从两个数字数组里生成最小数字
  • 跳出Lambda表达式forEach()循环解决思路
  • 2023年度AWS SAP直冲云霄训练营学习分享
  • 2023高教社杯 国赛数学建模E题思路 - 黄河水沙监测数据分析
  • 06_快速入门案例实战之电商网站商品管理:集群健康检查,文档CRUD
  • 机车整备场数字孪生 | 图扑智慧铁路
  • Fair|Fur —— Geometry Nodes