GDAL ライブラリを使用した C/C++ プログラミングのヒント - Common Portability Library (CPL)

GDAL ライブラリを使用した C/C++ プログラミングのヒント - Common Portability Library (CPL)

CPL の概要

GDAL は、Geospatial Data Abstraction Library (地理空間データ抽象化ライブラリ) の略です。これは、多数のラスターおよびベクター地理空間データ形式をサポートする強力な地理ラスター空間データ変換ライブラリです。優れたクロスプラットフォーム パフォーマンスを備え、C/C++、Python API を提供します。他の言語でも使いやすいです。
CPL (Common Portability Library)、つまり汎用ポータビリティ ライブラリは、GDAL のコンポーネントの 1 つであり、GDAL のポータビリティを強化するために使用されます。ユーザーは、フォルダーの作成、現在のプログラム実行パスの取得など、さまざまなプラットフォーム用のコードを変更せずに関数を呼び出すだけで済みます。

共通機能のまとめ

gdal_priv.hCPL のほとんどの関数は、コードにと を含めた後に使用できますgdal_utils.h

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 ライブラリのインクルード パスの下にある、 など、cpl_始まる複数のヘッダー ファイルを表示することもできます。詳しい使用方法については、中国語のドキュメントを参照してください。cpl_conv.hcpl_port.hcpl_vsi.h

PS: GDAL の機能は強力すぎるため、多くのことをドキュメントから学び、自分で試しGoogle に尋ねる必要があります。

おすすめ

転載: blog.csdn.net/qq_42679415/article/details/132650615